hadoop mapreduce tutorial with examples what is mapreduce
このチュートリアルでは、MapReduceとは何か、その利点、およびHadoop MapReduceがどのように機能するかを例で理解します。
前のチュートリアルでは、HadoopHDFSと読み取りおよび書き込みメカニズムについて学習しました。次に、別のHadoopコンポーネント(MapReduce)について見ていきましょう。
以下について詳しく見ていきましょう。
- MapReduceとは何ですか?
- その利点
- MapReduceの正確なアプローチは何ですか?
=> 独占的なビッグデータトレーニングチュートリアルシリーズについては、こちらをご覧ください。
学習内容:
MapReduceとは何ですか?
先に進み、Hadoopコンポーネントから始めましょう。前に説明したように、Hadoopには2つの主要なコンポーネント、つまりHadoopHDFSとHadoopMapReduceがあります。
Hadoop HDFSは、大量のデータを複数のラックに保存するために使用されるファイル配布システムです。
ここでは、Hadoopの処理ユニット(MapReduce)について説明します。
次に発生する質問は、「Map Reduceとは何ですか、なぜそれが必要なのですか?」です。
HadoopMapReduceは 「プロセッシングユニット」 このコンポーネントを使用して、HadoopHDFSに保存されているビッグデータを処理できます。
しかし、正確な要件は何ですか?なぜHadoopのこのコンポーネントが必要なのですか?
Hadoop HDFSに保存されているビッグデータは、従来は保存されていません。データは、それぞれのDataNodeに格納されているデータのチャンクに分割されます。したがって、データ全体が1つの集中管理された場所に保存されるわけではありません。
したがって、Javaなどのネイティブクライアントアプリケーションは現在の形式のデータを処理できず、それぞれのDataNodeに格納されている断片化されたデータブロックを処理できる特別なフレームワークが必要です。
処理は、HadoopMapReduce処理を使用して行われます。
一言で言えばMapReduce
上の図は、Map Reduce、その機能と使用法の概要を示しています。
MapReduceのアプリケーションとそれがどこで使用されているかから始めましょう。 例えば、 それはのために使用されます 分類子、索引付け、検索 、およびの作成 レコメンデーションエンジン eコマースサイト(フリップカート、アマゾンなど)でも使用されます 分析 いくつかの会社によって。
機能の観点から見ると、 プログラミングモデル と使用することができます 大規模分散 モデル Hadoop HDFSのように、並列プログラミングの機能を備えているため、非常に便利です。
Map Reduceに関数が表示されると、MapFunctionとReduce関数の2つの関数が実行されます。
このテクノロジーは、Google、Yahoo、Facebookなどの主要な組織によって実装され、HDFS、PIG、HIVEなどのApache Hadoopによって採用され、No-SQLとも呼ばれるHBaseを使用してデータを保存したりビッグデータを実行および処理したりします。
Map-Reduceの利点
このテクノロジーには2つの利点があります。
#1)並列処理
最初の利点は並列処理です。 Map Reduceを使用すると、常にデータを並行して処理できます。
上の図のように、5台のスレーブマシンがあり、一部のデータはこれらのマシンに存在します。ここでは、Hadoop Map Reduceを使用してデータが並行して処理されるため、処理が高速になります。
実際にここで発生するのは、データのチャンク全体がHadoop HDFSによってHDFSブロックに分割され、Map-Reduceがこれらのデータのチャンクを処理するため、処理が高速になることです。
#2)データの局所性
これは、Hadoop MapReduceによって提供される用途の広いものの1つです。つまり、データをそのまま処理できます。
どういう意味ですか?
前のHDFSチュートリアルでは、Hadoopクラスターに移動したデータがHDFSブロックに分割され、これらのブロックがSlaveMachinesまたはDataNodeに保存されることを理解しました。 Map-Reduceは、データがHDFSブロックとして存在するそれぞれのスレーブノードまたはDataNodeへの処理とロジックを検知します。
処理は、複数の場所にある小さなデータチャンクに対して並行して実行されます。これにより、ビッグデータをある場所から別の場所に移動するために必要なネットワーク帯域幅だけでなく、多くの時間も節約できます。
処理しているデータはビッグデータがチャンクに分割されていることを覚えておいてください。割り当てられたネットワークチャネルを介してビッグデータを一元化されたマシンに直接移動して処理し始めた場合、消費するため、メリットはありません。データを中央サーバーに移動する際の帯域幅全体。
利点:
したがって、Hadoop MapReduceを使用すると、単に実行するだけではありません。 「並列処理」 、データのチャンクが存在するそれぞれのスレーブノードまたはDataNodeへのデータも処理しているため、 「ネットワーク帯域幅を大幅に節約」 これは非常に有益です。
最後に、SlaveMachinesは、SlaveMachinesに保存されたデータの処理を実行し、結果がSlaveMachinesに保存されたブロックほど大きくないため、結果をマスターマシンに送り返します。したがって、多くの帯域幅を使用することはありません。
スレーブマシンは結果をマスターマシンに送り返し、これらの結果は一緒に集約され、最終結果はジョブを送信したクライアントマシンに送り返されます。
ここで1つの質問が発生します-どのデータをどのDataNodeで処理するかを誰が決定するのですか?
クライアントはジョブをリソースマネージャーに送信し、リソースマネージャーは、データが存在するそれぞれのDataNodeでジョブを実行する方向を提供するものであり、多くのネットワークが利用できるように、使用可能な最も近いDataNodeに基づいて決定します。帯域幅は使用されません。
従来の対。 MapReduce Way
これを説明するために、保険会社の保険契約者の申請数を実際に例えます。大手保険会社のほとんどはさまざまな都市に支店を持っているため、誰もが保険会社のポリシーを知っているでしょう。
これらの支店には、生命保険に加入している人が「n」人います。
5つの保険会社の支店があり、人々が来て生命保険契約を申請するシナリオを考えてみましょう。現在、その保険会社の1つの本社があり、利用可能で配置されている支店に関するすべての情報を持っています。
ただし、A、B、C、D、Eの各支店で生命保険証券を申請する場合は、各支店自体で保険証券の申請が行われ、保険会社本部と情報が共有されることはありません。
伝統的な方法:
人々が伝統的にどのようにポリシーを申請するかを見てみましょう。従来、この問題を解決するために、すべての申請は保険会社本部に移され、申請プロセスが開始されます。
この場合、すべての申請書を保険会社の本社に移動する必要があります。これはコストのかかる問題です。つまり、すべての申請書を保険会社の支店から収集して保険会社の本社に提出する必要があります。
これは、この活動を行うための多大な努力とともに、コストがどのように関与するかです。
これのもう1つの側面は、各支店の保険契約のために人々によって申請されたすべての申請を処理する必要があるため、過重負担の保険会社本部です。
保険会社はすべての支店で申請された申請書を処理しているため、時間がかかります。結局、このプロセスはあまりうまく機能しません。
MapReduce Way
Map-Reduceがこの問題をどのように解決するかを見てみましょう。
MapReduceは、データの局所性に従います。つまり、すべてのアプリケーションを保険会社の本社に持ち込むのではなく、それぞれの支店でアプリケーションの処理を並行して実行します。
すべての支店に適用された申請書が処理されると、処理された詳細が保険会社の本社に返送されます。
これで、保険会社の本社は、それぞれの支店から送信された処理済みアプリケーションの数を集計し、それぞれのデータベースまたはストレージセンターに詳細を保持する必要があります。
このように、処理は非常に簡単かつ迅速になり、保険契約者はすぐに利益を得ることができます。
MapReduceの詳細
前の例では、さまざまなブランチに分散された入力(アプリケーション)があり、すべての入力はそれぞれのMap関数によって処理されました。
MapReduceには、Map関数とReduce関数の2つの関数があることがわかっています。
それぞれのブランチで行われた処理部分は、マップ関数によって行われました。そのため、すべての支店の各入力(アプリケーション)はマップ機能を使用して処理され、その後、処理された詳細が保険会社の本社に送信され、集計部分は削減機能によって実行されます。
集約された処理済みアプリケーションの詳細は、出力として提供されます。
これは、前の例で起こったことです。プロセス全体は、マップタスクと削減タスクに分けられました。
マップタスクは入力を取得し、マップタスクの出力は入力としてリデュースタスクに与えられ、このリデュースタスクは最終的にクライアントに出力を与えます。
それをよりよく理解するために、MapReduceの構造を見ていきましょう。
MapReduceタスクはKey-Valueペアで機能するため、Mapについて説明する場合、Mapは入力をKey-Valueとして受け取り、出力をKey-Valueのリストとして提供します。このKey-Valueのリストはシャッフルフェーズを経て、Keyの入力と値のリストはレデューサーに送られました。
最後に、ReducerはKey-Valueペアのリストを提供します。
MapReduceの例–ワードカウントプロセス
別の例を見てみましょう。つまり、WordCountはMapReduceWayを処理します。この例は、Javaプログラミングの紹介例である「HelloWorld」と同じです。
図のように、入力があり、この入力は分割されるか、さまざまな入力に分割されます。したがって、このプロセスは入力分割と呼ばれ、入力全体が改行文字に基づいてデータの分割に分割されます。
一番最初の行は最初の入力です。 Bigdata Hadoop MapReduce 、2行目は2番目の入力です。 MapReduce Hive Bigdata 、同様に、3番目の入力の場合は Hive Hadoop Hive MapReduce 。
次のフェーズ、つまりマッピングフェーズに進みましょう。マッピングフェーズでは、キーと値のペアのリストを作成します。したがって、入力はキーと値です。ここで、キーは行番号のオフセットに他なりません。行番号はキーであり、行全体が値です。
したがって、行1の場合、オフセットはキーであり、値は Bigdata Hadoop MapReduce 。実際には、行番号またはオフセットは16進数ですが、簡単にするために、番号1または2のみと見なします。
したがって、1行目がキーになり、行全体が値になります。マッピング関数を通過するときに、マッピングが行うことは、キーと値のペアのリストを作成します。 例えば、 ビッグデータ 、つまり関数が実行するのは、行のすべての単語を読み取り、コンマの後に1つをマークすることです。
1つを値としてマークします。お気に入り Bigdata、1 Hadoop、1およびMapReduce、1 。ここで問題となるのは、なぜ各単語の後に1つ置くのかということです。
なぜなら ビッグデータ 1カウントなので ビッグデータ、1 。同様に、 Hadoop、1 そして MapReduce、1 それ自体が1つのカウントを持っているため、1つを値としてマークします。 2行目または2行目と同じように、 MapReduce Hive Bigdata 。
したがって、同じ方法で、マッピング関数は再びそのキーと値のペアのリストを作成します。したがって、カウントごとに、キーと値のペアのリストは次のようになります。 MapReduce、1ハイブ、1 そして ビッグデータ、1 。
3行目のマッピング関数の結果と同じ結果が得られます。 ハイブ、2 Hadoop、1 そして MapReduce、1 。
シャッフルフェーズに移りましょう。このフェーズでは、すべてのキーについてリストが用意されています。シャッフルフェーズでは、キーの外観が見つかります ビッグデータ 値がリストに追加されます。では、ここで何が起こっているのか見てみましょう。
例を使用した回帰テストとは
2つの着信矢印を見ることができるように、最初の矢印はリスト1からのものであり、別の矢印はリスト2からのものであるため、結果は次のようになります。 ビッグデータ、(1,1) 。
同様に、私たちが単語を見るとき Hadoop 、再び Hadoop 値用に別のリストが用意されます。ご覧のとおり、2つの入ってくる矢印がシャッフルを指しています。これは単語を意味します Hadoop リスト2とリスト3からそれぞれピックアップされます。つまり、シャッフル後の最終結果は次のようになります。 Hadoop、(1、1) 。
同じように、残りの単語は次のようになります。 ハイブ、(1、1、1) そして MapReduce、(1、1、1) 値のリストと一緒に、またはそれぞれのリスト内の単語の可用性に従ってカウントのリストを言います。
次に、削減フェーズに進みます。このフェーズでは、すべてのキーに対してリストに存在していた値の集計を開始します。だから ビッグデータ、 リストには2つの値がありました。 (十一) したがって、これらの値の送信はそのように行われます。 ビッグデータ、2 。
同様に、 Hadoop 値は合計になります。 (十一) 提出は Hadoop、2 。
同じように ハイブ そして MapReduce、 削減機能の提出は ハイブ、3 そして MapReduce、3 それぞれ。
最後に、下の「MapReduceワードカウントプロセス全体」の図に示すように、最終結果がクライアントに返送されます。
全体的なMapReduceワードカウントプロセス
これは、MapReduceWayを使用している場合のワードカウントプロセス全体の仕組みです。
結論
このチュートリアルでは、次のことを学びました。
- HadoopMapReduceは 「プロセッシングユニット」 Hadoopの。
- Hadoop HDFSによって保存されたビッグデータを処理するには、Hadoop MapReduceを使用します。
- これは、検索と索引付け、分類、推奨、および分析で使用されます。
- プログラミングモデル、並列プログラミング、大規模分散モデルなどの機能があります。
- MapReduceの設計パターンは次のとおりです。 要約、トップレコードの分類、結合や選択などの並べ替えと分析。
- 2つの機能しかありません つまり、マッパー機能とレデューサー機能です。
- 並列処理とデータの局所性は、HadoopMapReduceの優れた利点です。
- MapReduceのプロセスは、入力、分割、マッピング、シャッフル、削減、最終結果の6つのフェーズに分かれています。
このチュートリアルは以上です。今後のチュートリアルでは、次の内容について説明します。
- MapReduceはYARNとそのコンポーネントとどのように連携しますか?
- YARNのアプリケーションワークフロー。
- Sparkとは何ですか?HadoopとSparkの違いは何ですか?
=> ここですべてのビッグデータチュートリアルを確認してください。