什么是 Hadoop? Archi结构、生态系统及组成部分

⚡ 智能摘要

Apache Hadoop 是一个开源框架,它将海量数据集存储在通用机器集群中,并将处理逻辑移至数据所在位置,因此可以通过添加廉价节点而不是更大的服务器来扩展分析规模。

  • 🔘 核心模块: 从 Hadoop 2.x 开始,HDFS 存储数据块,MapReduce 处理数据块,YARN 调度集群资源。
  • ☑️ 数据局部性: 编译后的处理逻辑会传输到持有该数据块的节点,因此消耗的网络带宽要少得多。
  • 生态系统: Hive、HBase、Mahout、Sqoop、Flume 和 ZooKeeper 通过 SQL、NoSQL、数据摄取和协调功能扩展了核心功能。
  • 🧪 主从式布局: 名称节点 tracks 命名空间元数据,而 DataNodes 保存数据块并报告其状态。
  • 🛠️ 容错能力: 每个数据块都会在各个节点上进行复制,因此即使单个机器发生故障,也不会停止正在运行的作业。
  • ⚠️ 网络拓扑结构: Hadoop 将集群建模为数据中心、机架和节点的树状结构,以保持流量本地化。

Hadoop架构、生态系统和组件是什么?

什么是 Hadoop?

Apache Hadoop 是一个开源软件框架,用于开发在分布式计算环境中执行的数据处理应用程序。

使用 Hadoop 构建的应用程序运行在分布于通用计算机集群上的大型数据集上。通用计算机价格低廉且广泛可用,主要用于以低成本获得更强大的计算能力。

与个人计算机系统本地文件系统中存储的数据类似,在Hadoop中,数据存储在一个名为Hadoop文件系统的分布式文件系统中。 Hadoop分布式文件系统该处理模型基于 “数据局部性” 该概念是指将计算逻辑发送到包含数据的集群节点(服务器)。这种计算逻辑实际上是用高级语言(例如编程语言)编写的程序的编译版本。 Java这样的程序会处理存储在……中的数据。 Hadoop HDFS.

你知道吗? 计算机集群由多个相互连接的处理单元(存储磁盘+处理器)组成,这些处理单元作为一个单一系统运行。

版本 3.5.0 于 2026 年 4 月 2 日发布,是当前的稳定版本;3.4 系列仍会收到维护更新。

Hadoop 生态系统和组件

下图显示了 Hadoop 生态系统中的各种组件,并按每个组件执行的任务进行分组——存储、处理以及围绕它们的查询、摄取和协调工具。

Hadoop生态系统图,展示了HDFS、MapReduce和相关的Apache项目

Apache Hadoop 由两个子项目组成 -

  1. Hadoop MapReduce: MapReduce 是一种计算模型和软件框架,用于编写在 Hadoop 上运行的应用程序。这些 MapReduce 程序能够在大型计算节点集群上并行处理大量数据。
  2. 高密度文件系统 (Hadoop分布式文件系统): HDFS 负责 Hadoop 应用程序的存储部分。MapReduce 应用程序使用来自 HDFS 的数据。HDFS 创建数据块的多个副本并将它们分布在集群中的计算节点上。这种分布可实现可靠且极其快速的计算。

当前版本还包含两个核心模块。 Hadoop纱线(Hadoop 2.x 版本新增)负责调度集群上的工作, Hadoop 通用 持有共享 Java 每个模块都依赖于库。YARN 让诸如 YARN 之类的引擎能够运行。 SparkTez 和 Flink 与 MapReduce 并行运行。

尽管Hadoop最广为人知的是其MapReduce及其分布式文件系统HDFS,但该术语也用于指代一系列相关的项目,这些项目都属于分布式计算和大规模数据处理的范畴。Apache的其他Hadoop相关项目包括: 蜂房HBase、Mahout Sqoop,Flume以及 ZooKeeper。

Hadoop的 Archi质地

Hadoop 采用主从架构进行数据存储和分布式数据处理。 映射简化 以及HDFS方法。下图将这些角色并列展示,存储层位于一侧,处理层位于另一侧。

Hadoop 高级架构图,展示了名称节点、数据节点、主节点和从节点。

高级 Hadoop Archi质地

名称节点

NameNode 存储命名空间中使用的每个文件和目录的元数据,包括构成每个文件的块以及这些块的位置。

数据节点

DataNode 管理 HDFS 节点的状态,并允许您与它存储的数据块进行交互,通过定期的数据块报告和心跳向 NameNode 报告状态。

主节点

主节点允许您使用 Hadoop MapReduce 进行数据并行处理。

从节点

