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,探讨大数据畛域技术。