登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
我知道了
查看详情
登录
注册
Gitee Talk | 模力方舟 AI 应用开发沙龙第六站 · 8月23日 广州集结中!
代码拉取完成,页面将自动刷新
开源项目
>
其他开源
>
操作系统
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
167
Star
427
Fork
1.5K
openEuler
/
community
代码
Issues
657
Pull Requests
23
Wiki
统计
流水线
服务
Gitee Pages
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
6664
申请创建OmniAdaptor/Gluten/OmniOperator/OmniStream/OmniStateStore仓库并提名committer
已合并
MacChen1:master
openEuler:master
MacChen1
创建于 2025-07-30 10:48
克隆/下载
HTTPS
SSH
复制
下载 Email Patch
下载 Diff 文件
本PR申请创建openeuler/{OmniAdaptor/Gluten/OmniOperator/OmniStream/OmniStateStore}仓库,归属于bigdata SIG下管理。 为便于各仓代码维护,提名committers。 1. OmniAdaptor OmniAdaptor分为OmniAdaptor-Spark 和OmniAdaptor-Flink两个模块。 OmniAdaptor-Spark 是 Spark 与 OmniOperator 和Flink与OmniStream之间的桥梁组件,作为胶水层承接两者的运行时协作。该模块充分利用 Spark/Flink 的插件化能力,基于接口扩展方式实现对物理计划的替换,无需对 Spark 源码进行侵入式修改,即可将原生物理算子平滑替换为 OmniOperator 的 Native 实现。目前已覆盖 TPC-DS 99 查询中主要算子的 Native 加速路径,同时保留对 Spark 原生算子的兼容执行能力,从而实现稳定、高性能、强兼容的运行体验,助力 OmniOperator 高效集成至 Spark 生态体系。 2. Gluten 本仓库基于开源 Gluten 1.3.0 版本,致力于为 Spark 引擎引入高性能的 Native Backend 支持。该版本遵循 Gluten 社区接口规范,扩展实现了对 OmniOperator 的完整适配,包括 OmniBackend、OmniSubstrait、行列数据转换、算子回退机制等关键模块。通过该集成,OmniOperator 可作为一种全新的 Native 加速后端,无缝嵌入 Spark 执行引擎,有效提升复杂查询场景下的执行性能。 3. OmniOperator OmniOperator算子加速采用Native Code(C/C++)实现大数据SQL算子。首先,以列式内存数据格式OmniVec进行内存计算,同列数据内存连续,提升数据访问性能,充分利用向量化加速。其次,向量化算子采用C++实现,使用向量化执行思想,算子在进行处理时从逐行处理变为逐批处理,更好利用现代CPU的能力。向量化算子拥有更多机会利用CPU中SIMD指令(单指令多数据)和提高CPU Cache命中率进行向量化执行,提升查询性能和有效提升CPU利用率。此外,算子在核心功能处理,如Hash计算以及聚合值计算时,显式调用SVE、NEON指令以及鲲鹏加速库进行加速,能够基于单条指令对多个数据同时进行操作,进一步提升算子处理性能。 4. OmniStream 大数据实时处理流计算引擎在互联网、金融、物流等各行各业应用广泛,承担不可或缺的重要角色,而随着业务发展,流计算引擎的性能逐渐成为瓶颈。以主流实时流计算引擎Flink为例,主要采用Java/Scala等高级编程语言实现,当前对Flink的优化主要是基于Java进行改进,但Java的本身的性能还是弱于Native Code,并且由于Java的语义的限制,对于整体的类SIMD指令支持较弱,无法完全发挥CPU的算力。此外,Flink采用行式数据结构计算流数据,无法充分利用芯片的向量化指令,执行效率有待提升。 OmniStream算子加速采用Native Code(C/C++)实现Flink SQL和DataStream算子。针对Flink SQL,OmniStream采用C++结合向量化指令实现算子,以列式内存数据格式OmniVec进行内存计算,充分利用向量化加速,提升SQL计算性能。针对Flink DataStream,OmniStream采用C++结合向量化指令实现算子,结合自动Native化工具将UDF翻译成C++程序,充分发挥Native Code性能优势,提升DataStream场景性能。 5. OmniStateStore OmniStateStore是一个开源且高性能的Flink状态存储引擎,支持Flink 1.16.1/1.16.3/1.17.1三个版本的状态存储接口,可平滑替换RocksDB。 主要特点: (1)高性能状态读写 目前开源Flink的状态存储引擎是基于RocksDB实现,RocksDB底层采用LSM数据结构,LSM核心设计原则为将磁盘随机读写转换为顺序读写,内存数据结构以二分查找为主。整体上存在状态访问IO性能差、CPU占用高等问题。OminiStateStore采用以磁盘作为主要存储,内存作为Cache的架构方案,其中内存Cache采用紧密内存结构的哈希索引,相比传统排序索引性能提升显著,磁盘存储是基于LSM-Tree重新设计文件格式,改进磁盘数据结构,提升大状态下的文件读写性能。 (2)优化内存访问性能 OminiStateStore内存数据结构以Hash为主,相对于RocksDB二分查找可显著减少内存访问次数。内存Cache中针对流式计算场景,使用哈希表和链表(冲突链)构建了管理最小数据存储单元Slice的索引结构,单个Slice是有序且大小不超过20K,完全支持存放在L1 Cache中,能够加速二分查找性能。 (3)懒加载 目前开源Flink在并行度变更场景下状态恢复慢,导致长时间阻塞Flink作业恢复。OminiStateStore采用懒加载方式,即在恢复流程中仅重构内存Cache的状态数据,而磁盘文件中的数据放在后台进行异步恢复,能够较大减少状态恢复的整体时长,使得Flink作业能够快速恢复。
此 Pull Request 需要通过一些审核项
类型
指派人员
状态
审查
genedna
Wayne Ren
Charlie_Li
solarhu
jimmy_hero
Jianmin
George.Cao
木得感情的openEuler机器人
Xie XiuQi
zhujianwei001
陈亚强
刘恺
chenmaodong
stonefly128
Fengguang
陈棋德
hjimmy
ZhiGang
blue
叶青龙
geliangtang
虫儿飞
cf-zhao
Lvcongqing
yuelg
juntian
Jingwiw
已完成
(0/0人)
怎样手动合并此 Pull Request
git checkout master
git pull https://gitee.com/macchen1/community.git master
git push origin master
评论
36
提交
3
文件
6
检查
代码问题
0
批量操作
展开设置
折叠设置
审查
Code Owner
审查人员
stonefly128
stonefly128
Fengguang
wu_fengguang
木得感情的openEuler机器人
shinwell_hu
hjimmy
hjimmy
Jianmin
jianminw
solarhu
solarhu
Charlie_Li
Charlie_li
ZhiGang
cellfaint
Xie XiuQi
xiexiuqi
陈棋德
dillon_chen
Wayne Ren
vonhust
cf-zhao
cf-zhao
juntian
juntianlinux
Lvcongqing
HelloWorld_lvcongqing
zhujianwei001
zhujianwei001
虫儿飞
bugflyfly
yuelg
bigclouds99
jimmy_hero
jimmy_hero
geliangtang
geliangtang
genedna
genedna
陈亚强
yaqiangchen
Jingwiw
Jingwiw
chenmaodong
chenmaodong
blue
blue0613
刘恺
kailiu42
叶青龙
yeqinglong01
George.Cao
georgecao
未设置
最少人数
0
测试
stonefly128
stonefly128
Fengguang
wu_fengguang
木得感情的openEuler机器人
shinwell_hu
hjimmy
hjimmy
Jianmin
jianminw
solarhu
solarhu
Charlie_Li
Charlie_li
ZhiGang
cellfaint
Xie XiuQi
xiexiuqi
陈棋德
dillon_chen
Wayne Ren
vonhust
cf-zhao
cf-zhao
juntian
juntianlinux
Lvcongqing
HelloWorld_lvcongqing
zhujianwei001
zhujianwei001
虫儿飞
bugflyfly
yuelg
bigclouds99
jimmy_hero
jimmy_hero
geliangtang
geliangtang
genedna
genedna
陈亚强
yaqiangchen
Jingwiw
Jingwiw
chenmaodong
chenmaodong
blue
blue0613
刘恺
kailiu42
叶青龙
yeqinglong01
George.Cao
georgecao
未设置
最少人数
0
优先级
不指定
严重
主要
次要
不重要
标签
openeuler-cla/yes
approved
ci_successful
sig/TC
stat/needs-squash
lgtm-shinwell_hu
lgtm-blue0613
关联 Issue
未关联
Pull Request 合并后将关闭上述关联 Issue
里程碑
未关联里程碑
release-beta
参与者
(8)
Cherry-pick 提交
Cherry-pick 可以将
特定提交(Commit)
从某个分支挑选并应用到另一个分支,实现快速集成特定更改,而无需合并整个分支。
请选择应用 Cherry-pick 提交 (Commit) 的目标分支
新建分支
当前账号不存在 Fork 仓库,建议 cherry-pick 到 Fork 仓库。
Fork 仓库
提交列表
Commit SHA
Commit Message
基于 Cherry-pick 后的分支发起 Pull Request
取消
Cherry-pick
Go
1
https://gitee.com/openeuler/community.git
git@gitee.com:openeuler/community.git
openeuler
community
community
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册