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 进行替换,即可修复此问题。

相关推荐
满目山河•20 分钟前
二、复制三台虚拟机
hive·hadoop·hbase
howard20055 小时前
Hive实战任务 - 9.3 实现学生信息排序和统计
hive·排序·汇总·学生信息
Swift社区6 小时前
RN 项目中“页面存在 ≠ 页面可见”会导致哪些隐藏 Bug?
react native·bug·react
番茄撒旦在上6 小时前
什么样的表适合做拉链表
大数据·数据仓库·hive
howard20056 小时前
Hive实战任务 - 9.5 实现网址去重
hive·网址去重
howard20056 小时前
Hive实战任务 - 9.4 分科汇总求月考平均分
hive·分科汇总月考平均分
tongyue7 小时前
天问esp32驱动DHT11官方程序BUG修复
bug
howard20057 小时前
Hive实战任务 - 9.2 统计总分与平均分
hive·统计总分与平均分
yumgpkpm9 小时前
Cloudera CDP7、CDH5、CDH6 在华为鲲鹏 ARM 麒麟KylinOS做到无缝切换平缓迁移过程
大数据·arm开发·华为·flink·spark·kafka·cloudera
青云交9 小时前
Java 大视界 -- Java+Spark 构建企业级用户画像平台:从数据采集到标签输出全流程(437)
java·开发语言·spark·hbase 优化·企业级用户画像·标签计算·高并发查询