私の理解しているように、マッパーが最初に実行され、その後にパーティショナー(存在する場合)が続いてレデューサーが続きます。しかし、Partitionerクラスを使用すると、ソートとシャッフルのフェーズが実行されるときはわかりません。PartitionerがMap Reduceで実行されている場合
答えて
シャッフル及び位相は常に(マッパーと減速ノード間で)実行されます。
以下としてのMapReduceに異なる相の階層:
マップ - >パーティション - >コンバイナ(オプション) - >シャッフル及びソート - >減らし。
短い答えは:データは、減速の実行を並べ替えるシャッフル/並べ替えの実行前に減速を(常に)と後のマップ/コンバイナ(もしあれば)/パーティ(もしあれば)。 マッパー、コンバイナ、パーティショナ、リデューサー:
長い答えは、MapReduceのジョブに4人の主要なプレーヤーがあるということです。これらはすべてあなた自身が実際に実装できるクラスです。
はのは、有名なワードカウントプログラムを見てみましょう、と我々が取り組んでいる分割が含まれているとしましょう:
pippo, pluto, pippo, pippo, paperino, pluto, paperone, paperino, paperino
と各単語がレコードです。
マッパー
各マッパーは、あなたのファイルのサブセット上で動作し、そのタスクは、スプリットから各レコードを読み、各レコードが出力されますにキーを割り当てることです。 Mapperは中間結果をディスク(ローカルディスク)に保存します。
この段階からの中間出力は、この時
pippo,1
pluto,1
pippo,1
pippo,1
peperino,1
pluto,1
paperone,1
paperino,1
paperino,1
はマッパーを実行するノードのローカルディスク上に格納されるであろう。
コンバイナ
それは、ミニ減速だとデータを集約することができます。また、マップ・ジョインと呼ばれるジョインも実行できます。このオブジェクトは、ローカルノード上のデータを集約するため、帯域幅をクラスタに保存するのに役立ちます。
依然としてマッパー相の一部であるコンバイナからの出力は、次のようになります。もちろん
pippo,3
pluto,2
paperino,3
paperone,1
ここで一つのノードからのデータです。グローバルな結果を得るには、データをレデューサーに送信する必要があります。どのレデューサーがレコードを処理するかは、パーティショナーによって異なります。
パーティショナ
それの仕事は、すべての利用可能な減速にデータを分散することです。このオブジェクトはコンバイナからの出力を読み取り、キーを処理する減速器を選択します。この例では
我々は2つのレデューサーを持っているし、我々は次のルールを使用します。
all the pippo goes to reducer 1
all the pluto goes to reducer 2
all the paperino goes to reducer 2
all the paperone goes to reducer 1
ので、すべてのノードが(1)、すべてのノードが送信されます同じ減速への鍵ピッポを持つレコードを送信しますその上、同じ減速への鍵冥王星を持つレコード(2)と...データがシャッフルを受けるのはここ
がある/コンバイナはすでに、ローカルでこのノードをデータを減少するので、をソートし、 9の代わりに4レコードのみを送信する必要があります。
減速
このオブジェクトは、各ノードからのデータを集約することができ、それはまた、データをソートすることができます。
- 1. Hadoop MapReduceが実行されていません0%Map and Reduce
- 2. Hadoop map reduce example実行中のジョブが滞っている
- 3. Mongodb map reduce対Apache Spark map reduce
- 4. 文が実行されない場合
- 5. DeepLearning4J:org.nd4j.linalg.factory.Nd4jBackend $ NoAvailableBackendExceptionがjupyterで実行されている場合
- 6. アニメーションがcocos2d-xで実行されている場合
- 7. map/reduceでETLを実行する方法
- 8. Map/Reduceプログラムで複数のジョブを実行する
- 9. ForEach内でステートメントが実行されていない場合
- 10. ローカルhadoopのmap-reduceを実行してもデータが予期したとおりに分割されない
- 11. .htaccees条件 - 実行、ファイルタイプが定義されている場合
- 12. ジョブが実行されている場合の戻り値
- 13. チェックリモートプロセスが実行されている場合(Linux)の
- 14. アクティビティが実行されている場合、インテントエキストラを取得
- 15. コードブロックが一緒に実行されている場合
- 16. スレーブノードはHadoop Map/Reduce Jobを実行できますか?
- 17. Python/PyMongo内でJavaScriptコードを実行map/reduce
- 18. CouchBase Liteでmap reduceを実行するとエラーが発生する
- 19. Cassandras Map Reduce Support
- 20. CouchDB:Erlangのmap-reduce
- 21. Codeigniter。 Map/reduce library
- 22. mongoDB Map/Reduce
- 23. このコードが実行されている場合はコードを実行
- 24. pythonのif文が実行されていない場合
- 25. ステートメントが実行されていない場合
- 26. ステートメントが正しく実行されていない場合
- 27. '一部が実行されていない場合C#
- 28. なぜブロックが実行されていない場合
- 29. 特別なユーザで実行されている場合のアプリケーションクラウド
- 30. Rails 3 - JS内で実行されているRubyの場合
マップ - >パーティション - >並べ替え - >シャッフル - >並べ替え - >縮小 https://0x0fff.com/hadoop-mapreduce-comprehensive-description/ – cody123