最近使用hue 查询hive 出现超时,sql提交无反应。cdh监控发现HS2连接数直线上升,cpu使用率升高一直占用cpu,如下图:

hive连接数异常升高,线程卡死异常分析

hive连接数异常升高,线程卡死异常分析

使用netstat命令查看端口连接状态,发现端口出现大量FIN_WAIT2的状态,重启hive后恢复正常。开始怀疑是网络丢包问题,检查服务器上其它进程正常,隔段时间问题重新,怀疑是hive服务本身卡死,端口状态如图:

hive连接数异常升高,线程卡死异常分析

jstack打印程序堆栈信息,发现hive工作线程全部堵塞,等待锁,堆栈如下:

hive连接数异常升高,线程卡死异常分析

从堆栈可以看出hive都卡在编译上,都在等待一条正在编译的sql释放锁,而正在编译的sql一直在编译没有释放锁,线程卡死。从hive日志中将出问题这段时间的sql找出来进行测试执行,找到了一条sql,只要一跑hive就会卡死,出现上面的问题。这条sql select * from xxx limit 10 。查看这张表的信息:分区表,分区数据有三年的数据,表字段特别多有3000多个字段。将sql 指定分区及字段正常运行。

 总结: hive 表分区及字段太多超过上千字段会导致hive sql编译线程卡死,导致hive异常。写sql 时必须指定分区,字段,裁剪掉不必要的字段及分区。

相关文章:

  • 2021-12-01
  • 2021-11-15
  • 2021-11-16
  • 2021-10-10
  • 2021-04-16
  • 2021-04-03
  • 2021-05-25
猜你喜欢
  • 2022-12-23
  • 2021-09-03
  • 2022-12-23
  • 2022-12-23
  • 2021-05-17
  • 2021-08-07
  • 2021-07-05
相关资源
相似解决方案