```html
欢迎来到 考acca 大数据面试指南 域名:www.kaoacca.cn

大数据核心组件面试全解析

深度解析 Hadoop 集群运维、HBase 二级索引设计、Flink 实时计算状态管理及背压处理等核心考点,助你突破技术瓶颈。

Hadoop 面试核心考点

① NameNode 高可用架构

在面试中,HA架构是必考题。需掌握 Active 与 Standby 状态的切换机制。重点在于 ZKFailoverController (ZKFC) 如何通过 Zookeeper 进行锁选举。同时,需理解 JournalNode 在同步 edits 日志中的作用,确保元数据的一致性。若面试官问及脑裂问题,需回答隔离机制(Fencing)的重要性。

② YARN 资源调度器详解

常见的调度器包括 FIFO、Capacity 和 Fair。面试常问如何配置多队列以支持不同业务线。例如,在 Capacity Scheduler 中,如何设置最大最小资源限制,以及如何防止大任务独占集群资源。理解 Container 的生命周期及资源请求策略(如 locality 感知)也是关键。

③ HDFS 小文件问题优化

小文件会消耗 NameNode 大量内存。解决方案包括:① 在写入时使用 HAR (Hadoop Archive) 打包;② 启用 SequenceFile 合并;③ 调整 Block Size;④ 使用 MapReduce 或 Spark 在写入前合并。需结合具体业务场景选择最优方案。

⚡ 网友热议:Hadoop 3.x 新特性

  • HDFS Erasure Coding (EC):纠删码技术,将存储冗余从2倍降低至1.5倍,显著提升存储利用率,但CPU开销增加。
  • Multi-NameNode:支持多个 NameNode 管理不同的命名空间,解决单 NameNode 元数据压力问题。
  • Rack Awareness 优化:更细粒度的机架感知策略,提升数据读写效率。

HBase 面试深度解析

1. HBase 读写流程

读流程:Client 先查 Zookeeper 获取 .META. 表位置,定位 RegionServer,若数据在 MemStore 则直接返回,否则从 BlockCache 或 HFile 读取。涉及 Bloom Filter (布隆过滤器) 加速查找。写流程:数据先写入 WAL (预写日志) 保证可靠性,再写入 MemStore,达到阈值后 Flush 为 HFile。需理解 Compaction (合并) 过程,特别是 Minor 与 Major Compaction 的区别。

2. 常见性能调优

面试常问如何避免 Region Split 导致的热点。策略包括:预分区 (Pre-splitting) 基于 RowKey 哈希或范围;RowKey 设计 增加随机前缀或盐值 (Salt) 打散数据;调整 BlockCache 大小;优化 Column Family 数量,避免过多 CF 导致资源碎片化。此外,Bulk Load 是海量数据导入的最佳实践,绕过 MapReduce 直接生成 HFile。

3. 二级索引实现方案

HBase 原生不支持二级索引。常见方案有:Phoenix:最流行的方案,将 SQL 编译为 MapReduce/Spark 任务,维护一张索引表,同步更新主表,适合读多写少场景;Coprocessor:在 RegionServer 端执行代码,实时更新索引,性能高但开发复杂;外部索引:如 Elasticsearch,通过双写保持同步,适合全文检索场景。

常见面试题对比表

特性 HBase 1.x HBase 2.x 面试关注点
存储引擎 仅 HFile 支持 HFile & RFile 格式兼容性
协处理器 Observer/Endpoint 增强 Endpoint 类型 服务端编程
预写日志 本地 WAL 支持 HDFS WAL 数据可靠性

大数据学习路线与面试准备

阶段一:基础夯实

掌握 Linux 基础、Java 高级编程、集合框架、JVM 调优。熟悉 MySQL 索引、事务及 SQL 优化。这是所有大数据组件的基石。

阶段二:Hadoop 生态

深入学习 HDFS 原理、MapReduce 编程模型、YARN 资源调度。掌握 Hive SQL 优化及 HBase 基础操作。理解分布式系统一致性理论 (CAP/BASE)。

阶段三:实时计算

精通 Flink 核心 API、State Backend、Checkpoint 机制。掌握 Kafka 高级特性。理解流批一体架构,能够设计高可用实时数仓。

阶段四:面试冲刺

刷面试题,总结项目难点。重点准备:数据倾斜处理、性能调优、故障排查。模拟面试,提升表达能力。关注行业新技术,如 Flink CDC、Iceberg 等。

高频面试问题解答

Q: HBase 为什么适合写多读少?

A: HBase 底层基于 HDFS,HDFS 设计为一次写入多次读取。HBase 写操作先入 WAL 和 MemStore,内存写入速度快。读操作需经过 BlockCache 和 HFile,若数据未加载到内存,需磁盘 IO,且 HFile 为列式存储,查询特定列效率高,但全表扫描效率低。因此,HBase 适合基于 RowKey 的点查或范围查,不适合复杂关联查询。

Q: Flink 如何保证 Exactly-Once?

A: 主要通过两个机制:① Checkpoint:基于 Chandy-Lamport 算法,定期保存状态快照,故障时从最近快照恢复;② 两阶段提交 (2PC):Sink 连接器实现 TwoPhaseCommitSinkFunction,预处理时写入临时事务,Checkpoint 成功后再提交事务,确保数据一致性。

Q: Hadoop NameNode 内存不足怎么办?

A: ① 增加 NameNode 内存;② 减少 HDFS 文件数量(合并小文件);③ 调整 fs.checkpoint.period 缩短编辑日志间隔;④ 升级硬件或使用 SSD 提升元数据 IO 性能。长期可考虑迁移至 Hadoop 3.x 支持 Multi-NameNode。

```
斌知网
蜀ICP备2026017620号-5