mapreduce接觸兩周了,跟剛剛接觸懵逼的狀態(tài)相比局待,現(xiàn)在好像有了更深刻的體會绰姻,體會到大數(shù)據(jù)的牛逼之處,稍微對一些大數(shù)據(jù)相關(guān)的實用案例有點理解官紫。
下面對近期所學(xué)的一些mapreduce的相關(guān)知識稍稍進(jìn)行一個總結(jié)
【1】常見的計算框架
mapreduce 離線計算框架
storm 流式計算框架(進(jìn)行實時計算)
spark 內(nèi)存計算框架(進(jìn)行快速計算)
【2】mapreduce分布式計算的設(shè)計理念
移動計算而不移動數(shù)據(jù)
【3】mapreduce處理的數(shù)據(jù)源和目的地分別是肛宋?
mr所處理的數(shù)據(jù)源和所生成的計算結(jié)果均存儲在HDFS分布式文件系統(tǒng)上
【4】mapreduce的幾個階段
1> 數(shù)據(jù)源 HDFS
2>split碎片化 進(jìn)行數(shù)據(jù)碎片
3>map部分 (分)
4>shuffing部分 ****重點(合并,排序)
5>reduce部分 (合)
6>output 輸出結(jié)果數(shù)據(jù)
【5】mr離線計算框架
mr作為計算框架大概可分為三個大模塊(input束世、計算模型酝陈、output);
input和output是原始數(shù)據(jù)的輸入和結(jié)果數(shù)據(jù)的輸出毁涉,并且數(shù)據(jù)的存儲位置均在HDFS上沉帮;
而整個環(huán)節(jié)的重點則是計算模型的實現(xiàn),數(shù)據(jù)模型也可細(xì)分為三個模塊階段(map贫堰、shuffle穆壕、reduce),
>map 分割數(shù)據(jù)
>shuffle 計算排序
>reduce 合并數(shù)據(jù)
【6】shuffle階段
位置:shuffle存在于map和reduce函數(shù)之間其屏,進(jìn)行數(shù)據(jù)的計算和排序
功能:
1:mapp而與reduce的一個中間步驟
2:可以把mapper的輸出按照某種key值重新切分成幾份和組合成幾份喇勋,把key值符合某種范圍的輸出并送到特定的reduce函數(shù)去處理
3:可以簡化reduce過程
4:大多數(shù)功能由框架自動完成
【7】shuffle詳
map(內(nèi)存)數(shù)據(jù) ——> partitaion,sort,split to disk ——> disk(磁盤)數(shù)據(jù)
注:
shuffle的整個過程都在map節(jié)點中,其將map的內(nèi)存輸出數(shù)據(jù)分區(qū)按照partation的規(guī)則偎行,然后機(jī)械能排序川背,再寫入磁盤disk中,(其中partation的
默認(rèn)規(guī)則以hash摸運算為準(zhǔn)蛤袒,當(dāng)然也可以由程序員自行編寫)
【8】partation分區(qū):
分區(qū)時為了把map的數(shù)據(jù)進(jìn)行負(fù)載均衡熄云,解決數(shù)據(jù)傾斜問題,在分給不同的reduce進(jìn)行計算處理妙真,以避免各個reduce所處理的數(shù)據(jù)大小相差過大
【9】map數(shù)據(jù)不會出現(xiàn)數(shù)據(jù)傾斜皱碘,為什么?
map 的數(shù)據(jù)來源來自于HDFS隐孽,而HDFS的數(shù)據(jù)已經(jīng)將數(shù)據(jù)分為block塊癌椿,默認(rèn)為64M健蕊,
相反reduc是接收數(shù)據(jù)的環(huán)境,所以必須shuffle進(jìn)行數(shù)據(jù)處理踢俄,避免數(shù)據(jù)在進(jìn)入reduce時出現(xiàn)數(shù)據(jù)傾斜問題
【10】mr架構(gòu)
mapreduce也采用主從結(jié)構(gòu):
主:JobTracker
負(fù)責(zé)調(diào)度分配每一個子任務(wù)task運行于TaskTracker上缩功,如果發(fā)現(xiàn)有失敗的task就重新分配其任務(wù)到其他節(jié)點,每一個hadoop集群中只有一個JobTracker都办,一般運行在master節(jié)點上
從:TaskTracker
TaskTracker主動與JobTracker通信嫡锌,接收作業(yè),并負(fù)責(zé)直接執(zhí)行每一個任務(wù)琳钉,為了減少網(wǎng)路帶寬势木,TaskTracker最好運行在HDFS的DataNode節(jié)點上