一、考试题型说明来自图片2顶部选择题15道2分/道共30分理论题4道8分/道共32分程序题3道8分/道共24分综合体1道14分分3小题6分4分4分 二、Hadoop 基础与理论知识点来自图片21. Hadoop 集群负责资源的管理和调度组件。2. HDFS 操作使用hadoop fs命令查看文件查看文件名称、文件的大小等。3. Hive 中数据的存储格式了解每一种存储格式的适合存储什么样的类型的数据。4. Linux 中权限的设置如使用命令给目录或文件赋予可读可写的权限。5. SSH 生成免密登录使用的密钥6. MapReduce 过程中map阶段、reducer阶段采用技术 shuffle 的作用是什么7. HDFS 包括 Namenode、Datanode 各自负责什么8. 在 Hive 中如何使用 HQL 语句进行分区按省和市9. YARN 资源管理器和 HDFS WEB UI 分别对应的端口号以及主要的功能是什么10. HDFS 编程方式上传文件到 FS对文件进行操作的相应 API特别核心的 API的名称11. 知道如何去查看 NameNode 和 DataNode 的状态12. Hive 中掌握如何将本地文件上传到 HDFS 服务器上也掌握如何从 HDFS 服务器上将文件下载到本地13. Map 阶段的输出就是 Reducer 阶段的输入了解 Reducer 阶段输入数据类型是什么14. HDFS 具有很高的可靠性的原因因为采用了副本策略配置策略每台数据节点应该部署多少个副本才是合理的15. 在 Hive 中区分内部表和外部表删除外部表和删除内部表元数据和实际数据会不同处理的策略。 三、HIVE分区表与MR流程来自图片11、HIVE 分区表的设计了解 Hive 分区表的优缺点会编写 HiveQL(HQL)语句加载本地HDFS数据到某一个表分区表中课堂派上的作业再去复习一下会向表中插入数据2、HDFS 读写流程写入数据的流程和读取数据的流程。读写的过程其实是和 namenode 以及 datanode 进行交互的一个过程。涉及到数据块的传输的过程pipeline 的机制如何知道写入数据是成功的3、MapReduce 原理和 Shuffle 机制给定输入数据 student teacher student may can can may完成单词统计Map 阶段的完整输出是什么会描述 Shuffle 机制对 Map 阶段的处理过程掌握 Reduce 阶段的输出结果。4、Hadoop 集群规划和部署给定一个集群的场景部署一个微型的 Hadoop 集群1台 master2台 slave掌握如何将此集群配置起来了解需要哪些配置文件重要配置项需要掌握跑起来掌握从格式化到正常启动的整个过程的操作掌握关键的操作命令集群启动完成后如何验证集群工作是正常的。 四、Hive表的操作与Java/Shell编程来自图片3与部分图片1底部1、Hive 表的操作(1) 新建表Hive 表分为1、内部表管理表默认新建的表就是内部表。新建表的时候未指定位置默认存放在/user/hive/warehouse也可以通过关键字LOCATION指定具体的存放位置。2、外部表新建外部表的时候要带上关键字CREATE EXTERNAL TABLE。特点删除外部表只会删除元数据不会删除数据本身。3、分区表分区其实理解为分类实际使用字段作为分类的名称。注意作为分区用的字段不能和定义表中的字段重复分区用的字段不能在定义表中。建表格式示例一般新建的表以内部表比较常用。提供学生表字段名称、字段类型、字段描述备注。如2302201002,张三,21,数科系,(2023-9-15)新建表的时候使用告知表结构信息。建表的时候字段分隔符一般用逗号空格一般要指定存储格式常见的存储格式textfile等。(2) 往表中插入数据一条或多条数据(2302201002,张三,21,数科系,(2023-9-15))注具体表字段根据实际建表结构为准(3) 查询查找2023年及以后注册的所有学生信息。从注册ID从小到大排序倒序。(4) 统计统计每个系的学生人数计算学生的平均年龄。2、要求编写 Java 程序调用 HDFS API 实现文件的上传或下载从 HDFS 复制到本地或从本地复制到 HDFS(1) 将 Hadoop 的包导入会罗列主要的3-5个包名称访问文件系统必须掌握FileSystem的实例化产生一个对象。(2) 掌握在程序代码中设置 HDFS 文件的源路径HDFS 中的目录和目标路径本地目录。(3) 掌握实现文件下载的核心代码(4) 掌握异常处理机制try { 可能存在错误的代码 } catch (Exception ex) { 获取具体错误信息 }3、学会使用 Shell 批量的操作(1) 掌握在 HDFS 创建文件、创建目录具体的操作命令及参数参考P101常用 HDFS 命令。学会使用判断目录如果不存在再创建。(2) 掌握使用 HDFS 的命令操作将本地目录下的文件上传到 HDFS 指定的目录。不仅掌握单个文件上传掌握按文件操作。例如将某个目录下所有以./demo开头的文件全部拷贝到指定的 HDFS 目录中。(3) 掌握递归的目录及子目录学会通过递归的方式遍历某个指定的目录查看该目录下的所有文件夹或子文件。(4) Linux 中的 Shell 脚本特别是一些比较常用的掌握。例如统计一下在/aaa/bbb目录下面的文件的数量。例题 2HiveQL (HQL) 查询操作1. 现有 Hive 表结构字段名类型描述stu_noINT学生学号stu_nameSTRING学生姓名stu_deptSTRING学生所在的系名称stu_ageINT学生年龄stu_dateSTRING学生注册日期2. 操作任务与解答(1) 创建内部表要求创建表student指定字段分隔符为逗号存储格式为 TEXTFILE。(2) 插入记录要求向表中插入三条记录。数据(2221001,张三,信息工程系,18,2022-9-12)(2321002,李四,数科系,19,2023-9-15)(2321002,王五,信息工程系,20,2023-9-17)(3) 条件查询与排序要求查询 2023 年及以后注册的学生信息按照学生年龄大小从大到小排序。(4) 分组统计要求统计每个系的学生人数和平均年龄。例 3HDFS 读写流程题目要求描述 HDFS 客户端写入一个 500M 文件的完整流程。1. 客户端与 NameNode 的交互过程客户端首先向 NameNode 请求创建文件。NameNode 检查文件是否存在、检查权限是否合法。检查通过后NameNode 返回可以写入的 DataNode 列表。2. 数据块 (Block) 的传输过程和流水线复制 (Pipeline) 机制客户端将文件切分为 Block默认 128M注图中示例为12M通常默认为128M。第一个 DataNode 与第二个建立连接第二个和第三个建立连接形成 Pipeline 机制。数据实质是以 packet 包为单位在 Pipeline 中传递各节点边接收边转发。3. 写入完成后 NameNode 的确认机制每个 DataNode 写完数据块之后向 NameNode 发送块报告。客户端收到 DataNode 的确认之后向 NameNode 确认写入完成。NameNode 更新元数据记录文件与数据库的映射关系。