HiveServer2 频繁宕机根本原因分析

本文深入分析了HiveServer2在凌晨因内存泄漏导致的宕机问题,通过jstat与heapdump发现内存占用持续增长直至OOM,确认为HiveServer本身内存管理问题。探讨了不解决或版本升级的应对策略。


概要

问题描述: hiveServer2跑一段时间后, 一般在凌晨就会宕机(凌晨有很多定时任务),宕机比较有规律,就是跑几天就宕一次,分析一下原因。作业没有特别大的任务。
分析方法:jstat, dump
分析结论:hive2的hiveServer本身内存泄漏造成
解决方法:不解决或升级。


一、进行heap dump

1.1 查HiveServer2的进程id,得到219045

root@tbds-10-232-2-37:/data/var> ps -ef|grep HiveServer2
hive     219045      1 92 Feb17 ?        3-13:55:08 /usr/jdk64/jdk1.8.0_111/bin/java -Xmx16384m -Dhdp.version=2.2.0.0-2041 -Djava.net.preferIPv4Stack=true -Dhdp.version=2.2.0.0-2041 -Dhadoop.log.dir=/data/var/log/hadoop/hive -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/data/bigdata/tbds/usr/hdp/2.2.0.0-2041/hadoop -Dhadoop.id.str=hive -Dhadoop.root.logger=INFO,console -Djava.library.path=:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64:/data/bigdata/tbds/usr/hdp/2.2.0.0-2041/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx16384m -Djava.security.auth.login.config=/etc/hive/conf.server/kafka_client_for_ranger_jaas.conf -XX:+UseG1GC -XX:InitiatingHeapOccupancyPercent=70 -XX:+PrintGCDateStamps -XX:GCLogFileSize=512M -verbose:gc -XX:+PrintGCDetails -Xloggc:/data/var/log/hive/hive_gc.log -Dlog4j.configurationFile=/etc/hive/conf/hive-log4j2.xml -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/hdp/2.2.0.0-2041/hive/lib/hive-service-2.2.0.jar org.apache.hive.service.server.HiveServer2 --hiveconf hive.aux.jars.path=file:///usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-core-2.2.0.jar,file:///usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-core.jar,file:///usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-pig-adapter-2.2.0.jar,file:///usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-pig-adapter.jar,file:///usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-server-extensions-2.2.0.jar,file:///usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-server-extensions.jar,file:///usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-streaming-2.2.0.jar,file:///usr/hdp/current/hive-webhcat/share/hcatalog/hive-hcatalog-streaming.jar -hiveconf hive.metastore.uris= 

1.2 根据进程号,查jstat的gc信息

root@tbds-10-x-xx-x:/data/var>jstat -gcutil 219045 2000
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00   0.00  88.12  73.03  36.52  14741 3097.156     3   94.687 3191.843
  0.00   0.00   0.00  88.12  73.03  36.52  14741 3097.156     3   94.687 3191.843
  0.00   0.00   0.00  88.12  73.03  36.52  14741 3097.156     3   94.687 3191.843
  0.00   0.00   0.00  88.12  73.03  36.52  14741 3097.156     3   94.687 3191.843

在这里插入图片描述

发现fullGC后,老年代,还是很满(FullGC的次数由2变到3)。

在这里插入图片描述
艰难的fullGC,
经过28s的fullGC,顺利完成gc,但老年代92.19%,按照目前趋势 应该明天凌晨就跑挂,看看预言成真不。。。

在这里插入图片描述

二、heap dump分析

2.1 把hiveServer2的heap dump回来

经过FullGC后进行的heap dump.
-dump:live 只要存活的对象

hive@tbds-x-x-x-x:/data/var/hiveDump>jmap -dump:live,format=b,file=/data/var/hiveDump/hiveserver2.afterFgc.dump.bin 219045
Dumping heap to /data/var/hiveDump/hiveserver2.dump.bin ...
Heap dump file created

dump回来,发现文件大小17G。

2.2 使用eclipse memory analyzer进行分析

修改EMA的MemoryAnalyzer.ini,把Xmx改为28G, -Xmx28672m.(我的电脑32G)

2.3 leak suspects

发现问题:
问题1: 7627个org.apache.hadoop.hive.ql.exec.UDFClassLoader 占用4.1G内存
问题2:16585个log4jd的RandomAccessFile占用 4.1G内存
问题3:java.util.jar.JarFile占用2.9G
这三个对象把都实例放到HashMap上进行缓存,导致实例永远在FullGC时都可达,导致无法进行回收。

在这里插入图片描述
在这里插入图片描述

Shallow 与 Retained的区别
Shallow Size
Shallow Size是对象本身占据的内存的大小,不包含其引用的对象。对于常规对象(非数组)的Shallow Size由其成员变量的数量和类型来定,而数组的ShallowSize由数组类型和数组长度来决定,它为数组元素大小的总和。

Retained Size
Retained Size=当前对象大小+当前对象可直接或间接引用到的对象的大小总和。(间接引用的含义:A->B->C,C就是间接引用) ,并且排除被GC Roots直接或者间接引用的对象

换句话说,Retained Size就是当前对象被GC后,从Heap上总共能释放掉的内存。
不过,释放的时候还要排除被GC Roots直接或间接引用的对象。他们暂时不会被被当做Garbage。

最大的retain heap
请添加图片描述

有busy monitor thread
请添加图片描述

请添加图片描述

2.4 dominatorTree对象占用空间比例

下图中,大的对象,无法回收
第一个MedatadataProvider一看就是里面用了享元模式(缓存),数据是无法回收的。其他系统类无法回收,最后的UDFClassLoader占用589k,看上去不大,但有7627个(2.3的问题1中分析出这个数字)。7627个*589k/1024/1024=4.28G。恐怖,全部无法回收。

请添加图片描述

2.5 整个jstat后台脚本,记录gc情况

脚本

root@tbds-x-x-x-37:/data/var>s nohup jstat -gcutil 219045 2000 > /data/var/hiveserver.gcutil.20220221.log 2>&1 &

第二天上班,发现的确凌晨挂了。
挂前的jstat信息:

  S0     S1       E     O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00   0.00  99.99  71.97  35.45  21507 5736.954   547 16373.339 22110.293
  0.00   0.00  62.14  99.99  71.97  35.45  21508 5736.954   547 16403.868 22140.822
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00   0.00  99.99  71.99  35.46  21510 5738.118   548 16403.868 22141.986
  0.00   0.00  61.76 100.00  71.97  35.46  21511 5738.118   548 16436.419 22174.538
  0.00   0.00   0.00 100.00  71.98  35.46  21516 5740.012   548 16436.419 22176.431
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00 100.00  71.98  35.46  21517 5740.730   549 16436.419 22177.149
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00   0.00  99.98  71.98  35.46  21518 5741.179   550 16466.653 22207.833
  0.00   0.00  62.00  99.98  71.98  35.46  21519 5741.179   550 16496.641 22237.821
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.98  35.46  21520 5741.951   551 16496.641 22238.592
  0.00   0.00   0.00  99.98  71.99  35.46  21524 5742.970   551 16526.578 22269.549
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 22270.672
  0.00   0.00   0.00  99.98  71.99  35.46  21527 5744.093   552 16526.578 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值