舊的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上拷貝資源到本地...