Hadoop過程詳解

2021-09-11 15:17:44 字數 893 閱讀 1305

(1)split分片-->map

由上圖所示,是hadoop的分片過程,在hadoop中預設每個「塊」是128m,從圖中可以看出輸入了兩個檔案,第乙個檔案比較大,占用了2+個塊,第二個檔案比較小(<128m);所以,第乙個檔案被分為3個分片:split1~3,第二個檔案單獨被分為乙個分片split4。 一般來說乙個分片split對應乙個map任務,所以map任務數也為4個。但是map任務數量其實並不是這麼簡單,她與很多因素有關,一般最好將乙個datanode中的map任務數控制在10~100之間。 由此可以看出,hadoop的hdfs檔案系統更加適合處理大檔案,不適合處理有大量小檔案的情況,這時最好將小資料進行壓縮、合併等操作。 ####(2)map-->shufflr-->reduce 如果分得更細一些,這其中的過程可以表示為:

map-->combine-->網路混洗-->shuffle-->reduce

map輸出大量鍵值對後,需要經過網路混洗,然後經過shuffle進入reduce,但是大量的散片鍵值對會造成巨大的網路壓力,所以在進行網路傳輸之前,要對map輸出的鍵值對進行一輪排序、合併,再進行網路混洗,這個過程就是combine。過程示意圖如下:

在得到鍵值對後,分別對每個map函式輸出的鍵值對進行排序(按字母順序),然後將鍵值相同的鍵值對進行合併。也可以將combine認為是對map結果的「本地reduce操作」。

(3)map-->reduce

由上圖所示,map輸出資料儲存到記憶體緩衝區,多餘溢位的資料將會儲存到磁碟中,其中不同的顏色代表不同的鍵值,然後是將每個map輸出的資料以鍵值為標準合併成大資料; 然後資料進入partition中,將資料按鍵值合併(不累加,列表形式)輸出到相應的reduce中。 注意:在乙個mapreduce中,partition、reduce任務、輸出結果的數量是相同的

Hadoop系列 Shuffle過程詳解

ok,看到這裡時,大家可以先停下來想想,如果是自己來設計這段shuffle過程,那麼你的設計目標是什麼。我想能優化的地方主要在於減少拉取資料的量及盡量使用記憶體而不是磁碟。我的分析是基於hadoop0.21.0的原始碼,如果與你所認識的shuffle過程有差別,不吝指出。我會以wordcount為例...

Hadoop執行過程

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

Hadoop配置詳解

hadoop配置 一 hadoop集群模式 hadoop集群共有三種模式 1 單機模式 standalone 2 偽分布式模式 pseudo distributed 3 完全分布式模式 fully distributed 二 三種模式的具體配置 component property standalo...