1. 程式人生 > >Yarn資源管理框架

Yarn資源管理框架

簡單介紹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是獨立出來的資源管理框架
  • image-20181104115127215

YARN體系結構

image-20181104115216929

ResourceManager

  • ResourceManager(RM)是一個全域性的資源管理器,包括
    • 資源排程器(Resource Scheduler)
      • 資源分配
    • 應用程式管理器(Application Manager)
      • 所有應用程式的管理工作(輕量作業管理)
      • 檢查是否由足夠資源部署application master
      • 維護application id
      • Web UI展示資訊

NodeManage

  • 監控所在節點每個Container(容器)的資源 (CPU、記憶體等)使用情況、健康狀況
  • 向ResourceManager彙報作業的資源使用 情況和每個容器的執行狀態
  • NodeManager主要負責管理抽象的容器, 只處理與容器相關的事情,而不具體負責每個任務(Map任務或Reduce任務)自身狀態的管理

ApplicationMaster

  • 與ResourceManager(RM)的互動
    • 與RM協商獲取資源,把獲得的資源進一步分配給內部的各個任務(Map或Reduce任務)
    • 定時向RM報告資源使用情況和應用進度資訊 作業完成時,向RM登出容器,執行週期完成
  • 與NodeManager保持通訊進行應用程式的 管理
  • 監控任務的執行進度和狀態,並在任務發生失敗時重新申請資源重啟任務

Container

  • 容器(Container)作為動態資源分配單位 ,每個容器中都封裝了一定數量的CPU、 記憶體、磁碟等資源,從而限定每個應用程 序可以使用的資源量
  • 執行計算任務
    • 無論是MapReduce還是Spark,都可以執行

YARN工作流程

image-20181104115745797

YARN發展目標

  • 一個框架多個系統
    • 在一個叢集上部署一個統一的資源排程管理框架YARN,在 YARN之上可以部署其他各種計算系統
  • 由YARN為這些計算系統提供統一的資源排程管理框架,並且能夠根據各種計算系 統的負載需求,調整各自佔用的資源,實現叢集資源共享和資源彈性收縮
  • 可以實現一個叢集上不同應用負載混搭,有效提高了叢集的利用率
  • 不同計算系統可以共享底層儲存,避免了資料集跨叢集移動