关于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 . "
HIVEC?ONFD?IR/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 [ "
HADOOPC?LIENTO?PTS?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 一下 有错误指正一下!!!
|