Hadoop ResourceManager

2022-02-28 09:24 更新

負責全局的資源管理和任務調(diào)度,把整個集群當成計算資源池,只關(guān)注分配,不管應用,且不負責容錯

資源管理

  1. 以前資源是每個節(jié)點分成一個個的Map slot和Reduce slot,現(xiàn)在是一個個Container,每個Container可以根據(jù)需要運行ApplicationMaster、Map、Reduce或者任意的程序
  2. 以前的資源分配是靜態(tài)的,目前是動態(tài)的,資源利用率更高
  3. Container是資源申請的單位,一個資源申請格式:<resource-name, priority, resource-requirement, number-of-containers>, resource-name:主機名、機架名或*(代表任意機器), resource-requirement:目前只支持CPU和內(nèi)存
  4. 用戶提交作業(yè)到ResourceManager,然后在某個NodeManager上分配一個Container來運行ApplicationMaster,ApplicationMaster再根據(jù)自身程序需要向ResourceManager申請資源
  5. YARN有一套Container的生命周期管理機制,而ApplicationMaster和其Container之間的管理是應用程序自己定義的

任務調(diào)度

  1. 只關(guān)注資源的使用情況,根據(jù)需求合理分配資源
  2. Scheluer可以根據(jù)申請的需要,在特定的機器上申請?zhí)囟ǖ馁Y源(ApplicationMaster負責申請資源時的數(shù)據(jù)本地化的考慮,ResourceManager將盡量滿足其申請需求,在指定的機器上分配Container,從而減少數(shù)據(jù)移動)

內(nèi)部結(jié)構(gòu)

yarn-resource-manager

  • Client Service: 應用提交、終止、輸出信息(應用、隊列、集群等的狀態(tài)信息)
  • Adaminstration Service: 隊列、節(jié)點、Client權(quán)限管理
  • ApplicationMasterService: 注冊、終止ApplicationMaster, 獲取ApplicationMaster的資源申請或取消的請求,并將其異步地傳給Scheduler, 單線程處理
  • ApplicationMaster Liveliness Monitor: 接收ApplicationMaster的心跳消息,如果某個ApplicationMaster在一定時間內(nèi)沒有發(fā)送心跳,則被任務失效,其資源將會被回收,然后ResourceManager會重新分配一個ApplicationMaster運行該應用(默認嘗試2次)
  • Resource Tracker Service: 注冊節(jié)點, 接收各注冊節(jié)點的心跳消息
  • NodeManagers Liveliness Monitor: 監(jiān)控每個節(jié)點的心跳消息,如果長時間沒有收到心跳消息,則認為該節(jié)點無效, 同時所有在該節(jié)點上的Container都標記成無效,也不會調(diào)度任務到該節(jié)點運行
  • ApplicationManager: 管理應用程序,記錄和管理已完成的應用
  • ApplicationMaster Launcher: 一個應用提交后,負責與NodeManager交互,分配Container并加載ApplicationMaster,也負責終止或銷毀
  • YarnScheduler: 資源調(diào)度分配, 有FIFO(with Priority),F(xiàn)air,Capacity方式
  • ContainerAllocationExpirer: 管理已分配但沒有啟用的Container,超過一定時間則將其回收
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號