Hadoop架构
封面图
•
2025-11-22
•
架构设计
223
0
0
0
Hadoop 是一个用于**分布式存储和分布式计算**的开源框架,主要用于处理大规模数据集(即“大数据”)。它的核心设计目标是**高容错性、可扩展性和高效的数据处理能力**。Hadoop 的架构主要由以下几个关键组件构成: --- ## 🧱 Hadoop 架构的核心组件 ### 1. **HDFS (Hadoop Distributed File System)** - **作用**:分布式文件系统,用于存储海量数据。 - **特点**: - 数据被分割成块(默认大小为 128MB 或 256MB)并分布存储在多个节点上。 - 每个数据块有多个副本(默认是 3 个),确保高可用性和容错性。 - 使用 NameNode 和 DataNode 架构: - **NameNode**:管理文件系统的元数据(如文件目录结构、块的位置等)。 - **DataNode**:存储实际的数据块,并定期向 NameNode 报告状态。 ### 2. **YARN (Yet Another Resource Negotiator)** - **作用**:资源管理和任务调度框架。 - **特点**: - 将集群资源的管理与任务调度解耦。 - 包含两个核心组件: - **ResourceManager (RM)**:全局资源管理器,负责整个集群的资源分配。 - **NodeManager (NM)**:运行在每个节点上的代理,负责监控和管理单个节点的资源使用情况。 - 支持多种计算框架(如 MapReduce、Spark、Flink 等)运行在同一个集群上。 ### 3. **MapReduce** - **作用**:分布式计算模型,用于处理和分析存储在 HDFS 上的大数据。 - **原理**: - **Map 阶段**:将输入数据分解为键值对(key-value pairs),并进行初步处理。 - **Shuffle & Sort 阶段**:将 Map 输出的中间结果按照 key 进行排序和分组。 - **Reduce 阶段**:对相同 key 的值进行汇总或聚合处理。 - **优点**:适合批处理任务,具有良好的可扩展性。 --- ## 🔄 Hadoop 的工作流程(以 MapReduce 为例) 1. **用户提交作业**:将程序和数据上传到 HDFS。 2. **JobClient 提交作业**:将作业发送给 ResourceManager。 3. **ResourceManager 分配资源**:选择合适的 NodeManager 启动 TaskTracker。 4. **MapTask 执行**:在 DataNode 上执行 Map 任务,输出中间结果。 5. **Shuffle & Sort**:将 Map 输出按 key 排序后传递给 ReduceTask。 6. **ReduceTask 执行**:对数据进行聚合处理,输出最终结果。 7. **写入 HDFS**:将最终结果写入 HDFS。 --- ## 📈 Hadoop 的优势 | 优点 | 描述 | |------|------| | **高容错性** | 数据副本机制保证了即使部分节点故障,数据也不会丢失。 | | **水平扩展** | 可通过增加节点来提升集群容量和性能。 | | **成本低** | 基于普通硬件构建,相比传统数据库更经济。 | | **支持海量数据** | 能够处理 PB 级别的数据。 | --- ## 🧠 Hadoop 的局限性 | 局限性 | 描述 | |--------|------| | **不适合实时处理** | MapReduce 是批处理模型,延迟较高。 | | **不支持事务** | 不适合需要强一致性的场景。 | | **学习曲线较陡** | 需要掌握 Java 编程、分布式系统原理等知识。 | --- ## 🧩 Hadoop 生态系统(常见组件) 除了 HDFS、YARN 和 MapReduce 外,Hadoop 生态系统还包括以下重要组件: | 组件 | 用途 | |------|------| | **Hive** | 数据仓库工具,提供类 SQL 查询接口(HQL)。 | | **Pig** | 数据流语言,简化 MapReduce 编程。 | | **HBase** | 分布式 NoSQL 数据库,适合随机读写。 | | **ZooKeeper** | 分布式协调服务,用于管理集群配置和同步。 | | **Kafka** | 分布式消息队列,常用于实时数据流处理。 | | **Spark** | 快速通用的集群计算框架,支持内存计算,比 MapReduce 更快。 | --- ## ✅ 总结 Hadoop 的架构基于 **分布式存储(HDFS)** 和 **分布式计算(MapReduce / YARN)**,适用于**离线批处理**场景。随着技术的发展,Hadoop 逐渐与其他框架(如 Spark、Flink)结合,形成了更强大的大数据处理平台。 如果你对某个具体组件(如 HDFS、YARN、MapReduce 或 HBase)感兴趣,我可以进一步详细讲解!
上一篇:
如何有效的进行架构设计?
下一篇:
推荐一些计算机硬件方面的书
标题录入,一次不能超过6条
留言
评论