MapReduce技術深入理解_第1頁
MapReduce技術深入理解_第2頁
MapReduce技術深入理解_第3頁
MapReduce技術深入理解_第4頁
MapReduce技術深入理解_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論