解决HiveSQL查询出现Java.lang.OutMemoryError.java heap space
使用Hive时,出现了以下问题时:
这个问题有的是没有资源导致的,有时的是因为计数器太多,超出了MapReduce的计算数的最大值。所以这个时候一定要看系统日志:/tmp/hadoop/hive.log
关于日志路径的说明:中间的hadoop是当前系统登录的用户
这篇文章主要解决资源不足的情况:
故知具体错误原因为JVM资源分配不够
接下来可以尝试这几种方法
方法一:调整Yarn资源分配
编辑yarn-site.xml修改yarn的分配资源量
vim /opt/ha/hadoop-3.1.3/etc/hadoop/yarn-site.xml
添加如下配置:
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>4096</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx2048m</value>
</property>
分发到其他服务器,重启yarn
方法二:Hive堆栈资源分配
查看hive-env.sh可以发现默认分配给Hive堆栈的资源是256MB,这个才是最根本的问题
调整资源,设置为4096即可: