對於使用者來說只需要書寫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
修改yarn-site.xml檔案mapreduce.framework.namename>
yarnvalue>
property>
vim yarn-site.xml
拷貝配置檔案(yarn-mapred)到其他節點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>
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任務的...