在没有mapred-site.xml的情况下设置hadoop mapreduce大小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在没有mapred-site.xml的情况下设置hadoop mapreduce大小相关的知识,希望对你有一定的参考价值。

我在服务器上运行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程序的配置中做一个方法。

我用hive运行这个工作,我能够像这样覆盖这些属性:

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;

但是当我编写地图缩减程序而不是hive查询时,我该如何更改这些?

我怎样才能在shell中导出mapreduce.reduce.memory.mb?

答案

您可能需要像这样指定,以便为每个应用程序/作业添加配置参数集

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

注意:使用您的Driver类名称将YOUR_JAR.jar替换为Jar和ClassName

另一答案

我最终通过在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")

请注意分配给减速机的编号。我的映射器内存和reducer内存具有相同的容量,我遇到了一些错误。它不应该是一样的!

以上是关于在没有mapred-site.xml的情况下设置hadoop mapreduce大小的主要内容,如果未能解决你的问题,请参考以下文章

搭建hadoop2.4.1版本中/etc/hadoop/中找不到mapred-site.xml文件

Hadoop mapred-site.xml 1:1:prolog 中不允许内容

2.安装hdfs yarn

Hadoop 2.6集群mapred-site.xml jobtracker端口未监听

Hadoop 执行:hdfs namenode -format 格式文件系统时出错。提示mapred-site.xml文件有错?

Yarn 容器 lauch 失败异常和 mapred-site.xml 配置