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