閱讀484 返回首頁    go 阿裏雲 go 技術社區[雲棲]


YARN-架構

標簽(空格分隔): 大數據 YARN


[toc]


原文:https://hadoop.apache.org/docs/r2.6.4/hadoop-yarn/hadoop-yarn-site/YARN.html

Hadoop下一代MapReduce(YARN)

MapReduce在hadoop-0.23中經曆了完整的革新,也就是引入了MapReduce 2.0(MRv2),俗稱YARN。

MRv2的核心思想是將原來JobTracker的兩個主要功能拆分,也就是將資源管理(resource management)和調度與監控(scheduling/monitoring)分離為兩個daemon進程。其思想表現為持有一個全局的ResourceManager(RM)以及每個應用有一個ApplicationMaster(AM)。一個應用對應一個傳統的MR作業或者一個作業組DAG。

ResourceManager和每個slave節點的NodeManager(NM)構成了數據計算框架。ResourceManager是全局總控,負責分配仲裁係統中作業的資源。

ApplicationMaster是每個應用作業一個,它事實上是一個框架相關的lib庫,被用來和ResourceManager協調資源以及與NodeManager協同工作來執行和監控任務。

MapReduce NextGen Architecture

ResourceManager有兩個主要組件:調度器Scheduler和應用管理器ApplicationsManager。

調度器Scheduler負責給每個不同的運行中的作業分配資源,使其滿足容量約束和隊列約束等。Scheduler是純粹的調度器,不做任何應用的監控和狀態跟蹤。同理,也不保證失敗任務的重啟,無論是應用程序錯誤還是硬件錯誤。調度器根據應用作業的資源需求來完成調度;它基於抽象的資源容器來工作,抽象資源包括內存、cpu、磁盤、網絡等等。在第一個版本中,隻支持內存。

調度器有一個可插拔的策略插件,它負責在不同隊列和應用作業中劃分集群資源。當前的MapReduce調度器例如CapacityScheduler和FairScheduler就是類似的插件。

CapacityScheduler支持層級隊列從而允許更多可預測的集群資源共享。

ApplicationsManager負責接受作業提交,同時負責協商用來執行ApplicationMaster相關的應用程序的容器,還提供服務來支持在失敗時重啟ApplicationMaster容器。

NodeManager是每台機器上的框架agent,它負責支持容器,監控資源使用情況(cpu、內存、磁盤和網絡)以及把這些情況報告給ResourceManager和Scheduler。

ApplicationMaster也負責從Scheduler協調合適的資源容器,同時跟蹤它們的狀態和監控它們的過程。

MRv2保持了與hadoop-1.x的API兼容性。這意味著所有的MapReduce作業都可以不做變更的運行在YARN上,要做的事情隻有一次重新編譯而已。

最後更新:2017-04-26 13:30:52

  上一篇:go 能源利用率逼近理論極限 阿裏巴巴展示液冷黑科技
  下一篇:go [python爬蟲]scrapy+django+mysql爬大眾點評餐廳數據