1. 实现将Hive的Filter、Aggregation和Limit算子下推到存储节点进行计算,提前将数据过滤,降低网络传输数据量,提升性能。
2. 实现插件化的方式注册给Hive,以松耦合的方式实现算子的下推,可通过特性开关激活或使能。
3. 实现HDFS/Ceph文件系统的下推。
4. 实现Orc/Parquet文件存储格式的下推。
5. 实现Hive内置UDF(cast、instr、length、lower、replace、substr和upper)的下推。
在大数据组件Hive典型硬件配置的存算分离场景下,分别运行标准测试用例TPC-H和omnidata-hive-connector。
可以看出运行omnidata-hive-connector后,10条SQL性能平均提升40%以上。
1. 基于数据选择率,做到动态的下推。
2. Filter的部分下推。
当一个Filter中同时存在支持下推和不支持下推的算子时,omnidata-hive-connector对不支持的算子构造成新的Filter走原生Hive计算流程,对支持下推的算子重新计算数据选择率并根据新的选择率判断是否下推。
3. 存算协同,合理利用计算资源。
4. 提前过滤数据,减少网络传输。
数据的提前过滤是omnidata-hive-connector性能收益的主要来源,在存储节点过滤数据,减少网络传输,减少计算节点处理的数据量。
以TPC-H的SQL为例,SQL中含有多个Filter,优化前的算子需要跨网络从远端存储节点读取近60亿行的数据;优化后只需要传输过滤后的有效数据4000万行。执行效率提升60%以上。
本项目已开源在openEuler社区,omnidata-hive-connector特性会积极地支持新功能,后续规划如下:
1. 支持timestamp和decimal数据格式。
2. 支持BloomFilter算子的下推。
3. 支持用户自定义函数的下推。
代码地址:
https://gitee.com/openeuler/omnidata-hive-connector
欢迎感兴趣的朋友们参与到openEuler Bigdata SIG,探讨大数据领域技术。
加入微信群:添加openEuler小助手(微信:openeuler123),备注【Bigdata】加入交流群。
openEuler小助手
本文分享自微信公众号 - openEuler(openEulercommunity)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。