JVM重用MapReduce 2.0纱

Pro*_*eus 3 hadoop jvm mapreduce hadoop-yarn

我有很多输入拆分(大约50.000)是由要使用Hadoop处理的小文件创建的。但是,我只有256个可用的容器来处理它。

作业本身占用大量CPU,但占用的内存却很少。

我正在使用Hadoop 2.3,并且正在研究MapReduce 1.0中的JVM重用功能

我还阅读了有关超级任务的信息,但看起来似乎不太一样-或我对JVM重用有不同的了解。

由于我有很多小文件(并且每个文件都生成一个inputSplit),因此我想为每个容器创建一个JVM计算机,并为每个已分配的JVM运行尽可能多的顺序Map任务。这将减少JVM分配时间的开销。

我猜对于每个输入拆分,都会分配一个新的映射器,从而分配一个新的JVM,对吗?

我如何在YARN中做这样的事情?

哦,我知道我也可以使用压缩来增加inputSplit的大小,但是对于这种确切的应用程序,这是不可行的。

最好的问候,Marco Lotz

Pha*_*hul 5

是。在yarn中,任务在专用的JVM中运行。与mapreduce 1不同,它不支持JVM重用。

但是,在mapreduce 1中,用于控制任务JVM重用的属性是mapred.job.reuse.jvm.num.tasks。它为每个启动的JVM指定为给定作业运行的最大任务数,默认情况下为1这个答案应该使您对1中的JVM重用有更好的了解。