如何增加Tez的容器物理内存?

时间:2016-10-26 01:45:54

标签: hadoop hive amazon-emr apache-tez tez

我已经在aws emr 4.8群集上运行了一些hive脚本,其中hive 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.

在谷歌搜索此错误时,我读到集合tez.task.resource.memory.mb将改变物理内存限制,但显然我错了。我错过了什么?

4 个答案:

答案 0 :(得分:2)

将Tez容器大小设置为YARN容器大小(4GB)的较大倍数:

SET hive.tez.container.size=4096MB
  
    

" 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映射器内存设置中选择内存大小" mapreduce.map.memory.mb"。

  

https://documentation.altiscale.com/memory-settings-for-tez

了解详情Tez configurationTez memory tuning

注意:使用Ambari

设置为MB

答案 1 :(得分:1)

我经常遇到这个问题。不断变化的

Set hive.tez.container.size=6656;
Set hive.tez.java.opts=-Xmx4g;

不能为我解决问题,但是可以做到:

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

答案 2 :(得分:1)

如果其他任何人在尝试解决以上问题时偶然发现此线程,则这里有一个对我有用的真实解决方案的链接,而其他所有解决方案都没有。

http://moi.vonos.net/bigdata/hive-cli-memory/

TL; DR将它们添加到您的配置单元调用cat_iddesired <- tribble( ~product_name, ~position_1, ~position_2, ~pr, "A", 1, 4, "X", "B", NA, NA, NA, "C", 3, 5, "Y", "D", NA, 6, "Z", )

答案 3 :(得分:0)

Set hive.tez.container.size=6656
Set hive.tez.java.opts=-Xmx4g