下面是对 Hadoop 和 Spark 的核心组件及基本概念的系统性介绍,适用于大数据平台的入门与架构理解:
一、Hadoop 介绍
1. Hadoop 定义
Apache Hadoop 是一个 分布式计算平台,可以在由普通服务器组成的集群中高效地存储和处理海量数据。
2. Hadoop 核心组件
| 组件 | 作用 | 核心子模块 |
|---|
| HDFS (Hadoop Distributed File System) | 分布式文件系统,存储大数据 | NameNode、DataNode |
| YARN (Yet Another Resource Negotiator) | 集群资源管理与任务调度框架 | ResourceManager、NodeManager |
| MapReduce | 分布式计算模型,基于 Java 实现的批处理框架 | JobTracker(早期)、ApplicationMaster |
| Common | 提供 Hadoop 各组件所需的共享工具和 Java 库 | 配置文件、序列化、RPC 等基础 |
3. HDFS 关键概念
- Block(块):HDFS 将文件拆分成固定大小的数据块(默认 128MB),分散存储在集群中。
- NameNode:存储元数据(文件目录、块位置、权限等),是 HDFS 的主控节点。
- DataNode:存储真实数据块,执行读写请求。
- 副本机制(Replication):默认每个块保存 3 份副本,提升容错性。
4. YARN 关键概念
- ResourceManager:管理全局资源,接收应用提交并分配资源。
- NodeManager:每个节点的本地资源管理器,负责执行任务容器。
- ApplicationMaster:每个应用独立的任务调度器和协调者,按需向 RM 申请资源。
5. MapReduce 简要流程
- 将输入数据切分为 splits。
- 启动 map 任务对每个 split 进行处理,输出中间键值对(key, value)。
- 系统自动进行 shuffle 和 sort(按 key 分组)。
- reduce 任务对分组数据聚合计算,生成最终输出结果。
二、Spark 介绍
1. Spark 定义
Apache Spark 是一个 基于内存计算的分布式数据处理引擎,相比 Hadoop MapReduce 提供更高的性能,并支持多种计算模型(批处理、流处理、图计算、机器学习)。
2. Spark 核心组件
| 组件 | 功能 | 对应模块 |
|---|
| Spark Core | 提供 RDD 等基础抽象与调度 | 计算调度、内存管理 |
| Spark SQL | 结构化数据处理,支持 SQL 查询 | DataFrame、Dataset API |
| Spark Streaming | 微批处理流计算 | DStream、Structured Streaming |
| MLlib | 分布式机器学习库 | 分类、聚类、回归、推荐等 |
| GraphX | 分布式图计算库 | 图遍历、PageRank |
3. Spark 架构组件
| 组件 | 作用 |
|---|
| Driver | 程序主控,负责 Job 的划分、调度 |
| Executor | 任务执行进程,负责执行具体的 Task |
| Cluster Manager | 管理集群资源(支持 YARN、Standalone、Mesos、K8s) |
4. 核心抽象:RDD(弹性分布式数据集)
- 分布式、不可变、可并行的数据集合。
- 支持 transformation(如 map、filter)和 action(如 count、collect)。
- 具备容错机制(通过 Lineage 血统信息)。
5. Spark vs Hadoop MapReduce
| 比较项 | Hadoop MapReduce | Spark |
|---|
| 性能 | 基于磁盘,慢 | 基于内存,快 |
| 编程模型 | 复杂(Map + Reduce) | 简洁(RDD、DataFrame) |
| 容错机制 | 数据块副本 | RDD 血统 |
| 执行引擎 | 串行、多阶段中间落盘 | DAG 有向图调度,内存计算 |
| 实时能力 | 弱 | 支持流处理(Structured Streaming) |
三、Hadoop 与 Spark 的协同关系
- Spark 可以运行在 Hadoop YARN 上,复用 HDFS 存储。
- Hadoop 提供底层资源调度与存储,Spark 提供更灵活高效的计算模型。
- 常见组合:HDFS + YARN + Spark,实现计算存储分离与分布式大数据处理。
四、相关生态工具(Hadoop/Spark 共用或互补)
| 工具 | 作用 | 适配引擎 |
|---|
| Hive | SQL-on-Hadoop 查询引擎 | Hadoop/Spark |
| HBase | 分布式列式数据库 | Hadoop HDFS |
| Flink | 实时计算引擎 | 替代 Spark Streaming |
| Oozie | 工作流调度器 | Hadoop |
| Zookeeper | 分布式协调服务 | Hadoop/Spark 组件协作 |
| Presto/Trino | 高性能 SQL 查询引擎 | 可连接 Hive/S3/HDFS |
| Airflow | 通用数据工作流调度 | Spark/Hadoop 作业编排 |
如需更进一步,例如具体的部署架构图、HDFS 读写流程、Spark DAG 执行过程、调优技巧、监控告警方案,我可以继续扩展说明。是否需要我帮你画出 Hadoop + Spark 的集群拓扑图 或整理 核心组件学习路线图?