1. 程式人生 > >Yarn工作原理及MapReduce工作流程

Yarn工作原理及MapReduce工作流程

yarn工作原理描述

1.yarn主要包括三部分
1)ResourceManager:負責整個叢集的資源管理和排程,
主要作用有:處理客戶端請求、啟動或監控ApplicationMaster、監控NodeManager、資源的分配與排程
2)ApplicationMaster:負責應用程式相關事務,
主要作用有:負責資料的切分、為應用程式申請資源並分配給內部的任務、任務的監控與容錯
3)NodeManager : 管理YARN叢集中的每個節點,
主要作用有:管理單個節點上的資源、處理來自ResourceManager的命令、處理來自ApplicationMaster的命令
2.yarn的工作模式屬於Master/slave模式,ResourceManager是yarn中的Master,NodeManager 是yarn中的slave,ApplicationMaster則相當於二者之間的媒介,ResourceManager下達命令給ApplicationMaster,ApplicationMaster將命令傳輸給NodeManager 執行。

yarn工作原理圖

這裡寫圖片描述

MapReduce工作流程

1.Driver開發機器將檔案資料切片 ,每一個切片都要執行MapReduce流程
2.使用LineRecorderader每次讀取切片的一行資料,從頭到尾全部讀完,將資料以(key,value)形式提交給Map處理
3.Map依次執行run(),依次執行setup()、迴圈每行資料執行map()方法,最後執行cleanup()方法;通過MapOutPutBuffer方法將資料序列化為byte陣列,放入環形緩衝區,環形緩衝區大小可自行調節;
4.使用partitioner.getpatition方法標記分割槽;
5.當環形緩衝區的資料大於80%時,則會執行溢寫操作,最後小於80%扥資料會直接寫入本地,將資料存放本地磁碟,注意:在執行溢寫操作前會先將資料快速排序;
6,將上述每一部分資料進行檔案合併,進行歸併排序,此時資料已經分割槽;
7.索引檔案,記錄每個分割槽;通過http服務的jetty伺服器將不同切片上每個分割槽的資料放置在對應reduce上進行處理
8.使用merage()合併資料,並將資料歸併排序,執行分組操作;
9.執行reduce,依次執行setup()、迭代reduce()方法逐行寫入資料,,最後執行cleanup()方法;將資料輸出到對應檔案中。

MapReduce工作流程圖

這裡寫圖片描述