Hadoop 我如何增加Tez';容器物理内存?

Hadoop 我如何增加Tez';容器物理内存?,hadoop,hive,amazon-emr,apache-tez,tez,Hadoop,Hive,Amazon Emr,Apache Tez,Tez,我在一个aws emr 4.8集群上运行了一些配置单元脚本,配置了配置单元1.0和tez 0.8 我的配置如下所示: SET hive.exec.compress.output=true; SET mapred.output.compression.type=BLOCK; SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict; set hive.execution.engi

我在一个
aws emr 4.8
集群上运行了一些配置单元脚本,配置了配置单元1.0和tez 0.8

我的配置如下所示:

SET hive.exec.compress.output=true;
SET mapred.output.compression.type=BLOCK;
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
set hive.execution.engine=tez;
set hive.merge.mapfiles=false;
SET hive.default.fileformat=Orc;
set tez.task.resource.memory.mb=5000;
SET hive.tez.container.size=6656;
SET hive.tez.java.opts=-Xmx5120m;
set hive.optimize.ppd=true;
我的全局配置是:

hadoop-env.export   HADOOP_HEAPSIZE 4750
hadoop-env.export   HADOOP_DATANODE_HEAPSIZE    4750
hive-env.export HADOOP_HEAPSIZE 4750
运行脚本时,出现以下错误:

Container [pid=19027,containerID=container_1477393351192_0007_02_000001] is running beyond physical memory limits. Current usage: 1.0 GB of 1 GB physical memory used; 1.9 GB of 5 GB virtual memory used. Killing container.

在谷歌搜索这个错误时,我读到set
tez.task.resource.memory.mb将改变物理内存限制,但显然我错了。我遗漏了什么?

将Tez容器大小设置为纱线容器大小(4GB)的更大倍数:

Set hive.tez.container.size=6656
Set hive.tez.java.opts=-Xmx4g
“hive.tez.container.size”和“hive.tez.java.opts”是改变hive中tez内存设置的参数。如果“hive.tez.container.size”设置为“-1”(默认值),它将选择“mapreduce.map.memory.mb”的值。如果未指定“hive.tez.java.opts”,则它依赖于“mapreduce.map.java.opts”设置。因此,如果Tez特定的内存设置保留为默认值,那么内存大小将从mapreduce mapper内存设置“mapreduce.map.memory.mb”中选择

欲了解更多信息和


注意:使用Ambari设置MB时,我经常遇到这个问题。变化

Set hive.tez.container.size=6656;
Set hive.tez.java.opts=-Xmx4g;
不会为我解决问题,但这会:

set tez.am.resource.memory.mb=4096;

如果其他人无意中发现了试图解决上述问题的这条线索,这里有一个链接,指向一个真正的解决方案,它对我有效,而其他所有解决方案都没有

TL;DR将这些添加到您的配置单元调用
——hiveconf tez.am.resource.memory.mb=

--hiveconf tez.am.launch.cmd opts=“”

那么它与SET hive.tez.container.size=6656有什么不同呢;设置hive.tez.java.opts=-Xmx5120m;语句末尾没有分号。我在container.size中遇到了类似的失败“…期望INT-type值”。我删除了语句末尾的分号,失败就消失了。但是我不知道为什么这个修复程序会起作用。这个命令在hadoop conf上有效吗?还是仅仅为了蜂巢?例如,这是否有效(设置mapreduce.reduce.memory.mb=4096)?是否有理由设置hive.tez.container.size=6656;无法工作?此外,查询返回非零代码:1,原因:“SET hive.tez.container.size=6656MB”失败,因为hive.tez.container.size需要INT-type值。因此,我已经在配置中设置了容器大小以及tez.java.opts。尽管如此,我的物理内存还是1G。altiscale页面正是我找到这些的地方,但对我不起作用/这个命令在hadoop conf上有效吗?还是仅仅为了蜂巢?例如,这是否有效(设置mapreduce.reduce.memory.mb=4096)?
tez.am.resource.memory.mb=4096是我的解决方案。在我的例子中,是应用程序主控程序(am)内存太少,因此在调度时作业失败。
set tez.am.resource.memory.mb=4096;