2016-07-05 6 views
0

元のMapReduceペーパーを読んでいます。私の理解では、数百GBのデータを扱う場合、非常に多くのデータを転送するためのネットワーク帯域幅がMapReduceジョブのボトルネックになる可能性があります。マップタスクでは、ローカルディスクからの読み取りにはネットワーク帯域幅が必要ないため、特定の分割のデータを含むワーカーにマップタスクをスケジュールすることで、ネットワーク帯域幅を削減できます。MapReduceシャッフルフェーズのボトルネック

しかし、シャッフルフェーズは大きなボトルネックに見えます。削減タスクは、すべてのマップタスクから中間​​のキーと値のペアを受け取る可能性があり、これらの中間のキーと値のペアのほとんどすべてがネットワークを介してストリーミングされます。

数百GB以上のデータを扱う場合、が必要です効率的なMapReduceジョブを作成するにはコンバイナを使用する必要がありますか?

答えて

1

コンバイナは、その状況に収まる場合には重要な役割を果たします。コンバイナは、ローカルのレデューサのように動作します。すべてのデータを送信する代わりに、値やローカル集約値はほとんど送信しませんが、コンバイナはすべての場合に適用できません。

reduce関数が可換性と連想性の両方の場合、それはコンバイナとして使用できます。

メディアンの場合と同様に動作しません。

すべての状況でコンバイナを使用することはできません。

枚を調整することができる他のパラメータがあります。

マップは、それが直接、それは100メガバイトたときに、それがディスクにレコードをこぼさ80%を埋める循環バッファに行くディスクを行っていない出力を発する

バッファサイズを増やし、しきい値を上げることができます。この場合、spillageは少なくなります。

流出が非常に多い場合、流出が合流してスピル要因で再生できる単一のファイルになります。

ローカルディスクからレデューサーjvmにデータをコピーするスレッドがあるので、その数を増やすことができます。

圧縮は中間レベルと最終レベルで使用できます。

したがって、Combinerは唯一の解決策ではなく、すべての状況で使用されることはありません。

+0

循環バッファについて:私の理解では、ワーカーノードは中間のキーと値のペアをメモリ内のバッファに送り、定期的にバッファされたキーと値のペアがローカルディスクに書き込まれます。しかし、RAMとディスクは両方とも作業者にとってローカルなのですが、シャッフルフェーズの間にどのようにネットワーク帯域幅を削減すれば、潜在的にすべてのリデューサノードにストリーミングするのでしょうか? – Ben

+0

私は全体的なパフォーマンスについて話していますが、とにかく間接的にはレデューサーレベルでも役立ちます。流出量が少ないほどスピルファイルをマージする時間が短くなり、出力が早くなり、レデューサースレッドがデータをコピーできるようになります。 – user3484461

1

マッパーが発光しているとします(単語、カウント)。コンバイナを使用しない場合、マッパにabcという単語が100回ある場合、レデューサは(abc、1)を100回引く必要があります。(ワード、カウント)のサイズは7バイトです。コンバイナを使用しない場合、リデューサは7×100バイトのデータをプルする必要があります。コンバイナを使用する場合、リデューサは7バイトのデータをプッシュするだけです。この例では、コンバイナがネットワークトラフィックをどのように削減できるかを示しています。 注:これは理解を簡単にするためのあいまいな例です。

+0

user3484461の答えによれば、コンバイナは連想型および可換型のリダクション関数でのみ機能します。ユーザー3484461は、ネットワーク帯域幅を削減する別の方法として圧縮を指摘しました。使用される他のテクニックはありますか? – Ben

+0

はい還元関数は可換性と結合性が必要です..... {1,2,3,4,5,6}と{1,2,3}の平均を計算しなければならないとしましょうマッパと{4,5,6}は別の場所に行きます。 (1,1)、(2,1)、(3,1)を送信するのではなく、(4,1)を送信する代わりに(6,3)タプル(1 + 2 + 3,3) )、(5,1)および(6,1)を送信することができる(15,3)。減速機では、(6 + 15)/(3 + 3)となります。これにより、(キー、値)ペアを巧みに設計することによってネットワークトラフィックを節約することもできます。 – gunner87

+0

reduce関数が* commutativeでassociateでない状況で使用される他のテクニックはありますか? (私は圧縮について言及しましたが、他に何かがあるかどうか尋ねています)。 – Ben