Hadoopの[2.1]シャッフル概要

各maptaskの終わりに、我々は<K、V>キューで取得し、削減に、入力が<K、反復処理可能V>です。これは、途中で作業をシャッフル、ソートMaptaskキーのデータと呼ばれています。大雑把マップタスクから完全なプルデータを話す主な作業は、1末端を低減します。2.できるだけ帯域幅の不要な消費を低減するように、ノード間でデータを引っ張ります。3.タスクの実行上のディスクIOの影響を減らします。(主な仕事は、ディスクIOではなく、より多くのメモリの使用を最適化することです)

部分的にスイッチングhttps://www.cnblogs.com/sunfie/p/4928662.htmlを

MapTask的シャッフル

用語シャッフルで4から一枚の地図、マップの結果がディスクに書き込まれ、キャッシュデータパーティション(パーティション)パケット(コンバイナ)ソート(並び替え);ファイルのマージ(マージ)。 

1.map結果がディスクに書き込まれます

平行マップ作業のため、最初の我々は80%まで充填環(のメモリバッファに保存された各ノードについて得られた結果について話している全てのは、データを取得するために外出、または完全な、そして残りの20%は続きを読む、多くの結果出力を生成バッファがいっぱいになったとき、)データをマッピングし、それが最後までそれをブロックして、ディスクへの書き込みを続けマップ。予備ファイル(流出)と呼ばれるファイルを書き出すには、オーバーフロー書き込みが別のスレッドによって行われ、スレッドの結果をマッピングする書き込みバッファには影響しないスレッド開始を書くとき、それはオーバーフロー出力マップの結果を妨げるべきではありません。

2.キャッシュパーティションデータ(パーティション)パケット(コンバイナ)でソート(並び替え)

最初のパーティション(パーティション)です:私たちはデータを取得した後、あなたはreduceTaskが完了に行く<反復V、K>のマップを取得するために知っておく必要があります。MapReduceは、その役割が数または値に基づいて最終的な処理に引き渡さなければならないタスクを減らす現在の出力データのかを決定し、キーを減少させることで、パーティショナインタフェースを提供します。デフォルトのキーハッシュの数とタスクの剰余を減らすために、ちょうど平均処理電力を低減するデフォルトの方法を法では、パーティショナのためにユーザー自身の需要場合は、カスタマイズされたジョブに設定することができます。

次いで、パケット(コンバイナ):テイクサブWORDCOUNT例では、2つの<こんにちは、1> <こんにちは、1>このように、送信maptaskの送信データ2つの<こんにちは、1> ReduceTask過去、あまりにも無駄を生成します、過去の<こんにちは、2>再送信になることをお勧めします。<K2、V2>なるコンバイナと減速等(実際には減速が合成され...)<K1、V1>から減らす、差分合成は<K、V>なる<K、V>であります

最初のソートデータのパーティションが属するに従って、データがディスクに書き込まれる前にバッファに流出スレッドは、それが第二クイックソートになり、その後、順番に各パーティションのキーを押します。最後にソート(並び替え)と言います。出力には、インデックスファイルとデータファイルが含まれています。あなたがコンバイナを設定した場合、それは一種の出力に基づいて実行されます。

3.ファイルマージ(マージ)

すべての流出は、ディスク上の予備ファイルを生成しますマップは本当に大きい場合、出力は、多くのそのような流出は、対応するディスク上が発生している場合、実際の地図タスク完了複数の予備ファイルが存在しています、データ・メモリ・バッファオーバーフローがすべて流出ライト・ファイルを形成するために、ディスクに書き込まれます。最後だけ一つのファイルに、あなたはこれらのオーバーフローを記述する必要があるため、最終的なディスクには、少なくともに存在する(出力マップが小さい場合にはマップの実行が完了したときに、それが唯一の流出ライト・ファイルを生成します)オーバーフロー書き込み、このような文書を持っていますファイルのマージ一緒に、このプロセスは、マージと呼ばれています。

ReduceTask的シャッフル

削減シャッフル段階を理解するために、3つの段階に分かれています。マージデータ地図からテイクデータを、 

地図から1.テイクデータ 

 マージマップにすべてのファイルの終わりに、ここmaptaskからreducetaskこのファイルを取得するには(うまく乗り、高速または低速マップ)、ファイルが小さい場合、ダイレクト入金JVM、大きな言葉が動作するようにオーバーフローによって書かれていますまた、コンバイナによって取り込むことができます

2.マージデータ

 データを取得し、単一のファイルに整理するために、オーバーフロー・ライト・ファイルとメモリ内のデータを取得するので、異なるmaptaskでGETデータの後にマージに加えて、前回もマージする必要があり、すべての<K、反復処理可能V>マージ1へ。最後にファイルに書き込まデフォルトでは、減速の必要性を得る<K、Vイーター>

 

おすすめ

転載: www.cnblogs.com/tillnight1996/p/12364062.html