|
大數(shù)據(jù)干貨分享Mapreduce中job的提交流程 一、MapReduce的定義: MapReduce是面向大數(shù)據(jù)并行處理的計算模型、框架和平臺。 它的主要思想是:map(映射)和reduce(歸約) 1、MapReduce是一個基于集群的高性能并行計算平臺 2、MapReduce是一個并行計算與運行軟件框架 3、MapReduce是一個并行程序設(shè)計模型與方法 二、MapReduce的主要功能: 1、數(shù)據(jù)劃分和計算任務(wù)調(diào)度 2、數(shù)據(jù)/代碼互定位 3、系統(tǒng)優(yōu)化 4、出錯檢測和恢復(fù) 三、計算任務(wù)調(diào)度中job的提交流程 遇到的問題: 在學(xué)到這的時候,我們會面臨一些問題: 1、首先面臨的問題就是數(shù)據(jù)是如何分布的? 2、一個超大文件按照那種方式切割下來,分別丟到不同的機器上? 3、按照某種方式切割下來后,是如何丟到不同機器上去的? 4、某個機器分配到什么任務(wù)?如何分配的? 5、拿到任務(wù)后如何解決的? 6、帶著這些問題,我們就需要學(xué)習(xí)一下job的提交流程,從該流程中去尋找我們問題的答案。 Job的具體提交流程如下圖所示:
![]() 我們用文字概括如下: 1、 客戶端提交job到resourcemanager(rm) 2、 rm將其放到等待隊列,返回jobid和文件路徑信息 3、 客戶端將所需要計算的資源,上傳到hdfs上(包括job信息和分片信息)的存儲路徑 4、 客戶端給rm返回一個資源準備好的信息,job放入等待隊列,告訴他可以啟動job,等待rm進行調(diào)度 5、 rm在調(diào)度之前,申請一個資源nodemanager(nm),nm啟動container,它接收到任務(wù)到hdfs上將資源獲取到container,然后跟客戶端交互已經(jīng)得到需要計算的資源,客戶端向其發(fā)送啟動applicationmaster(am)的命令 6、 am啟動起來后,通過解析分片信息向rm申請運算資源(maptask) 7、 rm收到信息查看nm資源情況,通過負載均衡分配所需要的機器,nm每一次心跳都會從job的描述信息查詢自己所分配到的任務(wù),接收到任務(wù)消息的機器會從hdfs上拿取計算資源,然后跟am交互,am發(fā)送啟動maptask的命令。 8、 Maptask結(jié)束后,通知am,然后釋放maptask資源,am向rm發(fā)出信息,申請reducetask的資源 9、 rm分配資源,am啟動reducetask 10、 reducetask收集maptask完成的數(shù)據(jù),啟動reduce邏輯。執(zhí)行完成后,通知am,然后釋放reducetask的資源。am通知rm。am釋放資源 |
|
|