首页 > 其他分享 >【创新项目探索】大数据服务omnidata-hive-connector介绍

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

时间:2023-10-06 12:04:28浏览次数:47  
标签:数据服务 下推 hive connector 算子 omnidata 节点


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介绍_大数据

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介绍_数据仓库_02

omnidata-hive-connector主要优化方法

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

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

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

2.  Filter的部分下推。

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

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

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

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

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

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

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

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

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

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

omnidata-hive-connector后续规划

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

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

2. 支持BloomFilter算子的下推。

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

代码地址:

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

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


标签:数据服务,下推,hive,connector,算子,omnidata,节点
From: https://blog.51cto.com/u_14948868/7723001

相关文章

  • Java JDBC连接数据库的CURD操作(JDK1.8 + MySQL8.0.33 + mysql-connector-java-8.0.27-
    JDBC概述JDBC(JavaDatabaseConnectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这些类库可以以一种标准的方法、方便地访问数据库资源。JDBC为访问不同的数据库提供了一......
  • hive知识点散记
    在不切换数据库的前提下查询某一数据库下的所有表showtablesin数据库名;查询显示某一张表的元数据信息descformatted表名;查询当前数据库名称selectcurrent_databases();对查询结果进行去重selectdistinctcnamefromstu;【不写dist......
  • LINUX:FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.
     如图,问题表现为linux中可直接通过hive进行数据插入但在通过datagrip却更改不了此时,可能时yarn的运行分配的内存较少,或堆内存溢出。在yarn-site.xml中更改,以及mapred-site.xml中更改,完成。yarn的<property><name>yarn.scheduler.minimum-allocation-mb</name>......
  • 44、Flink之module模块介绍及使用示例和Flink SQL使用hive内置函数及自定义函数详细示
    文章目录Flink系列文章一、模块Modules1、模块介绍2、模块类别ModuleTypes1)、CoreModule2)、HiveModule3)、User-DefinedModule3、模块生命周期和解析顺序ModuleLifecycleandResolutionOrder4、模块Modules的使用1)、SQL方式2)、编码方式-java二、HiveFunctions内置函数和自定......
  • linux中hive常用命令
     kill-929676杀死进程ps-ef|grep23697查看进程tail-flogs/hiveserver2.log查看2信息nohupbin/hive--servicehiveserver2>>logs/hiveserver2.log2>&1&后台加载报错和运行信息到2start-all.sh启动所有服务 ......
  • Mybatis - 找不到字段 'default_connector'
    通过Lombok自动生成的getter/setter可能与mybatisplus自动映射实体类的getter/setter存在差异,这个问题在Spring反序列Body数据也存在,详细查看视频:我为什么不喜欢lombok,这个问题大家怎么看,高级分析技巧。而我遇到的问题是有一个default开头的属性,这似乎也是Java......
  • destoon关于archiver归档的性能优化
    今天在处理一个项目时候发现archiver单个模块归档超过百万数据,打开速度就特慢,所以打开archiver下index.php文件进行分析,发现有句sql作怪1$result = $db->query("SELECTtitle,linkurl,addtimeFROM{$table}WHERE$conditionORDERBYaddtimeDESCLIMIT$offset,......
  • Hive函数高阶——explode函数、UDAF聚合函数
    1、explode函数(输入一行,输出多行)引入lateralview侧视图的概念解决上面问题的限制:2、UDAF聚合函数增强聚合——groupingsets(相当于unionall)增强聚合——cube增强聚合——rollup(是cube的子集,以左侧维度为主)......
  • Hive函数入门——内置函数+用户定义函数
    1、内置函数1、字符串、时间类型函数之前也是在c语言里面学过,包括concat、split等;时间类型函数:前不久用到的函数:date_add--->当前日期的后的第几天的日期;date_sub--->当前日期的前的第几天的日期;2、数学函数、集合函数round--取整数值(还能指定保留的精度)floor--向下取整......
  • Hive内置运算符(就当是缓缓脑袋吧~)
    1、查看所有运算符showfunctions;2、关系运算符--是二元运算符,执行的是比较运算每个关系运算符返回的都是boolean类型;3、算术运算符--操作数必须为数字类型,分为一元运算符和二元运算符4、逻辑运算符与之前学过的一样,没难度;......