从节点是 Hadoop 集群中的附加机器,用于存储数据和运行复杂的计算。此外,每个从节点都会运行一个任务。Tracker 和 DataNode。这允许您将进程与 NameNode 和 Job 同步。Tracker 分别。

在 Hadoop 中,主系统或从系统可以设置在云端或本地。

命名说明: 工作TracKER任务TracKER 属于第一代 MapReduce 运行时 (MRv1)。从 Hadoop 2.x 开始,YARN 将它们的职责拆分到集群范围内的各个层级。 资源管理器,以 节点管理器 每个工人,一个 ApplicationMaster 每个作业的 NameNode 和 DataNode 保持不变。

Hadoop的特性

适用于大数据分析

As 大数据 由于数据本质上往往是分布式和非结构化的,Hadoop 集群最适合用于大数据分析。因为流向计算节点的是处理逻辑(而非实际数据),所以消耗的网络带宽更少。这被称为…… 数据局部性概念这有助于提高基于 Hadoop 的应用程序的效率。

可扩展性

Hadoop集群可以通过添加额外的集群节点轻松扩展至任意规模,从而满足大数据增长的需求。此外,扩展无需修改应用程序逻辑。

容错

Hadoop 生态系统提供了一种将输入数据复制到其他集群节点的机制。这样,即使某个集群节点发生故障,数据处理仍然可以利用存储在其他集群节点上的数据继续进行。HDFS 默认会保留每个数据块的三个副本,这个值由……设定。 dfs复制 属性,并且 NameNode 会重新复制任何计数低于该值的块。

Hadoop中的网络拓扑

随着Hadoop集群规模的增长,网络拓扑结构(布局)会影响集群的性能。除了性能之外,还需要关注高可用性和故障处理。为了实现这些目标,Hadoop集群的构建会利用网络拓扑结构。

下图展示了这种架构的建模方式,从数据中心一直到每个机架内的节点。

Hadoop网络拓扑树,包含数据中心、机架和节点,用于测量节点间的距离

通常,网络带宽是构建任何网络时需要考虑的重要因素。然而,由于带宽测量较为困难,Hadoop 将网络表示为一棵树,并将树中节点之间的距离(即跳数)视为构建 Hadoop 集群的重要因素。这里,两个节点之间的距离等于它们到最近共同祖先节点的距离之和。

Hadoop 集群由数据中心、机架和实际执行作业的节点组成。其中,数据中心由机架组成,机架又由节点组成。进程可用的网络带宽取决于进程的位置。也就是说,随着距离的增加,可用带宽会减少。

  • 同一节点上的进程
  • 同一机架上的不同节点
  • 同一数据中心不同机架上的节点
  • 不同数据中心的节点

机架感知使用同一棵树:HDFS 将副本放置在多个机架上,因此丢失一个机架交换机不会导致每个数据副本丢失。

常见问题

3.5.0 版本于 2026 年 4 月 2 日发布,是 3.5 系列的首个稳定版本,也是新建集群的常用选择。如果您需要更稳定的版本,3.4 系列仍然在维护中。

是的。Hadoop 支持独立模式,可以作为一个独立的应用程序运行。 Java 进程不运行守护进程,以及伪分布式模式,其中每个守护进程都在单个主机上独立运行。这两种模式都适用于学习和测试,不适用于生产环境。

基于作业历史记录训练的模型可以预测运行时间、推荐容器大小,并在作业完成前标记数据倾斜。类似的模型会扫描 NameNode 和 DataNode 日志,以便比阈值警报更早地发现故障磁盘和过热机架。

它可以简化样板代码:mapper 和 reducer 框架、作业驱动程序配置以及 XML 属性块。务必将生成的代码与您运行的 API 版本进行比对,因为 Copilot 会混合使用旧版 mapred 和新版 mapreduce 包。

默认情况下使用三个副本,由 dfs.replication 控制。一个副本保留在写入节点上,第二个副本部署到另一个机架,第三个副本则加入到第二个机架。NameNode 会恢复任何低于目标值的块。

PB级批量存储仍然普遍需要保留在自有硬件上。大多数新的处理程序都是为此而编写的。 Spark 或者像 Flink 那样,它在 YARN 上运行,因此在 MapReduce 退役后,HDFS 通常仍作为存储层继续存在。

YARN 是 Hadoop 2.x 中引入的资源管理器。它将集群调度与 MapReduce 编程模型分离,从而消除了作业调度。Trac瓶颈和让引擎之类的 SparkTez 和 Flink 共用一个集群。

Java 这是原生功能。Hadoop Streaming 允许任何读取标准输入的可执行文件充当 mapper 或 reducer,因此 PythonRuby、Perl 和 C++ 所有这些都是可用的,Hive 在相同的数据上添加了一个类似 SQL 的层。

总结一下这篇文章: