Yarn資源管理框架
阿新 • • 發佈:2018-12-19
簡單介紹Yarn。
背景介紹
MapReduce v1
- JobTracker
- Manage Cluster Resources & Job Scheduling
- TaskTracker
- Per-node agent
- Manage Task
- 其中,JobTracker承擔了太多的任務
- 作業管理
- 狀態監控,資訊彙總
- 任務管理
- 排程,監控
- 資源管理
- 作業管理
MapReduce 1.0 缺陷
- JobTracker存在單點故障風險
- JobTracker“大包大攬”記憶體開銷大
- 資源分配只考慮MapReduce任務數量,不考慮任務需要 的CPU、記憶體,TaskTracker所在節點容易記憶體溢位
- 資源劃分不靈活(強制等量劃分為slot ,包括Map slot和 Reduce slot)
- 資源管理不單單是MapReduce系統所需要的,而是通用的
YARN
- Yet Another Resource Negotiator
- 設計思路
- 資源管理與計算相分離
- MapReduce 1.0既是計算框架,也是資源管理框架
- Yarn是獨立出來的資源管理框架
YARN體系結構
ResourceManager
- ResourceManager(RM)是一個全域性的資源管理器,包括
- 資源排程器(Resource Scheduler)
- 資源分配
- 應用程式管理器(Application Manager)
- 所有應用程式的管理工作(輕量作業管理)
- 檢查是否由足夠資源部署application master
- 維護application id
- Web UI展示資訊
- 資源排程器(Resource Scheduler)
NodeManage
- 監控所在節點每個Container(容器)的資源 (CPU、記憶體等)使用情況、健康狀況
- 向ResourceManager彙報作業的資源使用 情況和每個容器的執行狀態
- NodeManager主要負責管理抽象的容器, 只處理與容器相關的事情,而不具體負責每個任務(Map任務或Reduce任務)自身狀態的管理
ApplicationMaster
- 與ResourceManager(RM)的互動
- 與RM協商獲取資源,把獲得的資源進一步分配給內部的各個任務(Map或Reduce任務)
- 定時向RM報告資源使用情況和應用進度資訊 作業完成時,向RM登出容器,執行週期完成
- 與NodeManager保持通訊進行應用程式的 管理
- 監控任務的執行進度和狀態,並在任務發生失敗時重新申請資源重啟任務
Container
- 容器(Container)作為動態資源分配單位 ,每個容器中都封裝了一定數量的CPU、 記憶體、磁碟等資源,從而限定每個應用程 序可以使用的資源量
- 執行計算任務
- 無論是MapReduce還是Spark,都可以執行
YARN工作流程
YARN發展目標
- 一個框架多個系統
- 在一個叢集上部署一個統一的資源排程管理框架YARN,在 YARN之上可以部署其他各種計算系統
- 由YARN為這些計算系統提供統一的資源排程管理框架,並且能夠根據各種計算系 統的負載需求,調整各自佔用的資源,實現叢集資源共享和資源彈性收縮
- 可以實現一個叢集上不同應用負載混搭,有效提高了叢集的利用率
- 不同計算系統可以共享底層儲存,避免了資料集跨叢集移動