一、考试题型说明(来自图片2顶部)
选择题:15道,2分/道,共30分
理论题:4道,8分/道,共32分
程序题:3道,8分/道,共24分
综合体:1道,14分(分3小题:6分,4分,4分)
📚 二、Hadoop 基础与理论知识点(来自图片2)
1. 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流程(来自图片1)
1、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台 master,2台 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目录下面的文件的数量。
例题 2:HiveQL (HQL) 查询操作
1. 现有 Hive 表结构
字段名 | 类型 | 描述 |
|---|---|---|
stu_no | INT | 学生学号 |
stu_name | STRING | 学生姓名 |
stu_dept | STRING | 学生所在的系名称 |
stu_age | INT | 学生年龄 |
stu_date | STRING | 学生注册日期 |
2. 操作任务与解答
(1) 创建内部表
要求:创建表
student,指定字段分隔符为逗号,存储格式为 TEXTFILE。
(2) 插入记录
要求:向表中插入三条记录。
数据:
(2221001,'张三','信息工程系',18,'2022-9-12')(2321002,'李四','数科系',19,'2023-9-15')(2321002,'王五','信息工程系',20,'2023-9-17')
(3) 条件查询与排序
要求:查询 2023 年及以后注册的学生信息,按照学生年龄大小从大到小排序。
(4) 分组统计
要求:统计每个系的学生人数和平均年龄。
例 3:HDFS 读写流程
题目要求:描述 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 更新元数据,记录文件与数据库的映射关系。