TDW HIVE使用现状
大规模应用场景下HIVE暴露出的问题
- HIVE进程内存占用高,GC频繁
- 元数据接口性能下降(秒级->分钟级)
- 元数据库压力大,不堪重负
- HIVE进程间各个session容易相互影响
- HIVE出现session卡死现象
- 其他
原因分析:
- 元数据库单点问题
- 性能瓶颈
- 无法扩展
- ORM层带来的各种问题
- 算法复杂度较高
- 数据结构占用内存大
- 高并发下容易发生死锁和死循环
- 映射产生的表结构复杂
- 有序数据结构
- HQL Translator层
- 元数据接口粗放
- 访问流程不合理
- Zookeeper依赖
重构步骤一:去除ORM层,直接使用JDBC
- 优点:定制化的表结构和访问流程,简洁高效的获取元数据
- 缺点:实现复杂,维护和使用困难
具体工作:
重构步骤二:应用层访问流程优化
- 元数据接口细化,按需获取
- 消除对有序数据结构的依赖
- 去除去Zookeeper分布式锁的依赖
- 元数据重用和缓存
重构步骤三:分散化
- 职责分离:认证元数据 + 库表元数据
- 1 global db + N segment db
- 以HIVE db为单位分发
- 一致性hash,扩容方便
上线效果展示
1、查询引擎负载
2、元数据库负载
3、元数据操作效率
参考链接:http://share.csdn.net/slides/4216
Related posts: