Map-reduce-introduction
MapReduce-はじめに
MapReduceは、複数のノードでビッグデータを並列処理できるアプリケーションを作成するためのプログラミングモデルです。 MapReduceは、膨大な量の複雑なデータを分析するための分析機能を提供します。
ビッグデータとは?
ビッグデータは、従来のコンピューティング技術では処理できない大規模なデータセットのコレクションです。 たとえば、FacebookまたはYoutubeが毎日収集および管理する必要があるデータの量は、ビッグデータのカテゴリに分類されます。 ただし、ビッグデータはスケールとボリュームだけでなく、速度、多様性、ボリューム、複雑さの1つ以上の側面も含みます。
MapReduceを選ぶ理由
従来のエンタープライズシステムには、通常、データを保存および処理するための集中サーバーがあります。 次の図は、従来のエンタープライズシステムの概略図を示しています。 従来のモデルは、確かに膨大な量のスケーラブルなデータの処理には適さず、標準のデータベースサーバーでは対応できません。 さらに、集中システムでは、複数のファイルを同時に処理する際にボトルネックが多くなりすぎます。
GoogleはMapReduceと呼ばれるアルゴリズムを使用してこのボトルネックの問題を解決しました。 MapReduceは、タスクを小さな部分に分割し、それらを多くのコンピューターに割り当てます。 その後、結果は1か所で収集され、統合されて結果データセットが形成されます。
MapReduceの仕組み
MapReduceアルゴリズムには、MapとReduceという2つの重要なタスクが含まれています。
- Mapタスクはデータのセットを受け取り、それを別のデータのセットに変換します。個々の要素はタプル(キーと値のペア)に分解されます。
- Reduceタスクは、Mapからの出力を入力として受け取り、それらのデータタプル(キーと値のペア)を小さなタプルセットに結合します。
削減タスクは、マップジョブの後に常に実行されます。
次に、各フェーズを詳しく見て、それらの重要性を理解してみましょう。
- 入力フェーズ-入力ファイル内の各レコードを変換し、キーと値のペアの形式でマッパーに解析済みデータを送信するレコードリーダーがあります。
- Map -Mapはユーザー定義関数であり、一連のキーと値のペアを受け取り、それらの各ペアを処理して0個以上のキーと値のペアを生成します。
- 中間キー-マッパーによって生成されたキーと値のペアは、中間キーとして知られています。
- コンバイナー-コンバイナーは、マップフェーズからの類似データを識別可能なセットにグループ化するローカルレデューサーの一種です。 マッパーから中間キーを入力として受け取り、ユーザー定義のコードを適用して、1つのマッパーの小さなスコープで値を集計します。 これは、メインのMapReduceアルゴリズムの一部ではありません。オプションです。
- シャッフルとソート-レデューサータスクはシャッフルとソートのステップから始まります。 グループ化されたキーと値のペアを、Reducerが実行されているローカルマシンにダウンロードします。 個々のキーと値のペアは、キーごとにソートされてより大きなデータリストになります。 データリストは同等のキーをグループ化して、Reducerタスクで値を簡単に反復できるようにします。
- Reducer -Reducerは、グループ化されたキーと値のペアのデータを入力として受け取り、それらのそれぞれに対してReducer関数を実行します。 ここでは、データをさまざまな方法で集約、フィルタリング、結合することができ、幅広い処理が必要です。 実行が終了すると、最終ステップに0個以上のキーと値のペアが与えられます。
- 出力フェーズ-出力フェーズには、Reducer関数からの最終的なキーと値のペアを変換し、レコードライターを使用してファイルに書き込む出力フォーマッターがあります。
小さな図の助けを借りて2つのタスクMap&f Reduceを理解してみましょう-
MapReduce-Example
MapReduceのパワーを理解するために、実際の例を見てみましょう。 Twitterは1日に約5億のツイートを受信します。これは1秒あたり約3000のツイートです。 次の図は、MapReduceを使用してTweeterがツイートを管理する方法を示しています。
図に示すように、MapReduceアルゴリズムは次のアクションを実行します-
- Tokenize -ツイートをトークンのマップにトークン化し、キーと値のペアとして書き込みます。
- Filter -トークンのマップから不要な単語をフィルタリングし、フィルタリングされたマップをキーと値のペアとして書き込みます。
- Count -単語ごとにトークンカウンターを生成します。
- 集計カウンタ-同様のカウンタ値の集計を小さな管理可能な単位に準備します。