0

我目前正在开发一个hadoop程序。该程序被 Hadoop 杀死是因为 mapper tasker 占用了高内存(大约 7G)。有没有办法让一台机器一次只运行一个任务?

我尝试了如下所示的设置,但没有成功。该任务被hadoop杀死。

conf.set("mapreduce.tasktracker.reserved.physicalmemory.mb", "7000");
conf.set("mapred.tasktracker.map.tasks.maximum", "1");

集群正在使用mapr-m3,每台机器都有 15.6GB 内存,可用性为 70%。

4

1 回答 1

0

我认为您必须设置虚拟机选项(这适用于 map 和 reduce 任务):

mapred.child.java.opts=-Xmx7000m

如果您支持新的 API,您可以只为映射器指定它:

mapreduce.map.java.opts=-Xmx7000m

我遇到了类似的问题,还记录了虚拟机堆大小,更多内容请参见:
关于检查 Java 堆大小的小型博客文章

请注意,reducer 也在节点上运行,因此它们可能会竞争内存,请确保在必要时限制 reduce 插槽的数量。

于 2013-08-30T07:49:09.300 回答