Hive-10569 导致任务hang住…
1 背景
线上Hive任务偶尔出现hang住的现象.
经排查确认是触发了Hive的bug, 该bug在Hive-10569(https://issues.apache.org/jira/browse/HIVE-10569中已修复.
2 现象
用户beeline任务运行至Ended Job之后,一直未结束,查看yarn日志,该job已经运行成功.
1 | INFO : 2020-03-20 20:25:21,401 Stage-36 map = 100%, reduce = 0%, Cumulative CPU 3.96 sec |
3 排查步骤
3.1 查看hiveserver2日志
找到该job在hive server端的日志,没有发现任何异常.
3.2 抓取现场
分别通过 jstack -l <pid>
和 jmap -dump:[live,]format=b,file=<filename> <pid>
获取server端的堆栈信息.
3.3 定位排查
- 首先, 确定session ID.
根据 job id 定位到该MR对应的hive session id(session id会在hive conf中记录);
- 然后, 确定线程ID.
通过MAT分析工具打开之前获取到的heap文件, 根据session id查找到对应的HiveSessionImpl对象, 进而追踪到对应的线程ID;
- 最后, 确定线程栈.
在jstack文件中找到对应的线程,从而定位到具体的线程栈.
本案例中线程栈如下:
1 | "HiveServer2-Background-Pool: Thread-10663039" #10663039 prio=5 os_prio=0 tid=0x00007fcd94c87000 nid=0x213ed in Object.wait() [0x00007fcbec2fb000] |
3.4 源码剖析
查看源码位置, 分析可知runner.isRunning状态未更新会导致hang住不结束.
1 | /** |
# 4 解决方案
查找社区issue发现, 该bug已经在1.3版本中进行了修复.(https://issues.apache.org/jira/browse/HIVE-10569
后续 backport 该patch即可.
本文作者:
Jeff.R
本文链接: https://stefanxiepj.github.io/archives/1365c12b.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://stefanxiepj.github.io/archives/1365c12b.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
![知识共享许可协议](https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png)