好程序員大數據分享MapReduce中job的提交流程node
1、MapReduce的定義程序員
MapReduce是面向大數據並行處理的計算模型、框架和平臺。app
它的主要思想是:map(映射)和reduce(歸約)負載均衡
1)MapReduce是一個基於集羣的高性能並行計算平臺框架
2)MapReduce是一個並行計算與運行軟件框架性能
3)MapReduce是一個並行程序設計模型與方法學習
2、 MapReduce的主要功能:大數據
2、MapReduce的主要功能優化
1)數據劃分和計算任務調度設計
2)數據/代碼互定位
3)系統優化
4)出錯檢測和恢復
3、計算任務中job的提交流程
在學到這的時候,咱們會面臨一些問題:
1)首先面臨的問題就是數據是如何分佈的?
2)一個超大文件按照那種方式切割下來,分別丟到不一樣的機器上?
3)按照某種方式切割下來後,是如何丟到不一樣機器上去的?
4)某個機器分配到什麼任務?如何分配的?
5)拿到任務後如何解決的?
帶着這些問題,咱們就須要學習一下job的提交流程,從該流程中去尋找咱們問題的答案。
Job的具體提交流程,咱們用文字歸納以下:
一、客戶端提交job到resourcemanager(rm)。
二、rm將其放到等待隊列,返回jobid和文件路徑信息。
三、客戶端將所須要計算的資源,上傳到hdfs上(包括job信息和分片信息)的存儲路徑。
四、客戶端給rm返回一個資源準備好的信息,job放入等待隊列,告訴他能夠啓動job,等待rm進行調度。
五、rm在調度以前,申請一個資源nodemanager(nm),nm啓動container,它接收到任務到hdfs上將資源獲取到container,而後跟客戶端交互已經獲得須要計算的資源,客戶端向其發送啓動applicationmaster(am)的命令。
六、am啓動起來後,經過解析分片信息向rm申請運算資源(maptask)。
七、rm收到信息查看nm資源狀況,經過負載均衡分配所須要的機器,nm每一次心跳都會從job的描述信息查詢本身所分配到的任務,接收到任務消息的機器會從hdfs上拿取計算資源,而後跟am交互,am發送啓動maptask的命令。
八、Maptask結束後,通知am,而後釋放maptask資源,am向rm發出信息,申請reducetask的資源。
九、rm分配資源,am啓動reducetask。
十、reducetask收集maptask完成的數據,啓動reduce邏輯。執行完成後,通知am,而後釋放reducetask的資源。am通知rm。am釋放資源。