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

ubbxdtey  于 2021-06-02  发布在  Hadoop
关注(0)|答案(4)|浏览(1115)

我在电脑上运行了一些Hive脚本 aws emr 4.8 群集配置Hive1.0和Tez0.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 会改变物理内存的限制,但显然我错了。我错过了什么?

kcrjzv8t

kcrjzv8t1#

将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 mapper内存设置“mapreduce.map.memory.mb”中选择。
https://documentation.altiscale.com/memory-settings-for-tez
更多关于tez配置和tez内存调整的信息
注:用ambari设置为mb

zour9fqk

zour9fqk2#

如果其他人偶然发现了这个线程试图解决上述问题,这里是一个链接到一个真正的解决方案,为我工作,而所有其他解决方案没有。
http://moi.vonos.net/bigdata/hive-cli-memory/
热释光;医生把这些加到你的 hive 电话里
--hiveconf tez.am.resource.memory.mb= --hiveconf tez.am.launch.cmd-opts=""

du7egjpx

du7egjpx3#

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

kyks70gy4#

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

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

不会为我解决问题,但这会:

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

相关问题