大数据技术课程总复习知识点
一、考试题型说明(来自图片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 更新元数据,记录文件与数据库的映射关系。
更多推荐
所有评论(0)