關于mapReduce過程解釋以及疑惑,歡迎吐槽與解讀

首先當我在hdfs上存入一個很大的10g文件的時候,首先10g文件會按照128分成80個block,假設我有10個節(jié)點,其中一個節(jié)點是namenode,那么還有9個節(jié)點是datanode,9個節(jié)點共同組成了hdfs,80個block放入hdfs時候是隨機放入到9個節(jié)點的(不太確定,能告訴我嗎?),然后按照規(guī)則產(chǎn)生副本(這個不說了,網(wǎng)上資料很多)。

mapReduce過程:用戶編寫的MapReduce程序通過Client提交到JobTracker端 ,JobTracker端獲取資源并進行分配,首先會為80個block生成80個map,并且map任務會均勻的分布在各個節(jié)點中(這個也不確定,瞎猜的,哈哈),執(zhí)行map任務時,map會提取想要的block(提取的時候會有相應的原則,如本地化優(yōu)勢,map會優(yōu)先提取本節(jié)點上的數(shù)據(jù),如果map所在的節(jié)點沒有數(shù)據(jù)會提取其他節(jié)點上的,會有網(wǎng)絡傳輸),然后執(zhí)行map任務,map處理完進行輸出,輸出到緩沖區(qū),JobTracker再創(chuàng)建reduce(這個task,好像創(chuàng)建map的時候就創(chuàng)建了,不理解為什么這樣,不應該是map之后才reduce嗎,為什么map task和reduce task一起都創(chuàng)建了,這樣不是浪費資源嗎,執(zhí)行maptask的時候 , reduce task 所在的節(jié)點不就閑置了嗎?有大神解讀嗎?? ?還有創(chuàng)建reduce的個數(shù)是怎么定的),各個節(jié)點上的reduce,會按key的hash值后對Reduce task的數(shù)量取模,模相同的放到一個reduce(會有網(wǎng)絡傳輸問題),然后輸出到hdfs上

優(yōu)化方面,1.既然reduce會把相同的key都提取,為什么在切分的時候不把相同的key切分到一個map里,只有在reduce的時候,就不需要網(wǎng)絡傳輸了

? ? ? ? ? ? ? ? 2.為什么在shuffle的過程中,進行各種排序,這個不是浪費時間嗎,有什么實際的意義嗎


求大神指點

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

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

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