2016-12-22 4 views
2

私はアルゴリズムを実装しようとしています.1つの減速器しか必要なく、mapreduceジョブが繰り返し実行されています。特に、各マッパーの結果は、減速機で加算され、処理されます。次いで、減速器の出力は、他の反復においてマッパに入力として渡される。私は、非同期の方法で、すなわち予め定義された数のマッパーが実行されるとすぐに、出力を直接減速機に渡す、すなわち、アルゴリズムのためのオーバーヘッドを作成するためのシャッフルとソートを避けるようにしたい。それも可能ですか?そうでない場合は、実装レベルでmapreduceジョブを非同期で実行するために何ができるのですか。私は研究論文の数に行きましたが、そこから何の考えも得られませんでした。Mapreduceジョブのシャッフル段階をハイドープでバイパスしますか?

ありがとうございました。

答えて

3

独自のカスタムソリューションを作成する必要があります。私は最近、プロジェクトで同様のことをしました。

これは、コードのビットを必要とするので、私はここでしか手順の概要を説明することができます:)マッパーが(これはすぐにあなたのスピードアップを与える終える前に、減速機が起動するように

  • 0.0mapreduce.job.reduce.slowstart.completedmapsを設定しました。ところで、以下の手順を進めて行く前にそれを試してみる;)多分それは十分です)
  • あなたを実装
  • (これはマッパ側である)ソケットに代わりの標準シャッフルパスにシャッフル出力を書き込み、その独自のorg.apache.hadoop.mapred.MapOutputCollectorを実装自分自身org.apache.hadoop.mapred.ShuffleConsumerPluginマッパーによる接続のための、ネットワークからペアを読み込み(これは減速側である)あなたが行う必要があります

もの:

Futherの読み取りを使用するようにジョブのconfigsを調整します)ここで使用したものです

Def。実行可能ですが、いくつかの努力が必要です:)

+0

ありがとう!!私はslowstartを0.0に設定しようとしましたが、それはうまく反映されませんでした。私は間違いなく他のステップを試してみます。 :) – Mohini

+0

MapOutputをMapOutputFileの代わりにSocketに書き出す方法については、2番目のステップで述べたとおりです。あなたはここでどのソケットを参照していますか? – Mohini

+0

@Mohini Reducer側でリッスン側で聞いているソケット –

関連する問題