目录
问题描述
如图1所示,运行一些涉及到mapreduce的HQL语句时,会报虚拟内存不够。
图 1 错误显示截图
解决办法
关闭集群等其他服务
-
mapred-site.xml
<property>
<name>mapreduce.map.memory.mb</name>
<value>1536</value>
</property>
<property>
<name>mapreduce.map.java.opts</name>
<value>-Xmx1024M</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>3072</value>
</property>
<property>
<name>mapreduce.reduce.java.opts</name>
<value>-Xmx2560M</value>
</property>
2.yarn-site.xml
<property>
<!-- 是否对容器强制执行虚拟内存限制 -->
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
<description>Whether virtual memory limits will be enforced for containers</description>
</property>
<property>
<!-- 为容器设置内存限制时虚拟内存与物理内存之间的比率 -->
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
<description>Ratio between virtual memory to physical memory when setting memory limits for containers</description>
</property>
3.hive-site.xml
<!-- 设置 tez container内存 调大-->
<property>
<name>hive.tez.container.size</name>
<value>3072</value>
</property>
4.给虚拟机增加内存
以上文件涉及到组件分布式安装,记得分发给其他两个节点。重启集群,再尝试运行代码。