hadoop的一些名詞解釋
在網上收集了一些mapreduce中常用的一些名詞的解釋,分享一下:
Shuffle(洗牌):當第一個map任務完成後,節點可能還要繼續執行更多的map 任務,但這時候也開始把map任務的中間輸出交換到需要它們的 reducer那裏去,這個移動map輸出到 reducer 的過程叫做shuffle。
Partition:每一個reduce節點會分派到中間輸出的鍵集合中的一個不同的子集合,這些子集合(被稱為“partitions”)是reduce任務的輸入數據。每一個map任務生成的鍵值對可能會隸屬於任意的partition,有著相同鍵的數值總是在一起被reduce,不管它是來自那個mapper的。因此,所有的map 節點必須就把不同的中間數據發往何處達成一致。Partitioner 類就是用來決定給定鍵值對的去向,默認的分類器(partitioner)會計算鍵的哈希值並基於這個結果來把鍵賦到相應的partition上。
排序(Sort):每一個reduce任務負責歸約(reduceing)關聯到相同鍵上的所有數值,每一個節點收到的中間鍵集合在被送到具體的reducer那裏前就已經自動被Hadoop排序過了。
Combiner:前麵展示的流水線忽略了一個可以優化MapReduce作業所使用帶寬的步驟,這個過程叫Combiner,它在Mapper之後 Reducer之前運行。Combiner是可選的,如果這個過程適合於你的作業,Combiner 實例會在每一個運行map任務的節點上運行。Combiner會接收特定節點上的 Mapper 實例的輸出作為輸入,接著 Combiner 的輸出會被發送到Reducer那裏,而不是發送Mapper的輸出。 Combiner是一個“迷你reduce”過程,它隻處理單台機器生成的數據。
Reporter:是用於Map/Reduce應用程序報告進度,設定應用級別的狀態消息, 更新Counters(計數器)的機製。
Mapper和Reducer的實現可以利用Reporter 來報告進度,或者僅是表明自己運行正常。在那種應用程序需要花很長時間處理個別鍵值對的場景中,這種機製是很關鍵的,因為框架可能會以為這個任務超時了,從而將它強行殺死。另一個避免這種情況發生的方式是,將配置參數mapred.task.timeout設置為一個足夠高的值(或者幹脆設置為零,則沒有超時限製了)。 應用程序可以用Reporter來更新Counter(計數器)。
OutputCollector:是一個Map/Reduce框架提供的用於收集 Mapper或Reducer輸出數據的通用機製 (包括中間輸出結果和作業的輸出結果)。
最後更新:2017-04-03 16:48:31