MapReduce計算框架框架
將計算過程分爲兩個階段:Map和Reducespa
Map階段並行處理輸入數據;blog
Reduce階段對Map結果進行彙總資源
Shuffle鏈接Map和Reduce兩個階段it
Map Task將數據寫到本地磁盤;io
Reduce Task從每一個Map Task上讀取一份數據;ast
僅適合離線批處理監控
具備較好的容錯性和擴展性;原理
適合批處理任務;擴展
缺點:
啓動Map/Reduce任務開銷大、過多使用磁盤致使IO頻繁等;
MapReduce On YARN(MRv2)
YARN負責資源管理和調度;ApplicationMaster負責任務管理;
MRAppMaster任務調度:
1)YARN將資源分配給MRAppMaster;
2)MRAppMaster進一步將資源分配給內部的任務;
MRAppMaster容錯:
1)MRAppMaster失敗後,由YARN從新啓動;
2)任務失敗後,MRAppMaster從新申請資源;
MapReduce On YARN工做原理
1)用戶向YARN中提交應用程序/做業,其中包括ApplicaitonMaster程序、啓動ApplicationMaster的命令、用戶程序等;
2)ResourceManager爲做業分配第一個Container,並與對應的NodeManager通訊,要求它在這個Containter中啓動該做業的ApplicationMaster;
3)ApplicationMaster首先向ResourceManager註冊,這樣用戶能夠直接經過ResourceManager查詢做業的運行狀態;而後它將爲各個任務申請資源並監控任務的運行狀態,直到運行結束。即重複步驟4-7;
4)ApplicationMaster採用輪詢的方式經過RPC請求向ResourceManager申請和領取資源;
5)一旦ApplicationMaster申請到資源後,便與對應的NodeManager通訊,要求它啓動任務;
6)NodeManager啓動任務;
7)各個任務經過RPC協議向ApplicationMaster彙報本身的狀態和進度,以讓ApplicaitonMaster隨時掌握各個任務的運行狀態,從而能夠在任務失敗時從新啓動任務;
在做業運行過程當中,用戶可隨時經過RPC向ApplicationMaster查詢做業當前運行狀態;
8)做業完成後,ApplicationMaster向ResourceManager註銷並關閉本身;