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

news/2024/11/17 23:50:38/

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


http://www.ppmy.cn/news/1096634.html

相关文章

PY32F003F18串口函数

一、 PY32F003F18串口HAL库函数 HAL库函数本身写得很好,但非常难以理解。 1、PY32F003F18串口配置函数UART_SetConfig(UART_HandleTypeDef *huart) //函数功能:将UART_HandleTypeDef型结构变量写入"串口控制寄存器" static void UART_SetConfig(UART_H…

Linux学习之基础工具一

1.Linux 软件包管理器 yum 首先我们需要知道的是在Linux下,现存的软件和指令是一定的,而有的时候我们想需要更多的指令或者软件,而这在Linux本身下是没有的,故我们可以利用指令yum指令安装或卸载你想要或者不需要的软件&#xff…

gitlab 合并分支

打开我们的gitlab,找到我们的项目,在左侧菜单中找到Merge requests,点击Merge requests,进入下一个页面 点击New merge requests,创建一个新的merge,进入下一个页面 选择自己分支和目标分支,自己…

Java版工程行业管理系统源码-专业的工程管理软件-提供一站式服务

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

ABY2.0:更低的通信开销

参考文献: [ABY] Demmler D, Schneider T, Zohner M. ABY-A framework for efficient mixed-protocol secure two-party computation[C]//NDSS. 2015.[ABY3] Mohassel P, Rindal P. ABY3: A mixed protocol framework for machine learning[C]//Proceedings of the…

Python操作Excel实战:Excel行转列

# 1、原始数据准备 样例数据准备 地区1m2-5m6-10m11-20m21-40m地区单价计费单位费用最小值费用最大值北京13012011010090     天津13012011010090     石家庄13012011010090     保定140130120110100     张家口170150130120110     邢台1401201101…

虚函数、纯虚函数、多态

一.虚函数 在基类的函数前加上virtual关键字,在派生类中重写该函数,运行时将会根据所指对象的实际类型来调用相应的函数,如果对象类型是派生类,就调用派生类的函数,如果对象类型是基类,就调用基类的函数。 …

国内外大模型收录列表

时间截止:2023-09-08,数据来源:https://github.com/wgwang/LLMs-In-China。 从收录可以看出开源大模型基座选用:LLaMA>BLOOM​>ChatGLM2​ 国内大模型列表 序号公司大模型省市类别官网说明1百度文心一言,灵医Bot北京通用…