Hadoop 全家桶 是大数据生态的“操作系统”,它不是一个单一工具,而是一套完整的分布式系统栈,用于存储、处理、分析海量数据。


一、知识体系总览

模块 核心内容
1. Hadoop 核心三驾马车 HDFS、MapReduce、YARN
2. 数据存储层 HDFS、HBase、Kudu
3. 数据处理层 MapReduce、Spark、Flink
4. 数据查询层 Hive、Impala、Presto
5. 资源调度层 YARN、Kubernetes
6. 数据采集层 Flume、Sqoop、Kafka
7. 工作流调度 Oozie、Airflow、Azkaban
8. 元数据管理 Hive Metastore、Atlas
9. 数据仓库与湖仓一体 Hive、Iceberg、Hudi
10. 安全机制 Kerberos、Ranger、Sentry
11. 底层原理 分布式存储、分片、容错、MapReduce 模型
12. 生态整合 Hadoop + Spark + Kafka + Flink
13. 最佳实践 数据分层、ETL 流程、监控告警
14. 故障排查 NameNode 故障、DataNode 失联
15. 源码级解析 HDFS Java 实现、YARN 调度算法

二、Hadoop 全家桶全景图

+-----------------------------+
|         应用层              |
|  BI 报表 / 机器学习 / API    |
+-----------------------------+
              ↓
+-----------------------------+
|        查询与分析           |
|  Hive / Impala / Presto     |
+-----------------------------+
              ↓
+-----------------------------+
|        数据处理             |
|  Spark / Flink / MapReduce  |
+-----------------------------+
              ↓
+-----------------------------+
|        工作流调度           |
|  Oozie / Airflow / Azkaban  |
+-----------------------------+
              ↓
+-----------------------------+
|        资源调度             |
|  YARN / Kubernetes          |
+-----------------------------+
              ↓
+-----------------------------+
|        数据存储             |
|  HDFS / HBase / Kudu        |
+-----------------------------+
              ↓
+-----------------------------+
|        数据采集             |
|  Flume / Sqoop / Kafka      |
+-----------------------------+
              ↓
+-----------------------------+
|        元数据管理           |
|  Hive Metastore / Atlas     |
+-----------------------------+
              ↓
+-----------------------------+
|        安全机制             |
|  Kerberos / Ranger / Sentry |
+-----------------------------+

✅ Hadoop 是“地基”,其他组件在其上构建


三、核心组件详解

✅ 1. HDFS(Hadoop Distributed File System)

  • 作用:分布式文件系统,存储海量数据
  • 特点
    • 分块存储(默认 128MB)
    • 多副本(默认 3 副本)
    • 高容错
  • 核心进程
    • NameNode:元数据管理(文件目录、块位置)
    • DataNode:数据存储
    • Secondary NameNode:辅助 NameNode(非高可用)

✅ 2. MapReduce

  • 作用:分布式计算模型
  • 核心思想
    • Map:分治,每个节点处理一部分数据
    • Reduce:聚合,汇总结果
  • 流程
    Input → Split → Map → Shuffle → Reduce → Output
    
  • 缺点:基于磁盘,慢;已被 Spark 取代

✅ 3. YARN(Yet Another Resource Negotiator)

  • 作用:资源调度与作业管理
  • 核心角色
    • ResourceManager:全局资源调度
    • NodeManager:单节点资源管理
    • ApplicationMaster:单个作业的调度
  • 支持多种计算框架:MapReduce、Spark、Flink

四、全家桶扩展组件

✅ 1. 数据仓库:Hive

  • 作用:SQL on Hadoop
  • 原理:将 SQL 转为 MapReduce/Tez/Spark 任务
  • 元数据:存储在 MySQL 的 Hive Metastore

✅ 2. 实时查询:Impala / Presto

  • 作用:低延迟 SQL 查询
  • 特点:内存计算,秒级响应
  • Impala:Cloudera 开发,与 HDFS 紧密集成
  • Presto:Facebook 开发,支持多数据源

