在Hadoop mapreduce作业中重用JVM

Rec*_*010 13 performance hadoop jvm mapreduce

我知道我们可以设置属性"mapred.job.reuse.jvm.num.tasks"来重用JVM.我的问题是:

(1)如何确定这里要设置的任务数,-1还是其他一些正整数?

(2)在mapreduce作业中已经重用JVM并将此属性设置为-1是一个好主意吗?

非常感谢你!

Tho*_*lut 22

如果你有非常小的任务肯定是在彼此之后运行,那么将此属性设置为-1很有用(这意味着生成的JVM将无限次重复使用).所以你只是生成(你的集群中的任务可用于你的工作)-JVMs而不是(任务数量)-JVMs.

这是一个巨大的性能提升.在长时间运行的作业中,运行时与建立新JVM相比的百分比非常低,因此它不会给您带来巨大的性能提升.

此外,在长时间运行的任务中,最好重新创建任务流程,因为堆碎片会降低性能.

此外,如果您有一些中期运行的工作,您可以重复使用2-3个任务,并进行良好的权衡.