大数据技术复习划分知识点
第一部分:Hadoop 基础与 HDFS (分布式文件系统)
1. HDFS 核心架构
-
NameNode (NN):管理文件系统的命名空间(Metadata,元数据),维护着整个集群的文件目录树。
-
DataNode (DN):负责实际存储数据块(Block),执行数据块的读写操作。
-
Secondary NameNode (2NN):(易错点) 它不是 NameNode 的热备,主要用于辅助 NameNode 合并编辑日志(FsImage),减轻 NN 的压力。
2. HDFS 读写流程
-
写数据流程:客户端请求上传 -> NN 校验权限并分配块ID及 DataNode 列表 -> 客户端切分数据 -> 建立 Pipeline 管道 -> 逐级返回确认 -> 完成写入。
-
读数据流程:客户端请求读取 -> NN 返回文件所在的 DataNode 列表(按距离排序) -> 客户端就近读取 Block -> 拼接成完整文件。
3. HDFS 常用 Shell 命令
-
创建多级目录:
hadoop fs -mkdir -p /path/to/dir -
上传/下载:
-
本地 -> HDFS:
hadoop fs -put localfile /hdfs/path -
HDFS -> 本地:
hadoop fs -get /hdfs/path localfile
-
-
查看/复制/删除:
-
查看:
hadoop fs -cat /hdfs/path -
本地复制到 HDFS:
hadoop fs -cp localfile /hdfs/path -
删除:
hadoop fs -rm -r /hdfs/path
-
第二部分:MapReduce (分布式计算框架)
1. MapReduce 核心流程
-
Input (输入):切片 (Split),将大文件切分成若干个小块。
-
Map (映射):读取切片数据,转换成
<Key, Value>键值对。 -
Shuffle (洗牌):核心阶段。包括分区 (Partition)、排序 (Sort)、溢写 (Spill)、归并 (Merge)。
-
考点:Shuffle 的作用是确保相同 Key 的数据被发送到同一个 Reduce 任务中。
-
-
Reduce (归约):对 Shuffle 过来的数据进行聚合计算。
-
Output (输出):将结果写入 HDFS。
2. 经典案例:WordCount
-
Map 阶段:输入
<行偏移量, 行内容>,输出<单词, 1>。 -
Reduce 阶段:输入
<单词, [1, 1, ...]>,输出<单词, 总数>。
3. MapReduce 编程规范
-
Mapper:继承
Mapper<KEYIN, VALUEIN, KEYOUT, VALUEOUT>,重写map()方法。 -
Reducer:继承
Reducer<KEYIN, VALUEIN, KEYOUT, VALUEOUT>,重写reduce()方法。 -
Driver (主程序):配置作业 (Job)、设置输入输出路径、指定 Mapper 和 Reducer 类等。
第三部分:Hive (数据仓库工具)
1. Hive 表的设计与分类
-
内部表 (Managed Table):
-
默认创建的表类型。
-
删除表时,元数据和 HDFS 上的数据都会被删除。
-
-
外部表 (External Table):
-
创建时通过
LOCATION指定数据存放路径。 -
删除表时,只删除元数据,不删除 HDFS 上的数据。(适合共享数据)
-
2. Hive 分区表 (Partition)
-
作用:减少全表扫描,提高查询效率。
-
静态分区:在插入数据时手动指定分区值(如
dt='2023-09-15')。 -
动态分区:让系统根据字段值自动创建分区(需设置
hive.exec.dynamic.partition=true)。
3. Hive SQL 高频语句
-
建表语法:包含
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'(指定分隔符)。 -
插入数据:
-
静态插入:
INSERT INTO TABLE table_name PARTITION (dt='2023-09-15') SELECT ... -
动态插入:
INSERT INTO TABLE table_name PARTITION (dt) SELECT ..., dt FROM source_table
-
-
查询排序:
-
ORDER BY:全局排序(只有一个 Reducer)。 -
SORT BY:区内排序(每个 Reducer 内部有序)。
-
4. Hive 调优与原理
-
Fetch Task:对于简单的
SELECT *或LIMIT查询,Hive 可以直接从文件读取数据,不走 MapReduce 任务,提升速度。 -
数据倾斜:通常发生在 Reduce 阶段,某些 Reducer 处理的数据量远大于其他 Reducer。
-
解决方法:调整随机分区键、增加 Reducer 数量、使用 MapJoin 代替 ReduceJoin。
-
第四部分:Linux 环境与异常处理
1. Linux 基础命令
-
查看进程:
jps(必须掌握:NameNode, DataNode, ResourceManager, NodeManager, Jps)。 -
文本编辑器:
vi/vim的基本使用(插入模式、保存退出)。 -
权限管理:
chmod修改文件权限。
2. Java API 异常处理
-
核心思想:程序代码中调用的命令,与直接从控制台输入的命令几乎是一样的。
-
常见异常:
FileNotFoundException,IOException。 -
捕获机制:
java
try { // 可能出错的代码 } catch (Exception e) { // 输出具体的错误信息 e.printStackTrace(); }
第五部分:高频填空题/简答题预测 (根据图片末尾整理)
-
检查 Hadoop 集群状态:
-
命令:
jps -
查看 Web UI:ResourceManager (8088), NameNode (50070/9870)。
-
-
HDFS 数据块大小:默认是 128MB (或 256MB,视版本而定)。
-
Hadoop 配置文件:
-
核心配置:
core-site.xml(指定 NameNode 地址),hdfs-site.xml(指定副本数等),mapred-site.xml(指定 MapReduce 框架),yarn-site.xml(指定资源管理器)。
-
-
YARN 架构:
-
ResourceManager (RM):全局资源管理。
-
NodeManager (NM):单个节点资源管理。
-
ApplicationMaster (AM):单个作业的资源协调和任务监控。
-
更多推荐
所有评论(0)