我目前正在开发一个hadoop计划。该程序被Hadoop杀死,因为映射器任务器占用了大量内存(大约7G)。有没有办法让一台机器一次只运行一个任务?
我尝试了下面显示的设置,但它没有用。这项任务被hadoop杀死了。
conf.set("mapreduce.tasktracker.reserved.physicalmemory.mb", "7000");
conf.set("mapred.tasktracker.map.tasks.maximum", "1");
群集正在使用mapr-m3
,每台计算机都有15.6GB内存,可用性为70%。
答案 0 :(得分:0)
我认为您必须设置虚拟机选项(这适用于map和reduce任务):
mapred.child.java.opts=-Xmx7000m
如果您支持新API,则只能使用以下内容为映射器指定:
mapreduce.map.java.opts=-Xmx7000m
我有类似的问题,并且还记录了虚拟机堆积,更多内容如下:
small blog post about checking java heap sizes
请注意,还在节点上运行Reducer,因此它们可能会竞争内存,请确保在必要时限制reduce插槽的数量。