hadoop筆記1 MR執行過程

2021-07-05 03:23:27 字數 1275 閱讀 6491

mr執行過程包括map、shuffler、reduce,其中map、reduce及shuffler中的分割槽、合併、排序是可以允許程式設計師程式設計參與的。

1、map階段。

split-----map----partition sort and spill to disk------combine。

1)split的目的是應乙個原始檔案分成多個檔案,分別交由不同的map節點處理,檔案塊大小由block size、max size、min size,在hadoop1版本的計算方式是spiltsize = max(minsize,max(blocksize,goalsize));在hadoop2版本中的計算方式為spiltsize = max(minsize,max(blocksize,maxsize)),其中

maxsize = mapred.max.split.size 預設最大值整數值,

minsize = mapred.min.split.size 預設0,goalsize是根據檔案總大小totalsize和maptask個數n計算得到,即goalsize=totalsize/n。

總結:新版本確定檔案塊大小時不再考慮maptask任務的個數,而有配置中的mapred.max.split.size代替。

2)map

3)partition sort and spill to disk

每個map任務計算的結果首先寫到記憶體中,當超過閾值(預設100m)時將啟動乙個執行緒將資料內容溢寫到磁碟上,在溢寫的過程中需要指定每個map輸出的鍵值對對應的reduce編號,即分割槽,預設的分割槽演算法是使用map的key物件的hashcode模reduce個數,該方式不能保證負載均衡,重寫partition類的getpartition方法可自定義分割槽方式,除分割槽外,該過程還要經歷排序過程,預設的排序是按ascii碼排序,可實現writablecomparable介面的compare方法。

4)combine。

每個map任務執行過程中有可能會溢寫生成多個檔案,而map任務結束後需要交結果傳到reduce任務節點,為提高效率需在網路傳輸檔案前將多個小檔案合併成大檔案,combine是map節點本地reduce過程。

2、reduce階段

merge----sort----reduce-----output

在正式執行reduce過程前,需要做一些預處理,首先將不同map節點傳輸過來的檔案合併,然後排序,排序同map階段。

Hadoop執行過程

根據hadoop 的描述,hadoop執行過程分為load map shuffle reduce這四個階段,可以看成是乙個由split itemize map reduce等10個函式或運算元組成的dag。其中每乙個函式或運算元,都可以提供自定義的實現以此來擴充套件hadoop的功能或優化效能。1 ...

hadoop原始碼研究 M R 1

inputformat 將輸入的資料集切割成小資料集 inputsplits,此外 inputformat 中還提供乙個 recordreader 的實現,將乙個 inputsplit 解析成 對提供給 map 函式。預設 textinputformat 針對文字檔案,按行將文字檔案切割成 inpu...

Hadoop的MapReduce執行過程

執行mapreduce的命令 hadoop jarmr執行流程 客戶端提交乙個mr的jar包給jobclient 提交方式 hadoop jar 也就是執行jar裡面的main方法 jobclient通過rpc和jobtracker rm 進行通訊,返回乙個存放jar包的位址 hdfs 和jobid...