beeline在插入大批量的数据时报错,但是hive能插入
改为插入之前先查询一下,报出错误:GC overhead limit exceeded
这就好多了,不就是jvm内存溢出了嘛,因为hive能插入,所以不用改hive-site.xml配置文件,只改hive-env.sh就行,打开HADOOP_HEAPSIZE并调大,if语句中也跟着改
if [ "$SERVICE" = "cli" ]; then
if [ -z "$DEBUG" ]; then
export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -Xmx4096m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:+UseParNewGC -XX:-UseGCOverheadLimit"
else
export HADOOP_OPTS="$HADOOP_OPTS -XX:NewRatio=12 -Xms10m -Xmx4096m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit"
fi
fi
# The heap size of the jvm stared by hive shell script can be controlled via:
#
export HADOOP_HEAPSIZE=4096
JVM的三大性能调优参数:-Xms –Xmx –Xss
-Xss:每个线程堆栈最小值,可以根据具体可以进行调整。随情况而定
-Xms:heap设置的初始值。
-Xmx:heap设置的最大堆的值。
?
有错一定要看日志,下列举几个log目录:
1.看yarn任务执行的log
2.看/tmp/root/hive.log(如果你用的用户是dc_dev,就看/tmp/dc_dev/)
3.看/opt/hadoop/log/yarn-root-nodemanager-*.log(这个判断是节点所需要的内存超没超)
|