Hive CBO 导致 hang 住

764 阅读1分钟

问题描述

Hive SQL 卡很久后,才提交到 Yarn。日志如下:可以看到卡住了4个多小时候,才开始 Compiling

问题排查

1.查看 HDFS RPC 监控 和 Yarn 队列资源,排除 HDFS 慢和 Yarn 队列不足的原因

2.jstack 查看 提交任务的 进程,发现 Hive Client 端异步提交完后,就 wait 结果了。排除 client 端原因

3.查看 HDFS 审计日志, 发现并没有来自该 HiveServer 的请求,排除 和 HDFS 交互影响

4.查看 HiveServer2 的日志,执行到 Completed getting MetaData in Semantic Analysis 后不在输出日志。

5.分析 Hive 源码,看代码猜测可能是 语法解析 或 优化 导致的

6.top 查看 hiveserver2 和 hivemetastore 发现,发现 hiveserver2 有 5 个线程占 cpu 较多

7.stack 分析 hiveserver2 服务,看线程在做 RexCall,验证 5 的猜测是对的

8.找到 HIVE-19101,打入 patch,再次执行,问题解决。

其他解法:

设置 set hive.cbo.enable=false; 关闭 CBO 优化