✅ 3. NoSQL 数据库:HBase

  • 作用:分布式列式数据库
  • 场景:实时读写、高并发
  • 架构:基于 HDFS,支持随机访问

✅ 4. 数据采集

工具 用途
Flume 日志采集(如 Nginx 日志)
Sqoop 关系型数据库 ↔ HDFS 批量同步
Kafka 实时消息队列,流式数据入口

✅ 5. 工作流调度

工具 说明
Oozie Hadoop 原生调度器,XML 配置
Airflow Python 编写 DAG,现代首选
Azkaban LinkedIn 开发,Web 界面友好

✅ 6. 元数据管理

  • Hive Metastore:存储 Hive 表结构
  • Apache Atlas:数据血缘、分类、安全策略

✅ 7. 湖仓一体(Lakehouse)

  • Apache Iceberg:高性能表格式
  • Apache Hudi:支持实时更新
  • Delta Lake:Databricks 开发

五、底层原理详解

✅ 1. HDFS 分布式存储原理

客户端写入文件
     ↓
NameNode 返回块位置(如 DN1, DN2, DN3)
     ↓
客户端直接写入 DataNode
     ↓
DataNode 间复制副本
     ↓
写入成功
  • 分块:大文件切分为 128MB 块
  • 多副本:默认 3 副本,跨机架存储
  • 容错:NameNode 内存 + EditLog + FsImage

✅ 2. MapReduce 执行流程

1. InputSplit:将输入文件切片
2. Map Task:每个 Split 启动一个 Map
3. Shuffle:按 Key 排序、分区、传输到 Reduce
4. Reduce Task:聚合结果
5. Output:写入 HDFS

✅ “Shuffle” 是性能瓶颈


✅ 3. YARN 资源调度

用户提交作业
     ↓
ResourceManager 分配 Container
     ↓
NodeManager 启动 ApplicationMaster
     ↓
AM 申请资源运行 Task
     ↓
Task 在 Container 中执行

✅ 支持多框架共存


六、安全机制

机制 说明
Kerberos 强身份认证,防止未授权访问
Ranger 细粒度权限控制(库、表、列)
Sentry Cloudera 的权限系统
SSL 数据传输加密

七、最佳实践

✅ 推荐做法

  1. 数据分层:ODS → DWD → DWS → ADS
  2. 使用 Parquet/ORC 格式:列式存储,压缩率高
  3. 用 Airflow 替代 Oozie:更易用
  4. 监控 NameNode 健康状态
  5. 定期备份元数据

❌ 避免

  • 直接在 HDFS 上小文件存储(影响 NameNode)
  • 不设权限控制
  • 用 MapReduce 处理实时任务
  • 忽视数据血缘

八、总结

Hadoop 全家桶的本质

一个完整的“大数据操作系统”——它提供分布式存储(HDFS)、资源调度(YARN)、批处理(MapReduce)、数据仓库(Hive)、实时采集(Kafka)、工作流(Airflow)等全套能力

核心原理

  • HDFS:分块 + 多副本 + NameNode 元数据
  • MapReduce:分治 + Shuffle + 聚合
  • YARN:ResourceManager + NodeManager + ApplicationMaster
  • Hive:SQL → MapReduce/Spark
  • HBase:LSM-Tree + MemStore + HFile
  • Kafka:分区 + 副本 + 日志存储

成功关键

✅ 理解 HDFS 是“地基”
✅ 掌握 Hive SQL 查询
✅ 用 Spark 替代 MapReduce
✅ 用 Airflow 管理 ETL 流程
✅ 用 Ranger 控制权限


一句话总结:

Hadoop 全家桶不是“软件”,而是“大数据宇宙”——你用 HDFS 存数据,用 Hive 查数据,用 Spark 算数据,用 Airflow 管流程,构建真正的企业级数据平台。

掌握它,你就能驾驭 PB 级数据洪流。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