我在电脑上运行了一些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
会改变物理内存的限制,但显然我错了。我错过了什么?
4条答案
按热度按时间kcrjzv8t1#
将tez容器大小设置为Yarn容器大小(4gb)的较大倍数:
“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
zour9fqk2#
如果其他人偶然发现了这个线程试图解决上述问题,这里是一个链接到一个真正的解决方案,为我工作,而所有其他解决方案没有。
http://moi.vonos.net/bigdata/hive-cli-memory/
热释光;医生把这些加到你的 hive 电话里
--hiveconf tez.am.resource.memory.mb=
--hiveconf tez.am.launch.cmd-opts=""
du7egjpx3#
kyks70gy4#
我经常遇到这个问题。变化中的
不会为我解决问题,但这会: