Yarn原理与代码实例讲解
1.背景介绍
在大数据时代,Apache Hadoop作为一种分布式系统基础架构,已经成为企业存储和大数据处理的核心平台。Hadoop的两个核心组件是HDFS(Hadoop分布式文件系统)和MapReduce。MapReduce为海量数据的并行处理提供了可靠的模型。但是,MapReduce存在一些缺陷,例如对于小作业的处理效率低下、无法重用已计算的数据等。为了解决这些问题,Apache Hadoop社区提出了一种新的资源管理和作业调度技术Yarn(Yet Another Resource Negotiator)。
Yarn的设计目标是将资源管理和作业调度/监控从单一的JobTracker中分离出来,以加强系统的伸缩性和可用性。Yarn将整个集群的资源管理和作业调度功能分给了一个小型的资源管理器(Resource Manager),而应用程序只需要为每个作业提供一个应用程序管理器(Application Master),由后者负责向资源管理器申请资源并监控作业的执行。
2.核心概念与联系
Yarn的核心概念包括:
- 资源管理器(Resource Manager,RM): 集群资源的主管理者,负责资源的分配和调度。
- 节点管理器(Node Manager,NM): 运行在每个节点上,负责容器的启动、监控和停止。
- 应用程序管理器(Application Master,AM): 为每个应用程序实例运行,负责向RM申请资源并监控应用执行。
- 容器(Container): Yarn中表示资源的抽象,包含内存、CPU等多维资源。
Yarn的核心工作流程如下:
graph TD
A[客户端提交应用] --> B[RM接收申请]
B -->