我正在服务器上运行mapreduce作业,并且不断收到此错误:
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143
Container is running beyond physical memory limits. Current usage: 1.0
GB of 1 GB physical memory used; 2.7 GB of 2.1 GB virtual memory used.
Killing container.
我当然已经阅读了所有可能的资源,并且我知道我需要在以下文件中设置配置: mapred-site.xml \\ yarn-site.xml
但是我们的服务器不允许我覆盖这些属性,我希望有一种方法可以在我的hadoop程序的终端或配置中进行。
我正在用蜂巢进行这项工作,并且能够像这样覆盖这些属性:
set HADOOP_HEAPSIZE=4096;
set mapreduce.reduce.memory.mb = 4096;
set mapreduce.map.memory.mb = 4096;
set tez.am.resource.memory.mb=4096;
set yarn.app.mapreduce.am.resource.mb=4096;
但是当我编写一个map reduce程序而不是蜂巢式查询时,如何更改这些?
例如,如何在shell中导出mapreduce.reduce.memory.mb?
答案 0 :(得分:2)
您可能需要这样指定才能为每个应用程序/作业添加配置参数集
export HADOOP_HEAPSIZE=4096
hadoop jar YOUR_JAR.jar ClassName -Dmapreduce.reduce.memory.mb=4096 -Dmapreduce.map.memory.mb=4096 -Dyarn.app.mapreduce.am.resource.mb=4096 /input /output
注意:将YOUR_JAR.jar替换为Jar,将ClassName替换为Driver类名
答案 1 :(得分:1)
我最终通过在mapreduce脚本中将内存大小设置为以下方式解决了这个问题:
conf.set("mapreduce.map.memory.mb", "4096")
conf.set("mapreduce.reduce.memory.mb", "8192")
conf.set("mapred.child.java.opts", "-Xmx512m")
conf.set("tez.am.resource.memory.mb", "4096")
conf.set("yarn.app.mapreduce.am.resource.mb", "4096")
请注意分配给减速器的编号。我的映射器内存和减速器内存具有相同的容量,并且出现了一些错误。应该不一样!