sql >> データベース >  >> NoSQL >> HBase

MapReduceのHadoopリデューサークラスとは何ですか?

    これまで、Hadoopの紹介について説明してきました。 およびHadoopHDFS 詳細に。このチュートリアルでは、HadoopReducerの詳細な説明を提供します。

    ここでは、MapReduceのReducerとは何か、Hadoop MapReduceでReducerがどのように機能するか、Hadoop Reducerのさまざまなフェーズ、HadoopMapReduceでReducerの数を変更する方法について説明します。

    Hadoopレデューサーとは何ですか?

    レデューサー Hadoop MapReduceでは、キーを共有する一連の中間値をより小さな値のセットに減らします。

    MapReduceジョブ実行フローでは、Reducerは中間のキーと値のペアのセットを取ります マッパーによって作成されました 入力として。次に、Reducerはキーと値のペアを集約、フィルタリング、および結合します。これには、幅広い処理が必要です。

    MapReduceジョブ実行では、キーとレデューサーの間で1対1のマッピングが行われます。それらは互いに独立しているため、並行して実行されます。 MapReduceのレデューサーの数はユーザーが決定します。

    Hadoopリデューサーのフェーズ

    レデューサーの3つのフェーズは次のとおりです。

    1。シャッフルフェーズ

    これは、マッパーからのソートされた出力がレデューサーへの入力であるフェーズです。 HTTPを使用するフレームワークは、このフェーズのすべてのマッパーの出力の関連するパーティションをフェッチします。ソートフェーズ

    2。並べ替えフェーズ

    これは、さまざまなマッパーからの入力が、さまざまなマッパーの同様のキーに基づいて再度並べ替えられるフェーズです。

    シャッフルとソートの両方が同時に発生します。

    3。フェーズを減らす

    このフェーズは、シャッフルとソートの後に発生します。削減タスクは、キーと値のペアを集約します。 OutputCollector.collect()を使用 プロパティでは、reduceタスクの出力がファイルシステムに書き込まれます。レデューサー出力はソートされていません。

    HadoopMapReduceのレデューサーの数

    ユーザーは、 Job.setNumreduceTasks(int)を使用してレデューサーの数を設定します 財産。したがって、次の式による適切な数のレデューサー:

    0.95または1.75に(<ノード数> * <ノードあたりの最大コンテナ数>)を掛けたもの

    したがって、0.95では、すべてのレデューサーがすぐに起動します。次に、マップが終了したら、マップ出力の転送を開始します。

    より高速なノードは、1.75でレデューサーの最初のラウンドを終了します。次に、ロードバランシングの機能を大幅に向上させるレデューサーの第2波を起動します。

    レデューサーの数の増加に伴い:

    • フレームワークのオーバーヘッドが増加します。
    • 負荷分散が増加します。
    • 失敗のコストは減少します。

    結論

    したがって、Reducerはマッパーの出力を入力として受け取ります。次に、キーと値のペアを処理して出力を生成します。レデューサー出力が最終出力です。このブログが気に入った場合、またはHadoop Reducerに関連する質問がある場合は、コメントを残して共有してください。

    お役に立てば幸いです。


    1. MongoDBはどのようにドキュメントを1つのコレクションに並べ替えますか?

    2. redisがすでにスタックの一部である場合、なぜMemcachedがRedisと一緒に使用されているのですか?

    3. IngressNginxコントローラーでRedisを公開する

    4. Puppetを使用したMongoDBのデプロイとメンテナンスのガイド:パート1