Hadoop生态系统核心技术指南
原理剖析 · 开发实践 · 面试要点 · 架构设计
HDFS 分布式文件系统
NameNode 管理元数据(文件目录、块位置),DataNode 存储实际数据块,Secondary NameNode 定期合并元数据快照(非热备)。
默认128MB块大小(平衡寻址与传输效率),三副本策略(跨机架存储:同机架2份 + 跨机架1份)。
通过脚本配置节点机架位置,优化数据本地性读取,减少跨机架网络开销。
DataNode心跳检测、故障节点自动副本恢复,校验和验证数据完整性。
使用FileSystem
类操作HDFS,注意配置Configuration
对象中的集群地址。
计算框架对比:MapReduce vs Spark vs Flink
组件 | 原理 | 适用场景 | 开发优化 |
---|---|---|---|
MapReduce | 分治思想:Map阶段并行处理分片 → Shuffle排序 → Reduce聚合结果 | 离线批处理(TB级日志分析) | 避免小文件,合并Combine函数减少Shuffle量 |
Spark | 基于RDD内存计算:DAG调度优化迭代任务,支持批/流/图处理 | 迭代计算(机器学习)、交互查询 | 缓存RDD复用数据,调节并行度避免OOM |
Flink | 流处理优先:事件时间语义、状态管理、Exactly-Once语义 | 实时风控、CEP复杂事件处理 | 配置Checkpoint保存状态,背压机制调优 |
数据仓库与数据库
原理:将SQL(HQL)转为MapReduce/Tez/Spark任务,元数据存于RDBMS(如MySQL),数据存HDFS。
优化:分区表(PARTITION BY
)、分桶表(CLUSTERED BY
)加速查询;向量化查询减少CPU开销。
原理:LSM-Tree存储结构,Region分片存储,ZooKeeper协调RegionServer;强一致读写,适用随机访问场景。
开发:RowKey设计避免热点(如加盐哈希),布隆过滤器加速查询。
原理:MPP架构 + 列式存储,向量化引擎加速OLAP;兼容MySQL协议,支持实时导入Kafka数据。
消息系统与实时处理
原理:生产者-消费者模型,Topic分区多副本存储;高吞吐(百万级/秒)依赖顺序磁盘I/O和零拷贝技术。
开发:ISR副本同步机制保障数据可靠,acks=all
实现强一致性。
要点:Kafka作为数据缓冲层,Flink处理窗口聚合,结果写入OLAP引擎。
acks=all
,Broker多副本同步,消费者提交Offset前业务逻辑完成。
资源调度与协调
解耦资源管理与任务调度,ResourceManager分配Container,NodeManager监控资源。
多框架支持:Spark/Flink任务可提交到YARN集群。
开发实践:YARN队列资源配置(capacity-scheduler.xml
),避免资源抢占。
分布式协调服务,通过Zab协议实现选举(如HBase Master选举),监听节点状态变化。
典型架构与面试场景题
Flink消费用户行为流 → 调用Spark ML模型实时预测 → 结果写入Kafka推前端。
hdfs balancer
),调整机架感知策略或手动迁移数据块。