1. ホーム
  2. performance

[解決済み] HadoopのMapreduceジョブでJVMを再利用する。

2022-02-07 20:18:37

質問内容

JVMを再利用するために、プロパティ "mapred.job.reuse.jvm.num.tasks" を設定できることは承知しています。私の質問は次のとおりです。

(1) ここに設定するタスクの数はどのように決めるのでしょうか。-1や他の正の整数がありますか?

(2) Mapreduceジョブにおいて、すでにJVMを再利用し、このプロパティを-1の値に設定することは良いアイデアでしょうか?

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

解決方法は?

もし、非常に小さなタスクがあり、間違いなく互いに続いて実行される場合、このプロパティを-1に設定すると便利です(生成されたJVMが無制限に再利用されることを意味します)。 つまり、(タスクの数)-JVMの代わりに、(ジョブが利用できるクラスタ内のタスクの数)-JVMを生成すればいいのです。

これは大きな性能向上です。長時間稼働するジョブでは、新しいJVMをセットアップするのに比べて実行時間の割合は非常に低いので、大きな性能向上は望めません。

また、長時間稼働するタスクでは、ヒープの断片化などの問題でパフォーマンスが低下するため、タスク・プロセスを再作成するのがよいでしょう。

また、中途半端な時間稼動のジョブがある場合、2-3個のタスクだけを再利用することも可能で、良いトレードオフの関係にあると言えます。