0

私の質問に関連して、Python で書かれたストリーミング プロセスがあります。

Reducerそれぞれが を通じて複数のキーに関連付けられたすべての値を取得していることに気付きましたsys.stdin

sys.stdin には 1 つのキーに関連付けられた値のみを持たせたいと思います。これはHadoopで可能ですか? キーごとに異なるプロセスが完璧だと思いますが、この動作を与える構成が見つかりません。

これに役立つ情報やコードを提供してくれる人はいますか?

4

2 に答える 2

1

各マッパーは、レデューサーごとに 1 つの出力ファイルを生成するため、使用可能なレデューサーの総数を認識している必要があります。ジョブを開始する前にキーの数がわかっている場合は、その数のレデューサーを持つようにジョブを構成できます。そうしないと、マッパーが完了するまでキーの総数がわからないため、運が悪くなります。

于 2013-04-08T21:36:36.567 に答える
0

はい、マッパーが発行するキーの総数がわかっている場合。job.setNUMReduceTasks(int n) として設定できます

また、並列実行されるレデューサーの総数は、mapred-site.xml で次のように定義できます。

mapred.tasktracker.reduce.tasks.maximum

これにより、削減プロセスが高速化されます。ただし、各レデューサーは jvm タスクとして実行されます。したがって、構成は、生成されるjvmの数を処理できる必要があります

于 2013-04-09T06:50:11.293 に答える