の観点からのMapReduceのHadoopフロー解析、データフロー

データ・フロー・プロセスのMapReduceの観点から

JobTracker:タスクとモニタクラスタリソースのスケジューリングを担当します

実装と報告ハートビートタスクを担当:TaskTracker

図1に示すように、入力

MapReduceのフレームは、第1の入力スライス(InputSplit)、クラスFileInputFormatのInputFormatクラスのサブクラス形成HDFSスライシング入力上のファイルとして計算されるタスクの入力として各InputSplit地図、キーと値のペアは、InputSplitに解析しました。関数マップとして解析へのキー入力をInputSplit。デフォルトは、行番号と最も入力のための銀行などのコンテンツ鍵であり、サイズは、データ・ブロックは、データブロックのサイズよりも小さくてもよいInputSplitサイズよりも大きくてもよいです。

図2に示すように、マップ、および中間結果を出力します。

各タスクは、マップ関数の出力を格納するためのリング・マップメモリ​​バッファを有しています。バッファ閾値の内容に達したときに、バックグラウンドプロセスは、ディスクにバッファオーバーフロー(流出)の内容を記述します。

(1)は、ディスクを書き込む前に、データ・バッファは、最終的にデフォルトのキーに応じて、送信すべきによる減速(パーティション)に分割されます。ソート(クイックソートの一次)におけるキーにバックグラウンドスレッドによれば、各パーティションで。

(2)は、ディスクに書き込む前に、コンバイナは、同じキー値の組み合わされた効果であることができます。目標は、ディスクと減速あまり効率に伝送ローカルデータに書き込まれたが、その結果、中間結果の出力をよりコンパクトにマッピングすることである最大値、最小値、及び加算操作を選択するために組み合わせます。

(3)、ソートを行う書き込みオーバーフローに複数のファイルをマージする二回目は、最終的な、マージソートである合併の結果はすでにパーティションとソートされた出力ファイルです。

呼ばれるデータのシャッフルを3.shuffle

(1)操作は、プル・コピー(コピー)結果減速をマッピングする中間ノードtaskTrackerが配置タスクを実行します。複数のパーティションが同一の結果をコピーするコピー処理を引っ張るこぼれなる減速にします

減速は、パーティションの数の数に等しい場合、各減速結果はデー​​タパーティションを1つだけ含有します。

減速機の数が少ないパーティションの数よりも大きい場合に、パーティションデータが先頭に同時に減速機と減速上記二つのデータ・パーティションが表示されます。

減速機の数はパーティションの数以上である場合、結果は、タスクヌルの複数です。

ここに画像を挿入説明

ここに画像を挿入説明

(2)、第三のソート、中間マージ結果の複数のマップ。マージソートが使用されています。

すべてのコピーがマップ出力完了すると、すべてのデータが最終的にマージされてソートされたファイル、入力などの作業を軽減。シャッフルのファイルが処理され、キーエリアを命じられた後。しかし、それは各減速の間には順序関係(第2注文の例を参照)が異なる減速ではないです。

4、かつてと呼ばれる同じパーティションのファイルが処理機能を減らします。

5.例:ワードカウント統計

(1)、InputSplit、各入力マップタスク。解析された上の入力ファンクションキーをマップInputSplit

(2)は、マップタスクの出力は、複数のタスクを持つことになります最初のマップであり、各マップの出力を分割し、ソートされたファイルの作業です

(3)、シャッフルをします自動的にマージソート複数のマップタスク、結果はシャッフルして、複数のマップファイルをマージする、一種のタスクの重要な分野であります

(4)対応する複数のタスクを減らす、シャッフル後のファイルの複数が存在することになる減らす入力の関数としての値の各パーティションのすべての値を

 

 

図6は、ポイントをまとめました。

(1)は、ディスク上の出力は、HDFSの動作の動作マップストア中間結果を減らします。

(2)マップタスク処理はInputSplitあり、処理タスクが同じタスクの全てが中間結果を分配マッピングすることである減らします。

(3)は、マージソート、実際に同じ種類のデータ・パーティションです。

(4)、実行は、入力としてマッパークラスファイルと行の行番号の内容であり、マップ法は行ごとに一度呼び出されます。減速は、パーティションと同じ時間を短縮する方法を呼び出し、入力パーティションと同じクラスを実行する(例は、テーブルを結合参照します)。

入力されたタイル番号(InputSplit)に応じて(5)、mapTask番号(マッパー)。(減速)reduceTaskデフォルトタスク番号1、コードの各セットは、(50)job.setNumReduceTasksを必要

 

 

7、制御シャッフル

(1)、独自のパーティション分割を書きます

一般的なパーティショナは、データの後に関数マップが処理された前patitioner操作がディスクに書き込まれていないため、彼はマップ機能により、結果出力のジェネリック型を示し、もあります。治療の方法は、治療出力せずに結果getPartiionマップ関数であり、受信したキー値がマップ関数の出力を表します。キーが同じかどうかであるHadoopのデフォルトのパーティション

(2)、ソート制御ルール。MapReduceフレームワークを注文して実行されますが、ルールは、我々が制御することができます。

Hadoopのデフォルトでは、ソートの比較方法を比較した比較キーと値のペアを渡すことです

 

 

 

 

 

公開された159元の記事 ウォン称賛75 ビュー190 000 +

おすすめ

転載: blog.csdn.net/xuehuagongzi000/article/details/76736979