关于Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. GC overhead limit exceeded
解决过程
1.查看集群负载情况,可以通过jstat | jmap | jconsole 等命令查看
使用jstat -gc pid 5000 输出情况
这个是报错之后截取的,其实看看得出除开O区其他都还好
如果我想去调节hive的JVM堆和垃圾回收该怎么改呢?
先去看一下启动文件 hive
首先看到:
if [ -f “
H
I
V
E
C
O
N
F
D
I
R
/
h
i
v
e
−
e
n
v
.
s
h
"
]
;
t
h
e
n
.
"
{HIVE_CONF_DIR}/hive-env.sh" ]; then . "
HIVECONFDIR/hive−env.sh"];then."{HIVE_CONF_DIR}/hive-env.sh”
Fi
然后我就又去看了一下 hive-env.sh
#Hive Client memory usage can be an issue if a large number of clients
#are running at the same time. The flags below have been useful in
#reducing memory usage:
#if [ “KaTeX parse error: Expected 'EOF', got '#' at position 26: … "cli" ]; then #̲if [ -z "DEBUG” ]; then
#export HADOOP_OPTS=“KaTeX parse error: Expected 'EOF', got '#' at position 127: …OverheadLimit" #̲else #export HA…HADOOP_OPTS -XX:NewRatio=12 -Xms10m -XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit”
#fi
#fi
这翻译过来不就是当一个大的连接量的时候 取消这个注释
我就取消了 还加了一堆jvm参数
但是发现没有用 对我想要改的操作没啥用 这一看自己分析错了
我就继续看hive的启动脚本, 看到 那是不是应该参数加到HADOOP_CLIENT_OPTS上
if [[ "
S
E
R
V
I
C
E
"
=
(
h
i
v
e
s
e
r
v
e
r
2
∣
b
e
e
l
i
n
e
∣
c
l
i
)
SERVICE" =~ ^(hiveserver2|beeline|cli)
SERVICE"= (hiveserver2∣beeline∣cli) ]] ; then
If process is backgrounded, don’t change terminal settings
if [[ ( ! $(ps -o stat= -p KaTeX parse error: Expected 'EOF', got '&' at position 12: ) =~ "+" ) &̲& ! ( -p /dev/s…) =~ “?” ) ]]; then
export HADOOP_CLIENT_OPTS=“
H
A
D
O
O
P
C
L
I
E
N
T
O
P
T
S
−
D
j
l
i
n
e
.
t
e
r
m
i
n
a
l
=
j
l
i
n
e
.
U
n
s
u
p
p
o
r
t
e
d
T
e
r
m
i
n
a
l
"
f
i
F
i
之
后
我
在
我
就
还
是
在
h
i
v
e
−
e
n
v
.
s
h
添
加
了
以
下
配
置
i
f
[
"
HADOOP_CLIENT_OPTS -Djline.terminal=jline.UnsupportedTerminal" fi Fi 之后我在我就还是在hive-env.sh 添加了以下配置 if [ "
HADOOPCLIENTOPTS−Djline.terminal=jline.UnsupportedTerminal"fiFi之后我在我就还是在hive−env.sh添加了以下配置if["SERVICE” = “hiveserver2” ]; then
export HADOOP_CLIENT_OPTS=“$HADOOP_CLIENT_OPTS -Xms2048m -Xmx2048m -XX:+UseParNewGC -XX:ParallelGCThreads=13 -XX:+UseConcMarkSweepGC -XX:+CMSConcurrentMTEnabled -XX:ParallelCMSThreads=13 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSClassUnloadingEnabled -XX:+DisableExplicitGC -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=1”
-XX:MaxHeapFreeRatio=40 -XX:MinHeapFreeRatio=15 -XX:-UseGCOverheadLimit"
Fi
重启一下之后 jstat 一下
有错误指正一下!!!