hadoop - JVM 重用 MapReduce 2.0 YARN

标签 hadoop mapreduce jvm hadoop-yarn

我有大量由小文件创建的输入拆分(大约 50,000 个),我想使用 Hadoop 处理这些拆分。但是,我只有 256 个容器可用于处理它。

作业本身使用大量 CPU,但使用相当少的内存。

我正在使用 Hadoop 2.3 并查看了 MapReduce 1.0 中的 JVM 重用功能

我也读过关于 uber tasks 的内容,但它看起来不是一回事 - 或者我对 JVM 重用有不同的理解。

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

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

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

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

最好的问候, 马可洛兹

最佳答案

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

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

关于hadoop - JVM 重用 MapReduce 2.0 YARN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24835361/

相关文章:

hadoop - 如何在新的 Hadoop api 中设置映射器的数量?

java - 如何以编程方式获取堆栈内存统计信息?

hadoop - 映射功能在EMR中运行的mapreduce中失败

Hadoop MapReduce 思考

jenkins - 下载Docker Jenkins镜像后在Ubuntu中找不到jenkins_home文件夹

c# - 如何使用 C# 访问 jar 文件(其中包含 Java .class 作为 API)

hadoop - hadoop slaves文件中的机架号?

mysql - hive 中的等级/组

hadoop - SSIS上的Hadoop Hive任务返回错误代码64

streaming - 如何在 hadoop 流中使用将文件名作为参数的二进制可执行文件?