YARN基本原理和YARN工作流程

2021-09-11 04:22:04 字數 3238 閱讀 1100

舊的mapreduce架構

基本概念

舊的架構的問題

jobtracker是mapreduce的集中處理點,存在單點故障

jobtracker完成了太多的任務,造成了過多的資源消耗,當mapreduce job 非常多的時候,會造成很大的記憶體開銷。這也是業界普遍總結出老hadoop的mapreduce只能支援4000 節點主機的上限

在tasktracker端,以map/reduce task的數目作為資源的表示過於簡單,沒有考慮到cpu/ 記憶體的占用情況,如果兩個大記憶體消耗的task被排程到了一塊,很容易出現oom

在tasktracker端,把資源強制劃分為map task slot和reduce task slot, 如果當系統中只有map task或者只有reduce task的時候,會造成資源的浪費,也就集群資源利用的問題

在hadoop2.0中, yarn負責管理mapreduce中的資源(記憶體, cpu等)並且將其打包成container. 這樣可以精簡mapreduce, 使之專注於其擅長的資料處理任務, 將無需考慮資源排程. yarn會管理集群中所有機器的可用計算資源. 基於這些資源yarn會排程應用(比如mapreduce)發來的資源請求, 然後yarn會通過分配container來給每個應用提供處理能力

基本概念

resourcemanager

nodemanager

負責與rm排程器協商獲取資源(container)

將得到的任務進一步分配給內部的任務(資源的二次分配)

與nm通訊以啟動/停止任務

監控所有任務執行狀態,並在任務執行失敗時重新為任務申請資源以重啟任務

container

在hadoop集群中,平衡記憶體(ram)、處理器(cpu核心)和磁碟的使用是至關重要的,合理規劃以免某一項引起瓶頸制約。一般的建議是,一塊磁碟和乙個cpu核心上配置兩個container會達到集群利用率的最佳平衡,container是yarn中處理能力的基本單元, 是對記憶體, cpu等的封裝

從可用的硬體資源角度看,要調整群集每個節點yarn和mapreduce的記憶體配置到合適的資料,應注意以下幾個重要的元素:

每個節點的記憶體總量

建議保留系統記憶體

建議保留hbase的記憶體

4 gb

1 gb

1 gb

8 gb

2 gb

1 gb

16 gb

2 gb

2 gb

24 gb

4 gb

4 gb

48 gb

6 gb

8 gb

64 gb

8 gb

8 gb

72 gb

8 gb

8 gb

96 gb

12 gb

16 gb

128 gb

24 gb

24 gb

256 gb

32 gb

32 gb

512 gb

64 gb

64 gb

保留記憶體=保留系統記憶體+保留hbase記憶體(如果hbase是在同乙個節點)

下面的計算是確定每個節點的container允許的最大數量。

container數量=min (2cores, 1.8disks, (可用記憶體)/最低container的大小)

最低container的大小 這個值是依賴於可用的ram數量——在較小的儲存節點,最小的container的大小也應較小。下面的表列出了推薦值:

每個節點的總記憶體

建議的最低container的大小

小於 4 gb

256 mb

4 gb 到 8 gb

512 mb

8 gb 到 24 gb

1024 mb

24 gb 以上

2048 mb

最後計算的每個container的記憶體大小是

每個container的記憶體大小 = max(最小container記憶體大小, (總可用記憶體) /container數))

新舊架構對比

yarn基本流程

nodemanager為任務設定好執行環境(包括環境變數、jar包、二進位制程式等)後,將任務啟動命令寫到乙個指令碼中,並通過執行該指令碼啟動任務

yarn排程器scheduler

理想情況下,我們應用對 yarn 資源的請求應該立刻得到滿足,但現實情況資源往往是

有限的,特別是在乙個很繁忙的集群,乙個應用資源的請求經常需要等待一段時間才能的到

相應的資源。在yarn中,負責給應用分配資源的就是scheduler。其實排程本身就是乙個

難題,很難找到乙個完美的策略可以解決所有的應用場景。為此yarn提供了多種排程器

和可配置的策略供我們選擇。在 yarn 中有三種排程器可以選擇:fifo scheduler ,capacity scheduler,fair scheduler。

三種排程器基本原理

配置檔案位置任務失敗

執行時異常或者jvm退出都會報告給am

通過心跳檢查任務的timeout,會檢查多次(可配置)才判斷該任務是否有效

失敗的任務或者作業都有am重新執行

am 定時傳送心跳訊號到rm,通常一旦am失敗,就認為失敗,但是也可以通過配置多次失敗才算失敗

nodemanager失敗

nodemanager定時傳送心跳到resourcemanager,如果超過一段時間沒有收到心跳訊息,resourcemanager就會將其移除

resourcemanager失敗

通過checkpoint機制,定時將其狀態儲存到磁碟,然後失敗的時候,重新執行

通過zookeeper同步狀態和實現透明的ha

八 Hadoop基本原理總結 Yarn

1 resourcemanager 2 nodemanager 他負責進行資料切分 為當前應用程式向resourcemanager去申請資源 也就是container 並分配給具體的任務 與nodemanager通訊,用來啟停具體的任務,任務執行在container中 而任務的監控和容錯 4 con...

YARN的工作原理詳解

yarn是乙個集群資源的管理與任務排程的分布式框架 官網解釋如下 hadoop yarn a framework for jobschedulingandcluster resourcemanagement.yarn的工作原理 1.客戶端提交應用程式給resourcemanager 其實是每個con...

Yarn的工作機制原理

2 工作機制詳解 0 mr程式提交到客戶端所在的節點。2 rm將該應用程式的資源路徑返回給yarnrunner。3 該程式將執行所需資源提交到hdfs上。5 rm將使用者的請求初始化成乙個task。6 其中乙個nodemanager領取到task任務。8 container從hdfs上拷貝資源到本地...