hive3.X的HiveServer2 内存泄漏问题定位与优化方案(bug)

参考文档:

https://juejin.cn/post/7141331245627080735?searchId=20230920140418F85636A0735C03971F71

官网社区:

https://issues.apache.org/jira/browse/HIVE-22275

In the case that multiple statements are run by a single Session before being cleaned up, it appears that OperationManager.queryIdOperation is not cleaned up properly.

See the log statements below - with the exception of the first "Removed queryId:" log line, the queryId listed during cleanup is the same, when each of these handles should have their own queryId. Looks like only the last queryId executed is being cleaned up.

As a result, HS2 can run out of memory as OperationManager.queryIdOperation grows and never cleans these queryIds/Operations up.

解决

既然找到了问题,那么解决方案就清楚了,那便是将 Query Id 这个值设置成 Operation 级别,而不是 HiveSession 级别,此问题影响 Hive3.x 版本,2.x 暂时没有这个特性,因此不受影响。再对照官方已知的 issue,此问题是已知 issue,目前 Hive 已经将此问题修复,且合入了4.0的版本,

但是由于该 issue 是针对 4.0.0 的代码修复的,对于 3.x 系列并没有 patch,直接 cherry-pick 将会有大量的代码不兼容,因此需要自行参考进行修复,修复的思路为给 Operation 新增:

将 Query Id 从 HiveSession 级别移除,存入 Operation 级别,同时更新 Query Id 的获取和设置:

对 Hive 进行重新打包,在现有集群上对 hive-service-x.x.x.jar 进行替换,即可修复此问题。

相关推荐
hashiqimiya6 小时前
windows的hadoop集群环境直接配
大数据·hadoop·分布式
阿 才15 小时前
正点原子阿尔法imux6ull烧录不进tf卡程序
bug
迈巴赫车主20 小时前
大数据:Hadoop(HDFS)
大数据·hadoop·hdfs
hf20001220 小时前
零成本迁移,原地加速,成本降低60%:火花思维基于云器Lakehouse升级实践
大数据·分布式·spark·lakehouse
talen_hx29621 小时前
《零基础入门Spark》学习笔记 Day 04
大数据·笔记·学习·spark
D愿你归来仍是少年1 天前
Apache Spark 详细讲解第 7 章:Shuffle 机制深度解析
大数据·spark·apache
风酥糖1 天前
Godot游戏练习01-第19节-解决多人游戏bug
游戏·bug·godot
弹简特2 天前
【测试基础-Bug篇】09-测试用例的评审和测试执行之Bug定义及Bug生命周期及Bug管理流程
测试用例·bug
Roselind_Yi2 天前
排查Visual C++堆损坏(HEAP CORRUPTION)错误:从报错到解决的完整复盘
java·开发语言·c++·spring·bug·学习方法·远程工作
Code知行合壹2 天前
Spark使用总结
大数据·分布式·spark