hadoop经典相关面试题以及答案
Hadoop面试核心知识点摘要(150字) HDFS核心组件包括NameNode(元数据管理)和DataNode(数据存储)。MapReduce执行流程分为输入分片、Map处理、Shuffle排序和Reduce聚合四个阶段。数据倾斜可通过Combiner预聚合、自定义Partitioner或随机前缀打散Key解决。YARN通过ResourceManager全局调度资源,NodeManager监控节
Hadoop经典面试题及解析
1. HDFS架构核心组件
问题:NameNode和DataNode的作用是什么?
解析:
- NameNode:存储元数据(文件目录树、块位置映射),管理文件系统命名空间,处理客户端请求
- DataNode:存储实际数据块,定期向NameNode发送心跳和块报告
- Secondary NameNode:辅助合并fsimage和edits文件(非热备节点)
2. MapReduce执行流程
问题:描述WordCount程序的执行过程
解析:
// Mapper阶段
map(String key, String value):
for word in value.split():
emitIntermediate(word, "1")
// Reducer阶段
reduce(String key, Iterator values):
int sum = 0;
while(values.hasNext()) sum += parseInt(values.next());
emit(key, sum)
过程分解:
- 输入分片(Split)
- Map任务处理生成键值对
- Shuffle阶段排序分组
- Reduce任务聚合结果
3. 数据倾斜解决方案
问题:如何处理MapReduce中的数据倾斜?
方法:
- 预处理数据采样(Combine抽样检测热点Key)
- 自定义Partitioner将热点Key分散到不同Reducer
- 使用随机前缀打散Key(如:KaTeX parse error: Expected 'EOF', got '#' at position 32: …iginal\_key + "#̲" + random(3))
- 开启Combiner预聚合
4. HDFS读写流程
问题:描述文件写入HDFS的过程
流程:
- 客户端向NameNode申请写入
- NameNode返回DataNode列表(含副本存储位置)
- 客户端建立管道传输数据块
- DataNode完成副本复制后返回确认
5. YARN架构原理
问题:YARN如何实现资源管理?
组件:
- ResourceManager:全局资源调度(含Scheduler和ApplicationsManager)
- NodeManager:单节点资源监控与容器管理
- ApplicationMaster:单个应用的任务协调
资源分配公式:
total_container=cluster_memorycontainer_memory×cluster_vcorescontainer_vcores total\_container = \frac{cluster\_memory}{container\_memory} \times \frac{cluster\_vcores}{container\_vcores} total_container=container_memorycluster_memory×container_vcorescluster_vcores
6. 小文件问题处理
问题:HDFS存储小文件有什么影响?如何优化?
解决方案:
- 使用Har归档文件(Hadoop Archive)
- 合并小文件为SequenceFile
- 调整HDFS块大小参数(dfs.blocksize)
- 使用CombineFileInputFormat
7. 容错机制
问题:Task失败后如何恢复?
机制:
- TaskTracker定期发送心跳
- 若Task失败超过4次(可配置),任务标记为失败
- ApplicationMaster重新调度任务到其他节点
- 已完成的Map任务结果会被保留
8. 推测执行原理
问题:什么是推测执行(Speculative Execution)?
原理:
当检测到某个Task比同阶段其他Task慢时(通过进度百分比比较),启动备份任务并行执行,最终取先完成的结果。判断公式:
progress_rate=current_progress−last_progresstime_diff progress\_rate = \frac{current\_progress - last\_progress}{time\_diff} progress_rate=time_diffcurrent_progress−last_progress
当某Task速率低于平均速率的0.20.20.2倍时触发推测执行。
9. Hadoop 1.x与2.x差异
对比:
| 特性 | Hadoop 1.x | Hadoop 2.x |
|---|---|---|
| 资源管理 | JobTracker统一管理 | YARN分层架构 |
| 扩展性 | 最大4000节点 | 支持10000+节点 |
| 高可用 | NameNode单点故障 | NameNode HA(双主热备) |
10. 适用场景分析
问题:Hadoop适合处理哪些类型的数据?
典型场景:
- 离线批处理(日志分析、ETL)
- 海量数据存储(PB级)
- 非结构化数据处理(文本、图像)
不适用场景: - 低延迟实时计算
- 频繁更新的OLTP系统
- 强事务一致性需求场景
提示:理解底层设计原理比死记配置参数更重要,面试时建议结合项目经验说明具体问题的解决过程。
更多推荐

所有评论(0)