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