私の質問に関連して、Python で書かれたストリーミング プロセスがあります。
Reducer
それぞれが を通じて複数のキーに関連付けられたすべての値を取得していることに気付きましたsys.stdin
。
sys.stdin には 1 つのキーに関連付けられた値のみを持たせたいと思います。これはHadoopで可能ですか? キーごとに異なるプロセスが完璧だと思いますが、この動作を与える構成が見つかりません。
これに役立つ情報やコードを提供してくれる人はいますか?
私の質問に関連して、Python で書かれたストリーミング プロセスがあります。
Reducer
それぞれが を通じて複数のキーに関連付けられたすべての値を取得していることに気付きましたsys.stdin
。
sys.stdin には 1 つのキーに関連付けられた値のみを持たせたいと思います。これはHadoopで可能ですか? キーごとに異なるプロセスが完璧だと思いますが、この動作を与える構成が見つかりません。
これに役立つ情報やコードを提供してくれる人はいますか?
各マッパーは、レデューサーごとに 1 つの出力ファイルを生成するため、使用可能なレデューサーの総数を認識している必要があります。ジョブを開始する前にキーの数がわかっている場合は、その数のレデューサーを持つようにジョブを構成できます。そうしないと、マッパーが完了するまでキーの総数がわからないため、運が悪くなります。
はい、マッパーが発行するキーの総数がわかっている場合。job.setNUMReduceTasks(int n) として設定できます
また、並列実行されるレデューサーの総数は、mapred-site.xml で次のように定義できます。
mapred.tasktracker.reduce.tasks.maximum
これにより、削減プロセスが高速化されます。ただし、各レデューサーは jvm タスクとして実行されます。したがって、構成は、生成されるjvmの数を処理できる必要があります