2017-10-29 15 views
0

map-reduceジョブのループを実装する必要があります。各反復は、前の反復に応じて終了または続行されます。選択肢は、「1つの単語がレジューサー出力に表示されているか」に基づいています。還元剤がHadoopマップ還元剤のドライバーにメッセージを渡すことはできますか?

もちろん、ドライバプログラムで出力txtファイル全体を調べることができます。しかし、それは単なる一言であり、ファイル全体を見渡すことは過度のことです。減速機と運転手の間にコミュニケーションを構築する方法があると考えていますが、減速機は運転手にそれを検出したら通知することができますか?転送されるメッセージは少ないためです。

+2

Mapreduceは「カウンタ」の概念をサポートしています。あるいは、ループではなくワークフローに組み込んでいるこの「DAGのタスク」を得るために、代わりにSparkを試してみてください –

答えて

-1

あなたのソリューションは、クリーンな解決策ではなく、維持管理が難しいでしょう。

あなたが求めていることを達成するには複数の方法があります。単語が発見された場合にのみ、マッパーから発光するように

1. Reducer as soon as it finds a word writes to a HDFS location (opens file on hdfs predefine filedir and writes there) 
2. client keeps polling the predefined filedir/output dir of the job. If the output dir is found and there is no filedir it means word wasnt there. 
3. Use Zookeper 

ベストソリューションは次のようになり、 は何かを放出しません。これにより、あなたの仕事が固定され、単一の レデューサーが生成されます。これで、ジョブの出力に出力上のファイルがあるかどうかを安全に確認できます。減速する行がない場合は、レイジー初期化を使用します。

関連する問題