MapReduce プログラミングの 2 つのデータ フロー モデルのデモンストレーション

MapReduce は、大規模なデータ セットに対する並列操作を処理するために使用されるプログラミング モデルです。MapReduce を使用してコンピューティング タスクを実行する場合、各タスクの実行プロセスは、元のデータを処理する Map ステージと Map の結果を要約する Reduce ステージの 2 つのステージに分割されます。最終結果を得るために、これら 2 つのステージのモデルを図 1 に示します。

  図 1 MapReduce の単純なモデル

  MapReduce プログラミング モデルは、関数型プログラミング言語の設計思想を活用しており、そのプログラム実装プロセスは、map() 関数とreduce() 関数を通じて完了します。データ形式の観点から見ると、map() 関数が受け取るデータ形式はキーと値のペアであり、出力結果もキーと値のペアの形式になります。 map() 関数で出力された値のペアを入力として同じキーを変換すると、その値の値が要約され、新しいキーと値のペアが出力されます。次に、図 2 に示すように、図を使用して MapReduce の単純なデータ フロー モデルを説明します。

 図 2 MapReduce の単純なデータ フロー モデル

  図 2 で説明した MapReduce の単純なデータ フロー モデルの詳細は次のとおりです。

  (1) 元のデータをキーと値のペアに処理します。

  (2) 解析されたキーと値のペアを map() 関数に渡します。map() 関数は、マッピング ルールに従って、キーと値のペアを中間結果の形式で一連のキーと値のペアにマッピングします。

  (3) キーと値のペアの中間形式をreduce()関数に渡して処理し、同じキーを持つ値をマージして新しいキーと値のペアを生成します。このときのキーと値のペアは最終的な出力結果。

  ここで注意すべき点は、タスクによっては Reduce プロセスが必ずしも必要ではないこと、つまり、MapReduce のデータ フロー モデルには Map プロセスのみが存在し、Map によって生成されたデータが HDFS に直接書き込まれることです。ただし、ほとんどのタスクでは Reduce プロセスが必要であり、負荷の高いタスクのために複数の Reduce を設定する必要がある場合があります。たとえば、図 3 に示すように、複数の Map と Reduce を含む MapReduce モデルを次に示します。

 図 3 複数の Maps と Reduce の MapReduce モデル

  図 3 は、3 つの Map と 2 つの Reduce を含む MapReduce プログラムを示しています。このうち、Maps によって生成された関連キーの出力は Reduce に集中して処理され、Reduce は最後の処理プロセスであり、結果は再度処理されません. 概要です。

おすすめ

転載: blog.csdn.net/zy1992As/article/details/132667412