温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hadoop常见面试题有哪些

发布时间:2021-12-08 11:16:18 来源:亿速云 阅读:188 作者:小新 栏目:云计算
# 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拉取对应分区数据

8. 如何优化MapReduce性能?

  • Combiner:减少map到reduce的数据传输量
  • 压缩:设置mapreduce.map.output.compress=true
  • 合理设置reduce数:公式:0.95 * N * R(N为节点数,R为单节点容器数)

YARN面试题

9. YARN的基本架构包含哪些组件?

  • ResourceManager:全局资源调度
  • NodeManager:单节点资源管理
  • ApplicationMaster:单个应用的任务调度
  • Container:资源抽象(CPU+内存)

10. YARN的资源调度器有哪些类型?

调度器类型 特点
FIFO 先进先出,简单但资源利用率低
Capacity 队列划分固定资源,适合多租户环境
Fair 动态平衡资源,适合共享集群(CDH默认调度器)

Hadoop生态系统

11. 列举5个Hadoop生态组件及其作用

  1. Hive:数据仓库工具(SQL转MapReduce)
  2. HBase:分布式NoSQL数据库
  3. Spark:内存计算框架
  4. ZooKeeper:分布式协调服务
  5. Flume:日志收集系统

12. Hive内部表与外部表的区别?

对比项 内部表(Managed) 外部表(External)
数据生命周期 随表删除 仅删除元数据
存储位置 默认在hive.metastore.warehouse.dir 可指定任意HDFS路径
适用场景 临时中间表 原始数据表

Hadoop优化与调优

13. NameNode内存不足怎么处理?

  • 增加堆内存:修改hadoop-env.sh中的HADOOP_NAMENODE_OPTS
  • 启用联邦HDFS:多个NameNode分管不同命名空间
  • 优化元数据:定期清理无用文件

14. 数据倾斜的解决方案有哪些?

  • 预处理:对倾斜key加随机前缀
  • SQL优化skew join语法(Hive 0.10+)
  • 参数调整hive.optimize.skewjoin=true

Hadoop实战问题

15. 如何监控Hadoop集群?

  • 原生工具:HDFS Web UI(50070端口)、YARN Web UI(8088端口)
  • 第三方工具:Ambari、Cloudera Manager、Ganglia
  • 关键指标
    • HDFS剩余空间
    • 节点存活状态
    • MapReduce任务失败率

16. Hadoop集群添加新节点的步骤

  1. 在新节点安装相同版本的Hadoop
  2. 配置相同的core-site.xmlhdfs-site.xml
  3. 将节点加入slaves文件
  4. 在新增节点启动DataNode和NodeManager
  5. 执行hdfs balancer平衡数据

高级进阶问题

17. 解释HDFS的机架感知策略

  • 原理:通过脚本或自定义类识别节点所属机架
  • 副本放置策略
    1. 第一个副本:本地节点
    2. 第二个副本:同机架不同节点
    3. 第三个副本:不同机架节点
  • 优势:平衡网络带宽和容错能力

18. Hadoop 3.x的新特性

  • Erasure Coding:节省50%存储空间(替代3副本)
  • 多NameNode支持:增强高可用性
  • GPU调度:支持深度学习任务
  • 最低Java版本:JDK 8+

总结

本文覆盖了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)的特性差异

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI