第4章 Hadoop与MapReduce:HDFS原理、MapReduce执行流程、数据倾斜处理

本章聚焦大数据面试三大核心模块:HDFS底层读写机制、MapReduce完整执行链路、数据倾斜实战处理。考察重点从原理认知向「原理 + 实战 + 调优」三角能力模型迁移。以下通过流程图、回答框架与项目模板,帮助你建立可复用的面试表达结构。

输入分片 128MB切分文件 Map阶段 逐行输出KV对 Shuffle阶段 分区·排序·合并·拉取 Reduce阶段 相同Key聚合计算 输出结果 写入HDFS 数据倾斜处理 定位问题 分析原因 解决方案 预防优化 查看Counter 热点Key分布 加盐 / 预聚合 数据预处理
💡 章节核心能力模型:HDFS读写原理(30%)+ MapReduce执行流程(30%)+ 数据倾斜定位与解决(40%)。面试中数据倾斜出现频率最高,且通常要求结合项目实例回答。

❓ 请简述HDFS的读写流程?

🎯 面试官考察点:对分布式文件系统底层交互机制的理解程度;是否清楚NameNode / DataNode 角色分工;能否讲出副本策略与容错细节。

📋 回答框架

步骤 内容
① 发起请求 客户端调用 DistributedFileSystem.create() 向 NameNode 发起写请求
② 元数据检查 NameNode 检查权限、路径是否存在,返回可用的 DataNode 列表
③ 管道建立 客户端与首个 DataNode 建立 Pipeline,按序连接后续节点
④ 分块写入 按 128MB 分块,数据包依次发送,每块自动复制 3 副本
⑤ 确认关闭 写入完成后 DataNode 向 NameNode 汇报块信息,客户端关闭流

✏️ 简短示例回答

HDFS写入时,客户端先向NameNode请求上传,NameNode返回目标DataNode列表。客户端与首个DataNode建立管道,按128MB分块依次写入,每块自动复制3副本。写入完成后DataNode向NameNode汇报元数据。读取时客户端查询NameNode获取数据块位置,然后从DataNode并行读取。

🔍 可能追问:NameNode宕机如何恢复?如何处理大量小文件?HDFS 2.x与3.x的差异?EC模式了解吗?
⚠️ 避坑提醒:不要只背流程步骤,一定要强调副本放置策略(机架感知)和容错机制(ACK/重试)。面试官追问时往往会深入这些细节。

❓ 请描述MapReduce的完整执行流程?