MapReduce技術(shù)深入理解_第1頁(yè)
MapReduce技術(shù)深入理解_第2頁(yè)
MapReduce技術(shù)深入理解_第3頁(yè)
MapReduce技術(shù)深入理解_第4頁(yè)
MapReduce技術(shù)深入理解_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余19頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、技術(shù)創(chuàng)新,變革未來(lái)MapReduce技術(shù)深入理解內(nèi)容MapReduce 編程模型MapReduce內(nèi)部邏輯MapReduce輸入格式 MapReduce輸出格式MapReduce1運(yùn)行機(jī)制MapReduce 編程模型(1)以WordCount為例,很多MR程序都可以套用 WordCount的思路,如電商網(wǎng)站中統(tǒng)計(jì)最流行的N 個(gè)搜索詞,幫助優(yōu)化搜索詞提示MapReduce 編程模型(2)map和reduce函數(shù)遵循如下常規(guī)格式:map 函數(shù)將每個(gè)單詞轉(zhuǎn)化為key/value對(duì)輸出,這里key為 每個(gè)單詞,value為詞頻1。(k2,v2)是 map 輸出的key/value 中間結(jié)果對(duì)。redu

2、ce 將相同單詞的所有詞頻進(jìn)行合并,比如將單詞k2,詞頻為list(v2),合并為(k3,v3)。reduce 合并完之后,最 終輸出一系列(k3,v3)鍵值對(duì)MapReduce內(nèi)部邏輯(1)MapReduce內(nèi)部邏輯(2)Split:HDFS 中的數(shù)據(jù)以 Split 方式作為 MapReduce 的 輸入Block 是 HDFS 術(shù)語(yǔ),Split 是 MapReduce 術(shù)語(yǔ)通常1個(gè) Split 對(duì)應(yīng)1個(gè) block,也可能對(duì)應(yīng)多個(gè)block,具 體是由 InputFormat 和壓縮格式?jīng)Q定的默認(rèn)情況下,使用的是 TextInputFormat,這時(shí)1個(gè)Split對(duì) 應(yīng)1個(gè)block,上圖

3、4個(gè)Split對(duì)應(yīng)4個(gè)BlockMapper解析出的數(shù)據(jù)輸出到本地磁盤(pán)上MapReduce內(nèi)部邏輯(3)Map階段由一批同時(shí)運(yùn)行的Map Task 組成,每個(gè) Map Task由3個(gè)部分組成:InputFormat:對(duì)輸入數(shù)據(jù)格式進(jìn)行解析,默認(rèn)為T(mén)extInputFormat,key代表每行偏移量,value代表每行數(shù) 據(jù)內(nèi)容。Mapper:輸入數(shù)據(jù)處理Partitioner:數(shù)據(jù)分組, Mapper 的輸出key會(huì)經(jīng)過(guò) Partitioner 分組選擇不同的Reduce。默認(rèn)Partitioner 會(huì)對(duì) map 輸出的key進(jìn)行hash取模,比如有6個(gè)Reduce Task, 它就是模(mo

4、d)6,如果key的hash值為0,就選擇第0個(gè) Reduce Task。這樣不同的map 對(duì)相同key,它的 hash 值 取模是一樣的MapReduce內(nèi)部邏輯(4)Reduce 階段由一批同時(shí)運(yùn)行的 Reduce Task 組成,每個(gè)Reduce Task由4個(gè)部分組成:Shuffle: Reduce Task 遠(yuǎn)程拷貝每個(gè) map 處理的結(jié)果,從每個(gè) map 中讀取一部分結(jié)果,每個(gè) Reduce Task 拷貝哪 些數(shù)據(jù),是由 Partitioner 決定的Sort:讀取完數(shù)據(jù)后,會(huì)按照key排序,相同的key被分到 一組Reducer:數(shù)據(jù)處理,以WordCount為例,對(duì)相同的ke

5、y計(jì)詞頻數(shù)OutputFormat:數(shù)據(jù)輸出格式, Reducer 的結(jié)果將按照 OutputFormat 格式輸出,默認(rèn)為 TextOutputFormat ,以 WordCount為例,這里的key為單詞,value為詞頻數(shù)MapReduce 內(nèi)部邏輯(5)緩沖區(qū)默認(rèn)為100M,由io.sort.mb屬性控制緩沖區(qū)快要溢出時(shí)(默認(rèn)為緩沖區(qū)大小的80%,由 io.sort.spill.percent屬性控制),寫(xiě)磁盤(pán),最后合并, reduce端也一樣,reduce端拿到的map端數(shù)據(jù)是按key排序MapReduce輸入格式MR輸入格式FileInputFormat所有使用文件作為數(shù)據(jù)源的 I

