map端會處理輸入資料並產生中間結果,這個中間結果會寫到本地磁碟,而不是hdfs。每個map的輸出會先寫到記憶體緩衝區中,當寫入的資料達到設定的閾值時,系統將會啟動乙個執行緒緩衝區的資料寫到磁碟,這個過程叫做spill。
在spill寫入之前,會先進行二次排序,首先根據資料所屬的partition進行排序,然後每個partition中的資料再按key來排序。partition的目的是將記錄劃分到不同的reducer上去,以期望能夠達到負載均衡,以後的reducer就會跟據partition來讀取自己對應的資料。接著執行combiner(需要自己設定,預設沒有設定combiner),combiner的本質也是乙個reducer,其目的是對將要寫入到磁碟上的檔案先進行一次處理,這樣,寫入到磁碟的資料量就會減少。最後將資料寫到本地磁碟產生spill檔案(spill檔案儲存到指定的目錄中,map任務結束就會被刪除)。
最後,每個map任務可以產生多個spill檔案,在每個map任務完成前,會通過多路歸併演算法將這些spill檔案歸併成乙個檔案。至此,map的shuffle過程就結束了。
reducer端的shuffle主要包括三個階段:copy、sort(merge)和reduce
首先要將map端產生的輸出檔案拷貝到reduce端,但每個reducer如何知道自己應該處理哪些資料呢?因為map端進行partition的時候,實際上就相當於指定了每個reducer要處理的資料(partition就對應了reducer),所以reducer在拷貝資料的時候只需拷貝與自己對應的partition中的資料即可。每個reducer會處理乙個或者多個partition,但需要先將自己對應的partition中的資料從每個map的輸出結果中拷貝過來。
接下來就是sort階段,也成為merge階段,因為這個階段的主要工作是執行了歸併排序。從map端拷貝到reduce端的資料都是有序的,所以很適合歸併排序。最終在reduce端生成乙個較大的檔案作為reduce的輸入。
最後就是reduce過程了,在這個過程中產生了最終的輸出結果,並將其寫到hdfs上。
caffe中對於softmax layer的說明
softmax 的步驟 softmax回歸 網上有很多關於softmax回歸的帖子,我的理解是softmax本質的作用就是計算softmax layer的輸入在每乙個標籤上的概率,caffe中softmax layer的過程如下 1 找出輸入的最大值 2 輸入的每乙個變數都減去最大值 3 對 2 中...
SequenceFile在Hadoop中使用
概念 sequencefile是乙個由二進位制序列化過的key value的位元組流組成的文字儲存檔案,它可以在map reduce過程中的input output 的format時被使用。在map reduce過程中,map處理檔案的臨時輸出就是使用sequencefile處理過的。所以一般的se...
Hadoop中TeraSort演算法分析
本文 1 概述 1tb排序通常用於衡量分布式資料處理框架的資料處理能力。terasort是hadoop中的的乙個排序作業,在2008年,hadoop在1tb排序基準評估中贏得第一名,耗時209秒。那麼terasort在hadoop中是怎樣實現的呢?本文主要從演算法設計角度分析terasort作業。2...