MapReduce流程講解以及原始碼分析

2022-08-21 18:45:11 字數 2089 閱讀 5229

對於使用者來說只需要書寫map操作和reduce操作

mapreduce計算資料的時間較長

整個過程分為map和reduce,map負責處理原始資料,reduce負責處理map資料

1.map過程

block:塊-->物理上的概念,預設是128m

split:切片-->本次map任務要處理的資料的大小;預設大小等於block的大小

maptask:map的任務-->乙個split對應乙個maptask

處理的都是切片資料,屬於最原始的資料

kvbuffer:maptask臨時結果輸出的目的地.它是記憶體中的一塊環形的空間,預設大小是100m;設定閾值,預設大小是80%,達到閾值之後進行溢寫

spill:將環形資料緩衝區的臨時結果寫出到硬碟上;如果檔案足夠大,那麼會溢寫出很多的小檔案,大概80m左右

partation:分割槽的數量和reduce的數量完全相同;

溢寫的時候回提前計算出key所對應的的分割槽reduce

sort:排序先按照partation進行排序;然後按照key進行快速排序

merge:就是將溢寫的多個小檔案合併成乙個大檔案;使用歸併演算法,先按照分割槽,然後按照key進行歸併排序

2.reduce

fetch:從maptask節點拉取reduce需要的資料

reducetask:我們必須將key相同臨時資料拉取到同乙個reducetask中進行計算;乙個箱子裡可以有不同的key,但是相同key必須在乙個箱子裡

output:因為每次產生結果不一樣,為了防止產生的檔案過大出現問題;每次產生的結果會預設存放到hdfs上;

3.搭建mapreduce集群

搭建的環境完全基於ha的環境

修改mapred-site.xml檔案

cp mapred-site.xml.template mapred-site.xml

vim mapred-site.xml

mapreduce.framework.namename>

yarnvalue>

property>

修改yarn-site.xml檔案

vim yarn-site.xml

yarn.nodemanager.aux-servicesname>

mapreduce_shufflevalue>

property>

yarn.resourcemanager.ha.enabledname>

truevalue>

property>

yarn.resourcemanager.cluster-idname>

mr_shsxtvalue>

property>

yarn.resourcemanager.ha.rm-idsname>

rm1,rm2value>

property>

yarn.resourcemanager.hostname.rm1name>

node03value>

property>

yarn.resourcemanager.hostname.rm2name>

node01value>

property>

yarn.resourcemanager.zk-addressname>

node01:2181,node02:2181,node03:2181value>

property>

拷貝配置檔案(yarn-mapred)到其他節點

scp mapred-site.xml yarn-site.xml root@node02:pwd

scp mapred-site.xml yarn-site.xml root@node02:`pwd

先啟動zookeeper

zkserver.sh start

zkserver.sh status

啟動dfs

start-all.sh( start-dfs.sh start-yarn.sh)

在備用節點輸入命令

yarn-daemon.sh start resourcemanager

1.1建立job類

MapReduce執行流程

mapreduce的大體流程是這樣的,如圖所示 由可以看到mapreduce執行下來主要包含這樣幾個步驟 1.首先對輸入資料來源進行切片 2.master排程worker執行map任務 3.worker讀取輸入源片段 4.worker執行map任務,將任務輸出儲存在本地 5.master排程work...

MapReduce整體流程

由於map是並行地對輸入的檔案集進行操作,所以它的第一步 filesplit 就是把檔案集分割成一些子集.如果乙個單個的檔案大到它已影響到查詢效率時,它會被分割成一些小的分割體。要指出的是分割這個一步是不知道輸入檔案的內部邏輯結構的,比如,以行為邏輯分割的文字檔案會被以任意的位元組界限分割,所以這個...

MapReduce執行流程

1.客戶端提交作業給yarn集群,rm接受客戶端所提交的作業。2.rm根據作業所要處理的檔案來決定map任務在哪些節點上執行,然後確定reduce任務在哪些節點 nn 上執行。3.rm分配map任務和reduce任務到相應的節點上。4.map任務開始執行,將執行結果臨時儲存到本地 執行過map任務的...