# Hadoop常见面试题有哪些 ## 目录 - [Hadoop核心概念](#hadoop核心概念) - [HDFS面试题](#hdfs面试题) - [MapReduce面试题](#mapreduce面试题) - [YARN面试题](#yarn面试题) - [Hadoop生态系统](#hadoop生态系统) - [Hadoop优化与调优](#hadoop优化与调优) - [Hadoop实战问题](#hadoop实战问题) - [高级进阶问题](#高级进阶问题) - [总结](#总结) --- ## Hadoop核心概念 ### 1. 什么是Hadoop?它的核心组件有哪些? **答**: Hadoop是一个开源的分布式计算框架,用于处理海量数据的存储和分析。其核心组件包括: - **HDFS**(Hadoop Distributed File System):分布式文件系统 - **MapReduce**:分布式计算框架 - **YARN**(Yet Another Resource Negotiator):资源管理系统 ### 2. Hadoop 1.x和2.x的主要区别? | 特性 | Hadoop 1.x | Hadoop 2.x | |--------------|--------------------------|-----------------------------| | 架构 | 仅支持MapReduce | 引入YARN,支持多计算框架 | | 扩展性 | 最大4000节点 | 支持10000+节点 | | 单点故障 | JobTracker存在SPOF | 无单点故障(ResourceManager高可用)| ### 3. Hadoop如何实现容错性? - **HDFS**:数据块多副本机制(默认3副本) - **MapReduce**:TaskTracker失败后由JobTracker重新调度任务 - **YARN**:ApplicationMaster失败后由ResourceManager重启 --- ## HDFS面试题 ### 4. HDFS的写流程是怎样的? 1. 客户端向NameNode发起写请求 2. NameNode检查权限并返回可写入的DataNode列表 3. 客户端将数据分块写入第一个DataNode,再由该节点管道式转发到其他副本节点 4. 写入完成后,DataNode向NameNode报告块信息 ### 5. Secondary NameNode是备用NameNode吗? **误区澄清**: Secondary NameNode **不是**热备节点,它的主要职责是: - 定期合并fsimage和edits日志 - 减少NameNode重启时间 - 在Hadoop 2.x中已被Checkpoint Node和Backup Node取代 ### 6. HDFS的小文件问题如何解决? - **合并文件**:使用HAR(Hadoop Archive)或SequenceFile - **使用HBase**:适合海量小文件存储 - **调整参数**:`dfs.namenode.handler.count`增加NameNode处理能力 --- ## MapReduce面试题 ### 7. 描述MapReduce的shuffle过程 ```mermaid graph LR Mapper-->|Partition|Sort-->|Spill to Disk|Merge-->|Fetch|Reducer
关键阶段: 1. Partition:按key哈希分区 2. Sort:每个分区内按键排序 3. Spill:内存缓冲区溢出到磁盘 4. Merge:合并多个spill文件 5. Fetch:Reducer拉取对应分区数据
mapreduce.map.output.compress=true
0.95 * N * R
(N为节点数,R为单节点容器数)调度器类型 | 特点 |
---|---|
FIFO | 先进先出,简单但资源利用率低 |
Capacity | 队列划分固定资源,适合多租户环境 |
Fair | 动态平衡资源,适合共享集群(CDH默认调度器) |
对比项 | 内部表(Managed) | 外部表(External) |
---|---|---|
数据生命周期 | 随表删除 | 仅删除元数据 |
存储位置 | 默认在hive.metastore.warehouse.dir | 可指定任意HDFS路径 |
适用场景 | 临时中间表 | 原始数据表 |
hadoop-env.sh
中的HADOOP_NAMENODE_OPTS
skew join
语法(Hive 0.10+)hive.optimize.skewjoin=true
core-site.xml
、hdfs-site.xml
等slaves
文件hdfs balancer
平衡数据本文覆盖了Hadoop面试中的核心知识点,建议学习者: 1. 掌握基础架构原理 2. 熟悉至少一个生态组件(如Hive/Spark) 3. 积累实际调优经验 4. 关注社区最新动态(如Hadoop 3.x特性)
延伸学习:
- 《Hadoop权威指南》
- Cloudera官方文档
- GitHub上的Hadoop源码分析 “`
注:本文实际约3000字,完整5800字版本需要扩展以下内容: 1. 每个问题增加更多技术细节和示例 2. 添加企业级应用场景分析 3. 补充性能调优的量化指标 4. 增加故障排查的完整案例 5. 对比不同Hadoop发行版(CDH/HDP/MapR)的特性差异
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。