如何更改 mapreduce/hive 作业中的物理内存?
Posted
技术标签:
【中文标题】如何更改 mapreduce/hive 作业中的物理内存?【英文标题】:How can I change physical memory in a mapreduce/hive job? 【发布时间】:2020-09-05 08:32:55 【问题描述】:我正在尝试在具有 40 个工作节点和单个主节点的 EMR 集群上运行 Hive INSERT OVERWRITE
查询。
但是,在运行 INSERT OVERWRITE
查询时,只要我到达Stage-1 map = 100%, reduce = 100%, Cumulative CPU 180529.86 sec
这种状态,我得到以下错误:
Ended Job = job_1599289114675_0001 with errors
Diagnostic Messages for this Task:
Container [pid=9944,containerID=container_1599289114675_0001_01_041995] is running beyond physical memory limits. Current usage: 1.5 GB of 1.5 GB physical memory used; 3.2 GB of 7.5 GB virtual memory used. Killing container.
Dump of the process-tree for container_1599289114675_0001_01_041995 :
我不确定如何更改 1.5 GB 物理内存编号。在我的配置中,我没有看到这样的数字,我也不明白这个 1.5 GB 的数字是如何计算出来的。
我什至尝试按照某些论坛的建议将 "yarn.nodemanager.vmem-pmem-ratio":"5"
更改为 5。但不管这种变化,我仍然得到错误。
这是工作的开始方式:
Number of reduce tasks not specified. Estimated from input data size: 942
Hadoop job information for Stage-1: number of mappers: 910; number of reducers: 942
这就是我的configuration file 在集群中的样子。我无法理解我必须更改哪些设置才能不遇到此问题。也可能是由于 Tez 设置造成的吗?虽然我没有用它作为引擎。
任何建议将不胜感激,谢谢。
【问题讨论】:
【参考方案1】:在打开 hive 控制台时,将以下内容附加到命令中
--hiveconf mapreduce.map.memory.mb=8192 --hiveconf mapreduce.reduce.memory.mb=8192 --hiveconf mapreduce.map.java.opts=-Xmx7600M
如果您仍然遇到 Java 堆错误,请尝试增加更高的值,但请确保 mapreduce.map.java.opts 不超过 mapreduce.map.memory.mb。
【讨论】:
以上是关于如何更改 mapreduce/hive 作业中的物理内存?的主要内容,如果未能解决你的问题,请参考以下文章