- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
DataFunCon#2024
Blaze:SparkSQLNative算子在快手的深度优化及大规模实践
王磊
快手大数据离线生产引擎及数据湖负责人
Contents目录
Blaze原理及架构设计
面向生产的深度优化
当前进展及未来规划
Blaze原理及架构设计
设计背景
如何持续提升计算引擎执行效率?
火山模型(Volcanomodel)
Spark1.0
代码生成(wholestage-codegen)
Spark2.0
自适应查询执行(AdaptiveQueryExecution)
Spark3.0
向量化执行(vectorization)
next
向量化原理
向量化计算优势:
可以高效利用现代CPU的SIMD指令实现指令集并行计算加速
主流的存储结构(如parquet)使用列式存储,向量化计算可以减少读写过程的行列互转开销
Filter
Project
TableScan
next()
next()
非向量化模型
每个tuple一次函数调用
缓存不友好,无法利用新硬件特性SIMD加速查询
Filter
Project
TableScan
nextBatch()
向量化模型
每个Batch一次函数调用,减少调用开销
Batch内数据采用列存,提高缓存命中率,利用SIMD优化
nextBatch()
相关工作
Project
Corporation
Description
Photon
Databricks
NativevectorizedengineforSpark
Velox
Meta
Vectorizedaccelerationlibrary
Gluten
IntelKyligence
PlugintooffloadSQLEnginetoNativeLibrary
Datafusion
Apache
Vectorizedaccelerationlibrary
Blaze
Kuaishou
PlugintooffloadSQLEnginetoNativeLibrary
Blaze是快手自研的基于rust和datafusion/arrow开发的Spark向量化执行引擎
PhotoBu
ffer
Blaze
DataFusion
Spark
PhysicalPlan
PhotoBuffer
Substrait
Gluten
Velox/Clickhouse
架构设计
架构设计
JNI
JNI
JNI
FFI
JNI
JNI
核心模块
NativeEngine
基于datafusion框架实现与Spark功能一致的native算子,以及相关内存管理、FFI交互等功能
JNIBridge
ProtoBuf
SparkExtension
用于实现Extension和NativeEngine之间的互相调用
定义用于JVM和native之间的算子描述协议
Spark插件,实现Spark算子到native算子的翻译
项目路线图
面向生产的深度优化
生产环境面临的主要问题核心优化点
细粒度的Failback机制
基于CBO的转换策略
更高效的向量化数据传输格式多级内存管理策略
复杂度更优的聚合算法实现
向量化场景的表达式重复计算优化
细粒度的Failback机制
演进式向量化执行
数据类型不支持
部分情况性能退化
引擎实现不兼容
算子/表达式不支持
基于CBO的转换策略
大数据量下数据行列转换开销大
基于CBO/RBO模型调整算子翻译策略:
历史执行数据
输入数据量
算子复杂度
更高效的向量化数据传输格式
业界的向量化数据通常使用arrow格式进行传输,但是实践过程我们发现arrow格式与主流的轻量压缩算法(snappy/lz4/zstd等)适配度不好,压缩率偏低。
所以我们在Blaze中定制了传输格式,除了尽可能去除冗余信息(如列名、数据类型)之外,还使用了byte-transpose技术提升数据压缩率,使得数据量大
幅下降。
线上2000多个作业的真实数据,上线后输入数据量小幅上涨的情况下,Shuffle数据量相比spark降近30%
Byte-transpose示例
多级内存管理策略
复杂度更优的聚合算法实现
向量化场景的表达式重复计算优化
计算公共表达式
SQL
替换表达式
正常逻辑
Yes No
公共表达式重复利用
非公共表达式正常计算
重构project算子,增加多算子融合代码生成逻辑
重构Filter算子,优化多谓词场景
计算复杂度较高的重复表达式
缓存结果多次复用
当前进展及未来规划
当前进展
支持parquet的向量化读写
线上常用算子的全面支持
线上常用表达式的全
您可能关注的文档
- Agent技术在语音助手场景中的应用.pptx
- AIagents在电商平台中的应用.pptx
- AI技术演进与商业化落地.pptx
- Alluxio AI高性能数据访问平台-202404.pptx
- B站数据治理运营框架应用实践.pptx
- eBay多模态与GNN商品嵌入技术.pptx
- NoETL,开启自动化数据管理新时代.pptx
- Soul基于AIGC的实践与.pptx
- 阿里云大数据AI一体化最佳实践.pptx
- 大模型与数据治理.pptx
- 中国国家标准 GB/T 4214.17-2024家用和类似用途电器噪声测试方法 干式清洁机器人的特殊要求.pdf
- GB/T 4214.17-2024家用和类似用途电器噪声测试方法 干式清洁机器人的特殊要求.pdf
- 《GB/Z 43202.1-2024机器人 GB/T 36530的应用 第1部分:安全相关试验方法》.pdf
- GB/Z 43202.1-2024机器人 GB/T 36530的应用 第1部分:安全相关试验方法.pdf
- 中国国家标准 GB/Z 43202.1-2024机器人 GB/T 36530的应用 第1部分:安全相关试验方法.pdf
- 中国国家标准 GB/T 32455-2024航天术语 运输系统.pdf
- GB/T 32455-2024航天术语 运输系统.pdf
- 《GB/T 32455-2024航天术语 运输系统》.pdf
- GB/T 44369-2024用于技术设计的人体运动生物力学测量基础项目.pdf
- 中国国家标准 GB/T 44369-2024用于技术设计的人体运动生物力学测量基础项目.pdf
文档评论(0)