Hadoop YARN(Yet Another Resource Negotiator)将 Hadoop 的存储单元即 HDFS(Hadoop 分布式文件系统)与各种处理工具编织在一起。
在 Hadoop 1.0
版本,也称为 MRV1
(MapReduce Version 1
),MapReduce 执行处理和资源管理功能。它由一个 作业跟踪器(Job Tracker
)组成,它是唯一的主机。作业跟踪器分配资源、执行调度并监控处理作业。它在许多称为 任务跟踪器(Task Trackers
)的从属进程上分配映射和归约任务。任务跟踪器定期向作业跟踪器报告其进度。
由于单个作业跟踪器,这种设计导致了可扩展性瓶颈。 IBM 在其文章中提到,根据 Yahoo 的说法,当集群包含
5000
5000
5000 个节点和同时运行
40000
40000
40000 个任务时,这种设计就达到了实际极限。除了这一限制之外,MRV1 中计算资源的利用效率较低。此外,Hadoop 框架仅限于 MapReduce 处理范例。
为了克服所有这些问题,雅虎和 Hortonworks 于 2012 年在 Hadoop 2.0
版本中引入了 YARN。 YARN 背后的基本思想是通过 接管资源管理和作业调度 的职责来减轻 MapReduce 的负担。 YARN 开始赋予 Hadoop 在 Hadoop 框架内运行非 MapReduce 作业的能力。
随着 YARN 的推出,Hadoop 生态系统发生了彻底的变革。它变得更加灵活、高效和可扩展。当雅虎在 2013 年第一季度启用 YARN 时,它帮助该公司将 Hadoop 集群的规模从 40000 40000 40000 个节点缩小到 32000 32000 32000 个节点。但就业岗位数量却翻了一番,达到每月 2600 万个。
现在我已经让您了解了 YARN 的必要性,接下来让我向您介绍 Hadoop 2.0
的核心组件 YARN。 YARN 允许图形处理、交互式处理、流处理以及批处理等不同的数据处理方法来运行和处理存储在 HDFS 中的数据。因此,YARN 将 Hadoop 开放给 MapReduce 之外的其他类型的分布式应用程序。
YARN 使用户能够根据需要使用各种工具执行操作,例如用于实时处理的 Spark、用于 SQL 的 Hive、用于 NoSQL 的 HBase 等。
除了 资源管理 之外,YARN 还执行 作业调度。 YARN 通过分配资源和调度任务来执行所有处理活动。 Apache Hadoop YARN 架构由以下主要组件组成:
Resource Manager
):在主守护进程上运行并管理集群中的资源分配。Node Manager
):它们在从属守护进程上运行,负责在每个数据节点上执行任务。Application Master
):管理各个应用程序的用户作业生命周期和资源需求。它与节点管理器一起工作并监视任务的执行。Container
):单个节点上的 RAM、CPU、网络、HDD 等资源的封装。您可以将 YARN 视为 Hadoop 生态系统的大脑。下图代表了 YARN 架构。
它有两个主要组件:
Capacity Scheduler
和 Fair Scheduler
,目前在 ResourceManager 中用作调度程序。Client
)提交申请Resource Manager
)分配一个容器来启动应用程序管理器(Application Manager
)Application Manager
)向资源管理器(Resource Manager
)注册Application Manager
)向资源管理器(Resource Manager
)询问容器Application Manager
)通知节点管理器(Node Manager
)启动容器Resource Manager
)/ 应用程序管理器(Application Manager
),以监控应用程序的状态Application Manager
)向资源管理器(Resource Manager
)取消注册