1

私は最近、結果を結合ステージに渡す前にすべてのマッパーを完了する必要があるジョブを実行する必要がありました (処理されたファイルの構造が原因でした)。この機能は、以下を構成することでレデューサーで利用できます -

// force 100% of the mappers to conclude before reducers start
job.set("mapred.reduce.slowstart.completed.maps", "1.0");

コンバインステージの同様の構成は見つかりませんでした。最終的に、ジョブを 2 つの部分に分割し、コンバイン ステージがレデューサーとして機能し、元の reduce がジョブ #2 に渡されました (mapper2 はデータを変更せずに渡すだけです)。

私は疑問に思っていました-結合する前に100%のマップ完了を構成するのを逃した方法はありますか? ありがとう。

4

1 に答える 1

1

これを制御する方法はありません。コンバイナーは、特定のマップ インスタンスに対して実行される場合と実行されない場合があります。実際、コンバイナーは、マップ データのさまざまなスピルに対して複数回実行される場合があります。

Tom Whites の本には、より詳細な定義があります: "Hadoop the definitive guide":

http://books.google.com/books?id=Nff49D7vnJcC&pg=PA178&lpg=PA178&dq=hadoop+combiner+spill&source=bl&ots=IiesWqctTu&sig=V5b3Z2EVWp5JzIvc_Fzv1-AJerI&hl=en&sa=X&ei=QUJwT9XBCOna0QGOzpnlBg&ved=0CFMQ6AEwAw#v=onepage&q=hadoop%20combiner% 20spill&f=偽

そのため、マップが終了する前にコンバイナーが実行される場合があります

于 2012-03-26T10:19:37.953 に答える