写点什么

【创新项目探索】大数据服务 omnidata-hive-connector 介绍

作者:openEuler
  • 2023-09-05
    广东
  • 本文字数:1457 字

    阅读完需:约 5 分钟

omnidata-hive-connector 介绍


omnidata-hive-connector 是一种将大数据组件 Hive 的算子下推到存储节点上的服务,从而实现近数据计算,减少网络带宽,提升 Hive 的查询性能。目前支持 Hive on Tez。omnidata-hive-connector 已在 openEuler 社区开源。


OmniData 架构


OmniData 是算子下推的总称。OmniData 主要由以下四个部分组成:


1.  OmniData Client 属于开源的部分,为不同的引擎提供相应的插件。对于 Hive 引擎,omnidata-hive-connector 作为 OmniData Client,并通过 HAF 注解和编译插件能力,实现自动下推任务到存储节点的 OmniData Server 中。


2.  Haf Host 为 lib 库,部署在计算节点,对外提供任务卸载的能力,把任务下推到 Haf Offload。


3. Haf Offload 为 lib 库,部署在存储节点提供任务执行的能力,用来执行 OmniData Server 的作业。


4. OmniData Server 提供算子下推的执行能力,接收 Haf Host 下推下来的任务。



omnidata-hive-connector 功能


1.  实现将 Hive 的 Filter、Aggregation 和 Limit 算子下推到存储节点进行计算,提前将数据过滤,降低网络传输数据量,提升性能。


2.  实现插件化的方式注册给 Hive,以松耦合的方式实现算子的下推,可通过特性开关激活或使能。


3.  实现 HDFS/Ceph 文件系统的下推。


4.  实现 Orc/Parquet 文件存储格式的下推。


5.  实现 Hive 内置 UDF(cast、instr、length、lower、replace、substr 和 upper)的下推。


omnidata-hive-connector 应用场景


在大数据组件 Hive 典型硬件配置的存算分离场景下,分别运行标准测试用例 TPC-H 和 omnidata-hive-connector。


可以看出运行 omnidata-hive-connector 后,10 条 SQL 性能平均提升 40%以上



omnidata-hive-connector 主要优化方法


1.  基于数据选择率,做到动态的下推。


omnidata-hive-connector 通过 Hive 统计信息计算数据选择率(选择率越低,过滤的数据量越多),通过参数设置下推的选择率阈值,omnidata-hive-connector 就能够动态地将选择率低于阈值的算子推到存储节点上执行,实现存储节点在本地读取数据进行计算,再将计算过滤之后的数据集通过网络返回到计算节点,提升网络传输效率,优化性能。除了数据选择率,还会根据算子是否支持,剩余资源是否足够等条件进行判断。



2.  Filter 的部分下推。


当一个 Filter 中同时存在支持下推和不支持下推的算子时,omnidata-hive-connector 对不支持的算子构造成新的 Filter 走原生 Hive 计算流程,对支持下推的算子重新计算数据选择率并根据新的选择率判断是否下推。



3.  存算协同,合理利用计算资源。


omnidata-hive-connector 将算子下推到存储节点执行计算,可以有效地降低计算节点的 CPU 使用率,并且能将存储节点的 CPU 使用起来,提升总体计算效率。以 TPC-H 的 SQL 为例,优化前计算节点 CPU 平均使用率 60%以上,优化后,计算节点 CPU 平均使用率在 40%左右。




4.  提前过滤数据,减少网络传输。


数据的提前过滤是 omnidata-hive-connector 性能收益的主要来源,在存储节点过滤数据,减少网络传输,减少计算节点处理的数据量。


以 TPC-H 的 SQL 为例,SQL 中含有多个 Filter,优化前的算子需要跨网络从远端存储节点读取近 60 亿行的数据;优化后只需要传输过滤后的有效数据 4000 万行。执行效率提升 60%以上。



omnidata-hive-connector 后续规划


本项目已开源在 openEuler 社区,omnidata-hive-connector 特性会积极地支持新功能,后续规划如下:


1. 支持 timestamp 和 decimal 数据格式。


2. 支持 BloomFilter 算子的下推。


3. 支持用户自定义函数的下推。


代码地址:


https://gitee.com/openeuler/omnidata-hive-connector


欢迎感兴趣的朋友们参与到 openEuler Bigdata SIG,探讨大数据领域技术。

用户头像

openEuler

关注

还未添加个人签名 2020-09-30 加入

开源操作系统 openEuler 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目

评论

发布
暂无评论
【创新项目探索】大数据服务omnidata-hive-connector介绍_大数据_openEuler_InfoQ写作社区