《Hadoop權(quán)威指南》書摘-MapReduce概述

image

MapReduce是一種可用于數(shù)據(jù)處理的編程模型,MapReduce程序本質(zhì)上是并行運行的,因此可以將大規(guī)模數(shù)據(jù)分析任務(wù)分發(fā)給任何一個擁有足夠多機器的數(shù)據(jù)中心,它的優(yōu)勢在于處理大規(guī)模數(shù)據(jù)

map和reduce

MapReduce任務(wù)可以分為兩個處理階段:map階段和reduce階段,每個階段都以鍵值對作為輸入和輸出


image

一些概念

job
MapReduce job 是客戶端需要執(zhí)行的一個工作單元,它包括輸入數(shù)據(jù),MapReduce程序和配置信息

task
Hadoop將 job 分成若干 task 執(zhí)行,task包括兩類:map任務(wù)和reduce任務(wù),這些任務(wù)運行在集群的節(jié)點上,并通過YARN進行調(diào)度,如果任務(wù)失敗,它將在另一個不同的節(jié)點上自動重新調(diào)度運行

split
hadoop將MapReduce的輸入數(shù)據(jù)劃分成等長的小數(shù)據(jù)塊,成為split,hadoop為每個分片創(chuàng)建一個map任務(wù)

對于大多數(shù)作業(yè)來說,一個合理的分片大小趨向于HDFS的一個塊的大小,默認是123MB

數(shù)據(jù)本地化優(yōu)化
Hadoop在儲存有輸入數(shù)據(jù)(HDFS中的數(shù)據(jù))的節(jié)點上運行map任務(wù),可以獲得最佳性能,因為它無需使用寶貴的集群帶寬資源,但是有時儲存該分片的hdfs數(shù)據(jù)塊副本所在的節(jié)點可能在運行其他的map任務(wù),此時調(diào)度需要從某一個數(shù)據(jù)塊所在的機架中的一個節(jié)點上尋找一個空閑的map槽(slot)來運行該map任務(wù)分片,僅僅在非常偶然的情況下會發(fā)生,這將導(dǎo)致機架之間發(fā)生網(wǎng)絡(luò)傳輸

思考題:為什么最近分片大小應(yīng)該與塊大小相同

思考題:為什么map任務(wù)將其輸出寫入本地磁盤,而不是HDFS

reduce

reduce任務(wù)并不具備數(shù)據(jù)本地化優(yōu)勢,單個reduce任務(wù)的輸入通常來自于所有mapper的輸出,reduce的輸出通常儲存在HDFS中以實現(xiàn)可靠儲存,reduce輸出的每個HDFS塊,第一個副本儲存在本地節(jié)點上,其他復(fù)本出于可靠性考慮儲存在其他機架的節(jié)點上

reduce數(shù)據(jù)流圖


image

reduce任務(wù)的數(shù)量并非由輸入數(shù)據(jù)的大小決定,相反是獨立的

partition
如果有好多個reduce任務(wù),每個map任務(wù)就會針對輸出進行分區(qū)(partition),即為每個reduce任務(wù)建一個分區(qū),每個分區(qū)有許多鍵,但每個建對應(yīng)的鍵值對記錄都在同一個分區(qū)中,分區(qū)可以由用戶定義的分區(qū)函數(shù)控制,但通常默認的partitioner通過哈希函數(shù)來分區(qū),很高效

image

shuffle
多個reduce任務(wù)的數(shù)據(jù)流如圖,map和reduce任務(wù)之間的數(shù)據(jù)流成為shuffle(混洗),因為每個reduce任務(wù)的輸入都來自許多map任務(wù),shuffle一般比圖中所示的更負責(zé),而且調(diào)整shuffle參數(shù)對作業(yè)總執(zhí)行時間影響比較大

當數(shù)據(jù)完全可以并行,無需shuffle時,可能出現(xiàn)無reduce任務(wù)的情況,這種情況下,唯一的非本地節(jié)點數(shù)據(jù)傳輸是map任務(wù)

combiner函數(shù)
能幫助減少mapper和reducer之間的數(shù)據(jù)傳輸量

本文完

歡迎關(guān)注我的微信訂閱號:


歡迎關(guān)注我的開發(fā)者頭條獨家號搜索:269166

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

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

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