jvm重用mapreduce 2.0

14ifxucb  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(380)

我有大量由小文件创建的输入拆分(大约50.000),我想用hadoop处理这些文件。但是,我只有256个容器可以处理它。
作业本身占用大量cpu,但内存却相当少。
我使用的是hadoop2.3,并查看了mapreduce1.0中的jvm重用特性
我也读过关于uber任务的文章,但看起来不一样——或者我对jvm重用有不同的理解。
因为我有很多小文件(并且正在为每个文件生成inputspit),所以我想为每个容器创建一个jvm机器,并为已经分配的jvm运行尽可能多的顺序Map任务。这将减少jvm分配时间开销。
我猜对于每一个输入分割,都会分配一个新的Map器,从而产生一个新的jvm,对吗?
我怎么能用Yarn做这种事?
哦,我知道我也可以使用压缩来增加inputsplit大小,但是对于这个确切的应用程序,这是不可行的。
谨致问候,马可·洛茨

xoefb8l8

xoefb8l81#

对。在yarn中,任务在专用jvm中运行。与mapreduce1不同,它不支持jvm重用。
然而,在MapReduce1中,控制任务jvm重用的属性是 mapred.job.reuse.jvm.num.tasks . 它指定为每个启动的jvm的给定作业运行的最大任务数,默认情况下为 1 . 这个答案应该能让您更好地了解1中的jvm重用。

相关问题