### 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 容