mr

分區(qū)

1. 作用用于將數(shù)據(jù)進(jìn)行分類

2一個(gè)分區(qū)要對(duì)應(yīng)一個(gè)ReduceTask,每一個(gè)ReduceTask都會(huì)產(chǎn)生一個(gè)結(jié)果文件

3. ReduceTask的數(shù)量可以多于分區(qū)的數(shù)量

4自定義分區(qū),那么需要寫一個(gè)類繼承Partitioner,然后重寫其中的方法

一、數(shù)據(jù)本地化策略

1. 當(dāng)JobTracker收到提交的MR程序之后,會(huì)訪問NameNode

2. NameNode會(huì)將文件的描述信息返回給JobTracker

3. JobTracker會(huì)根據(jù)描述信息對(duì)文件進(jìn)行切片。

4. 根據(jù)切片的數(shù)量計(jì)算MapTask的數(shù)量,然后JobTracker將MapTask分配有到對(duì)應(yīng)的Block的節(jié)點(diǎn)上,這個(gè)過程稱之為數(shù)據(jù)本地化策略

.數(shù)據(jù)本地化策略的目的是為了減少網(wǎng)絡(luò)的傳輸

二、job執(zhí)行流程

1. 客戶端提交jar包 - hadoop jar xxx.jar 時(shí),校驗(yàn)通過會(huì)分配一個(gè)job和一個(gè)HDFS地址,將地址返回給客戶端

2. 客戶端將程序提交到相應(yīng)的HDFS地址上

3. 提交job,開始執(zhí)行MapReduce程序

4. 將job由JobTracker執(zhí)行,然后JobTracker將文件進(jìn)行切片,并且計(jì)算MapTask以及ReduceTask的數(shù)量

5. JobTracker上有了任務(wù),就要進(jìn)行任務(wù)的分配,在分配/領(lǐng)取任務(wù)的時(shí)候,MapTask要滿足數(shù)據(jù)的本地化;ReduceTask會(huì)分配到相對(duì)空閑的節(jié)點(diǎn)上

6. TaskTracker將jar包下載到對(duì)應(yīng)的節(jié)點(diǎn)上,開始執(zhí)行MapTask或者ReduceTask - 體現(xiàn)了邏輯移動(dòng)而數(shù)據(jù)固定的思想

(計(jì)算向數(shù)據(jù)移動(dòng))

7. TaskTracker會(huì)在當(dāng)前節(jié)點(diǎn)上開啟一個(gè)JVM子進(jìn)程執(zhí)行MapTask或者ReduceTask,每執(zhí)行完一個(gè)MapTask或者ReduceTask就會(huì)關(guān)閉這個(gè)JVM子進(jìn)程;如果當(dāng)前節(jié)點(diǎn)有多個(gè)MapTask,那么每執(zhí)行一個(gè)MapTask都會(huì)開啟一個(gè)JVM子進(jìn)程

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容