### Yarn 的基本概念
Yarn 是 Hadoop 生态系统中的一个重要组成部分,它是一种分布式资源管理框架,旨在为大规模数据处理提供高效的资源管理和调度能力。以下是关于 Yarn 的一些核心概念:
#### 1. **Yarn 的定义**
Yarn 是一个资源调度平台,其主要功能是为计算程序(如 MapReduce)提供服务器运算资源。它可以看作是一个分布式的操作系统平台,而像 MapReduce 这样的计算框架则是运行在其上的应用程序。
---
#### 2. **Yarn 的架构组成**
Yarn 主要由以下几个关键组件构成:
- **ResourceManager (RM)**
ResourceManager 是整个系统的中心节点,负责全局的资源管理和分配工作。它的职责包括跟踪集群中可用的资源以及将这些资源分配给各个应用。ResourceManager 提供了一个接口来接收来自客户端的应用请求,并协调 ApplicationMaster 和 NodeManager 的交互。
- **NodeManager (NM)**
NodeManager 是每个节点上的代理服务,负责容器的生命周期管理、日志收集以及其他与单机相关的任务。NodeManager 向 ResourceManager 报告本地资源使用情况并接受指令以启动或停止容器。
- **ApplicationMaster (AM)**
每个提交到 Yarn 上的任务都会有一个对应的 ApplicationMaster 实例。它是特定于某个应用的实体,负责向 ResourceManager 请求资源,并与 NodeManager 协同完成具体的任务执行逻辑。此外,ApplicationMaster 还承担着监控和报告任务状态的责任。
- **Container**
Container 表示 Yarn 中的一个抽象单位,用于封装 CPU、内存等物理资源。当一个任务被分发至某台机器时,实际上就是通过创建一个新的 Container 来承载这个任务所需的环境配置及其实际运行过程。
---
#### 3. **Yarn 的工作机制**
Yarn 的整体运作流程如下所示:
1. 用户提交作业后,Client 将会联系 ResourceManager 并申请初始化 ApplicationMaster 所需的第一个 Container;
2. ResourceManager 接收到请求之后,在合适的节点上安排好相应的资源并将消息发送回 Client;
3. 随后,Client 又通知指定位置上的 NodeManager 创建出所期望的那个初始 Container;
4. 在此期间,NodeManager 开始加载必要的依赖项并通过内部机制激活 ApplicationMaster;
5. 成功启动后的 ApplicationMaster 继续向上级汇报自己的存在状况并向下层索求更多额外支持以便进一步扩展规模直至最终结束全部进程为止。
---
#### 4. **资源配置文件详解**
在日常运维过程中,`yarn-site.xml` 文件扮演了极为重要的角色,因为它包含了大量影响性能表现的关键参数设置。例如下面这段代码片段展示了如何调整最大优先级级别:
```xml
<property>
<name>yarn.cluster.max-application-priority</name>
<value>5</value>
</property>
```
这里 `<value>` 字段设定了当前集群所能容纳的最大应用程序优先级数值,默认情况下取值范围是从零开始直到设定上限之间任意整数均可适用。
---
### 使用场景举例
为了更好地理解 Yarn 如何发挥作用,我们可以考虑这样一个例子:假设有两台主机 A 和 B 构成的小型 Hadoop 集群,每台都具备双核处理器加 8GB RAM 容