hive sql无法停止

排查流程

hive任务停止是调用org.apache.hive.jdbc.HiveStatement的close()方法实现的

其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。

同时,通过JDK动态代理为其织入了synchronized同步机制:其底层是委托给org.apache.hive.service.cli.thrift.TCLIService.Iface客户端实例来实现。

与此同时,原运行Hive的线程也在循环中通过客户端实例来获取该Hive SQL运行状态

而synchronized锁是非公平的,因此停止Hive线程客户端可能一直无法获取对象锁,从而无法进入停止流程。因此修改HiveStatement的JDK动态代理逻辑,改为使用ReentrantLock,并将其设置为公平锁,从而客户端获取锁序列为公平的,从而让停止线程能正常获取客户端实例锁进行操作。

解决方案

按照以上思路查询源码,在高版本和低版本的客户端中都有使用ReentrantLock作为对象锁的代码,选择以上版本的客户端版本即可

相关推荐
王仔小奶8 小时前
慢SQL治理与性能调优:DBA如何用Shell/Python提升运维效率?
python·sql·dba
螺蛳粉 螺蛳粉9 小时前
CDH第四篇:CDH 元数据库实战:MySQL 5.7.22 二进制安装 + 三库三账号授权全记录
hive·mysql5.7·centos7·元数据·cdh·oozie·数据库部署
泡海椒10 小时前
深度解析JQuick-SQL SQL解析与AST生成机制|分布式SQL原理
数据库·分布式·sql
悟道书生13 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
John_Hui15 小时前
MySQL基础知识
数据库·sql·mysql·1024程序员节
chunyublog15 小时前
FinalShell 远程连接 Hadoop 三节点集群教程
大数据·hadoop·分布式
泡海椒16 小时前
深度解析JQuick-SQL 逻辑计划到物理计划生成机制|分布式SQL原理
数据库·分布式·sql
爱吃火鸡面呀16 小时前
MySQL、ClickHouse、Doris、Hive、Spark SQL、Flink SQL 选型对比:优点、缺点与面试话术
hive·mysql·clickhouse
猫咪很可爱1 天前
MySQL 视图与只读用户:安全查询的完整实践指南
数据库·sql·mysql
三垣网安2 天前
某某大学心理健康教育平台弱口令及SQL注入漏洞
数据库·sql