このHadoop ブログでは、エンドツーエンドのMapReduceジョブ実行フローを提供します。ここでは、MapReduceの一部である各コンポーネントについて詳しく説明します。
このブログは、Hadoop MapReduceがどのように機能するか、MapReduceでデータがどのように流れるか、HadoopでMapreduceジョブがどのように実行されるかについて回答するのに役立ちますか?
MapReduceとは何ですか?
Hadoop MapReduce データ処理層です。 HDFSに保存されている大量の構造化データと非構造化データを処理します。 MapReduceは、ジョブを独立したタスクのセットに分割することにより、データを並行して処理します。したがって、並列処理により速度と信頼性が向上します。
Hadoop MapReduceデータ処理は、MapフェーズとReduceフェーズの2つのフェーズで行われます。
- マップフェーズ- これは、データ処理の最初のフェーズです。このフェーズでは、すべての複雑なロジック/ビジネスルール/コストのかかるコードを指定します。
- フェーズを減らす- 処理の第2段階です。このフェーズでは、集計/合計などの軽量処理を指定します。
MapReduceジョブ実行フローのステップ
MapReduceは、さまざまなコンポーネントを使用して、さまざまなフェーズでデータを処理します。 Hadoopでのジョブ実行の手順について説明しましょう。
1。入力ファイル
入力ファイルには、MapReduceジョブのデータが保存されます。 HDFS 、入力ファイルが存在します。入力ファイルの形式は任意です。行ベースのログファイルとバイナリ形式も使用できます。
2。 InputFormat
その後、InputFormatは、これらの入力ファイルを分割して読み取る方法を定義します。入力するファイルまたはその他のオブジェクトを選択します。 InputFormatはInputSplitを作成します。
3。 InputSplits
これは、個々のマッパーによって処理されるデータを表します 。分割ごとに、1つのマップタスクが作成されます。したがって、マップタスクの数はInputSplitsの数と同じです。フレームワークは、マッパーが処理するレコードに分割されます。
4。 RecordReader
inputSplitと通信します。次に、データをキーと値のペアに変換します マッパーによる読み取りに適しています。 RecordReaderは、デフォルトでTextInputFormatを使用してデータをキーと値のペアに変換します。
ファイルの読み取りが完了するまで、InputSplitと通信します。ファイルに存在する各行にバイトオフセットを割り当てます。次に、これらのキーと値のペアは、さらに処理するためにマッパーに送信されます。
5。マッパー
RecordReaderによって生成された入力レコードを処理し、中間のキーと値のペアを生成します。中間出力は、入力ペアとは完全に異なります。マッパーの出力は、キーと値のペアの完全なコレクションです。
Hadoopフレームワークは、マッパーの出力をHDFSに保存しません。データは一時的なものであり、HDFSに書き込むと不要な複数のコピーが作成されるため、保存されません。次に、マッパーは出力をコンバイナーに渡してさらに処理します。
4。コンバイナー
コンバイナーは、マッパーの出力に対してローカル集計を実行するミニリデューサーです。マッパーとレデューサー間のデータ転送を最小限に抑えます。したがって、コンバイナー機能が完了すると、フレームワークは出力をパーティショナーに渡してさらに処理します。
5。パーティショナー
複数のレデューサーを使用している場合、パーティショナーが存在します。コンバイナの出力を受け取り、パーティショニングを実行します。
出力のパーティション化は、MapReduceのキーに基づいて行われます。ハッシュ関数により、キー(またはキーのサブセット)がパーティションを導出します。
MapReduceのキー値に基づいて、各コンバイナー出力のパーティション化が行われます。次に、同じキー値を持つレコードが同じパーティションに入ります。その後、各パーティションはレデューサーに送信されます。
MapReduceの実行でパーティションを作成すると、マップ出力をレデューサー全体に均等に分散できます。
6。シャッフルと並べ替え
パーティション分割後、出力はリデュースノードにシャッフルされます。シャッフリングは、ネットワーク上で行われるデータの物理的な移動です。すべてのマッパーが終了し、レデューサーノードの出力をシャッフルします。
次に、フレームワークはこの中間出力と並べ替えをマージします。これは、フェーズを減らすための入力として提供されます。
7。レデューサー
次に、Reducerは、マッパーによって生成された中間のキーと値のペアのセットを入力として受け取ります。その後、それぞれに対してレデューサー関数を実行して出力を生成します。
レデューサーの出力が最終出力です。次に、フレームワークは出力をHDFSに保存します。
8。 RecordWriter
これらの出力キーと値のペアをReducerフェーズから出力ファイルに書き込みます。
9。 OutputFormat
OutputFormatは、RecordReaderがこれらの出力キーと値のペアを出力ファイルに書き込む方法を定義します。そのため、Hadoopによって提供されるインスタンスはHDFSにファイルを書き込みます。したがって、OutputFormatインスタンスは、HDFSにレデューサーの最終出力を書き込みます。
結論
MapReduceのジョブ実行フローを段階的に学習しました。このブログがMapReduceの動作を理解するのに大いに役立つことを願っています。
それでも、MapReduceジョブ実行フローに関連するクエリがある場合は、以下のコメントセクションで共有できます。私たちはそれらを解決するために最善を尽くします。