6、nputFormat 的基類(lèi)作用是設(shè)置作業(yè)的輸入文件位置FileInputFormat 提供了四種靜態(tài)方法來(lái)設(shè)定 Job 的輸入路徑MR輸入格式TextInputFormat默認(rèn)的 InputFormat鍵是存儲(chǔ)該行在Block中的字節(jié)偏移量值是這行的內(nèi)容,不包括任何行終止符MR輸入格式KeyValueTextInputFormat每一行被分隔符(缺省是t)分割為key和valuekey和value都是Text類(lèi)型通 過(guò) mapreduce.input.keyvaluelinere cordreader.key.value.separator設(shè)定分隔符MR輸入格式NLineInputForma

7、t每個(gè)Mapper 收到固定行數(shù)的輸入鍵是存儲(chǔ)該行在Block中的字節(jié)偏移量值是這行的內(nèi)容,不包括任何行終止符N值由mapreduce.input.lineinputformat.linespermap 屬性設(shè)定。MapReduce輸出格式MR輸出格式 文本輸出默認(rèn)輸出格式是 TextOutputFormat每條記錄寫(xiě)為文本行每個(gè)鍵/值對(duì)由制表符進(jìn)行分割設(shè)定 mapreduce.output.textoutputformat.separator 屬性 改變默認(rèn)的分隔符NullWritable 可省略輸出的鍵或值兩者都省略,相當(dāng)于 NullOutputFormat ,什么也不輸出MapReduc

8、e1運(yùn)行機(jī)制(1)和HDFS一樣,MapReduce也是采用Master/Slave的架構(gòu)MapReduce1包含4個(gè)部分:Client、JobTracker、TaskTracker和TaskMapReduce1運(yùn)行機(jī)制(2)MapReduce1運(yùn)行機(jī)制(3)MapReduce1運(yùn)行機(jī)制(4)Client將JAR文件、配置參數(shù)Configuration、計(jì)算分片、Distributed Cache 文件存儲(chǔ)在HDFS向 JobTracker 申請(qǐng)JobIdJobTracker:負(fù)責(zé)資源監(jiān)控和作業(yè)調(diào)度監(jiān)控所有TaskTracker 與job的健康狀況,一旦發(fā)現(xiàn)失 敗,就將相應(yīng)的任務(wù)轉(zhuǎn)移到其他節(jié)點(diǎn)

9、跟蹤任務(wù)的執(zhí)行進(jìn)度、資源使用量等信息,并將這些信息告訴作業(yè)調(diào)度器調(diào)度器會(huì)在資源出現(xiàn)空閑時(shí),選擇合適的任務(wù)使用這些資源MapReduce1運(yùn)行機(jī)制(5)TaskTracker:周期性地通過(guò)Heartbeat 將本節(jié)點(diǎn)上資源的使用情況 和任務(wù)的運(yùn)行進(jìn)度匯報(bào)給JobTracker接收J(rèn)obTracker 發(fā)送過(guò)來(lái)的命令并執(zhí)行相應(yīng)的操作( 如啟動(dòng)新任務(wù)、殺死任務(wù)等)使用“slot”等量劃分本節(jié)點(diǎn)上的資源量,“slot”代表計(jì)算 資源(CPU、內(nèi)存等)分配給Task 使用Task:分為Map Task 和Reduce Task 兩種,均由TaskTracker 啟動(dòng)Map Task 和Reduce Task 分別使用Map slot 和Reduce slotMapReduce1運(yùn)行機(jī)制(6) 容錯(cuò)JobTracker:存在單點(diǎn)故障,一旦出現(xiàn)故障,整個(gè)集群 就不可用,出現(xiàn)故障之后重啟一下,再把作業(yè)重新提交就可 以了,它不會(huì)像 HDFS 那樣出現(xiàn)數(shù)據(jù)的丟失TaskTracker:周期性向 JobTracker 匯報(bào)心跳,如果一 定時(shí)間內(nèi)沒(méi)有匯報(bào),JobTracker 就認(rèn)為該TaskTracker 掛掉 了,或者TaskTracker上運(yùn)行的Task失敗次數(shù)太多,就會(huì)把 上面所有任務(wù)調(diào)度到其它TaskTracker上Task:MapTask和ReduceTask

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論