Spark native向量化组件 datafusion comet

背景

Apache Datafusion Comet 是苹果公司开源的加速Spark运行的向量化项目。

本项目采用了 Spark插件化 + Brotobuf + Arrow + DataFusion 架构形式

其中

  • Spark插件是 利用 SparkPlugin 插件,其中分为 DriverPlugin 和 ExecutorPlugin ,这两个插件在driver和 Executor启动的时候就会调用
  • Brotobuf 是用来序列化 spark对应的表达式以及计划,用来传递给 native 引擎去执行,利用了 体积小,速度快的特性
  • Arrow 是用来 spark 和 native 引擎进行高效的数据交换(native执行的结果或者spark执行的数据结果),主要在JNI中利用Arrow IPC 列式存储以及零拷贝等特点进行进程间数据交换
  • DataFusion 主要是利用Rust native以及Arrow内存格式实现的向量化执行引擎,Spark中主要offload对应的算子到该引擎中去执行

使用

复制代码
export COMET_JAR=spark/target/comet-spark-spark3.5_2.12-0.13.0-SNAPSHOT.jar

$SPARK_HOME/bin/spark-shell \
    --jars $COMET_JAR \
    --conf spark.driver.extraClassPath=$COMET_JAR \
    --conf spark.executor.extraClassPath=$COMET_JAR \
    --conf spark.plugins=org.apache.spark.CometPlugin \
    --conf spark.shuffle.manager=org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager \
    --conf spark.comet.explainFallback.enabled=true \
    --conf spark.memory.offHeap.enabled=true \
    --conf spark.memory.offHeap.size=16g

主要是在classpath下得有对应的 comet对应的动态库

其中 spark.plugins=org.apache.spark.CometPlugin是开启 native 插件,主要是插入一些native计划,也是最核心的部分
spark.shuffle.manager=org.apache.spark.sql.comet.execution.shuffle.CometShuffleManager 是采用列式shuffle(采用Arrow IPC RecordBatch格式)进行数据交互
spark.memory.offHeap.enabled 开启offheap模式,该模式下,执行内存都是用native内存进行分配。

说明

  • native code基准测试

    借助Rust的提供的第三方基准测试工具Criterion, 可以进行native code性能的好坏,提供了更详细的统计分析、图表、与先前基准的差异对比,帮助开发者精确评估代码性能优化效果

  • flamegraph native火焰图的生成

    通过Rust三方提供的火焰图生成工具flamegraph,可以快读的定位出具体的函数耗时,而从帮助开发者快速的定位问题

    对于该Datafusion Comet项目,工具使用见profiling_native_code

    相对于其他开发语言,如java这种,如果说要进行基准测试和火焰图的生成,是需要手动进行下载对应的工具,而rust这种提供的三方包可以直接在代码级别进行了测试,确实是方便了不少

  • 关于该项目讨论

    Donation of a Spark native engine based on DataFusion & Arrow

相关推荐
编程彩机5 小时前
互联网大厂Java面试:从Java SE到大数据场景的技术深度解析
java·大数据·spring boot·面试·spark·java se·互联网大厂
不是很大锅5 小时前
卸载TDengine
大数据·时序数据库·tdengine
qyr67896 小时前
深度解析:3D细胞培养透明化试剂供应链与主要制造商分布
大数据·人工智能·3d·市场分析·市场报告·3d细胞培养·细胞培养
2501_944934737 小时前
工业大数据方向,CDA证书和工业数据工程师证哪个更实用?
大数据
迎仔8 小时前
04-快反部队:Impala, Presto & Trino 通俗指南
大数据
BYSJMG8 小时前
计算机毕业设计选题推荐:基于大数据的肥胖风险分析与可视化系统详解
大数据·vue.js·数据挖掘·数据分析·课程设计
yqd6669 小时前
elasticsearch
大数据·elasticsearch·搜索引擎
Leo.yuan9 小时前
经营分析会,该讲些什么?
大数据·数据库·数据分析
GIS数据转换器10 小时前
基于AI的低空数联无人机智慧巡查平台
大数据·人工智能·机器学习·无人机·宠物
跨境摸鱼10 小时前
用“内容+投放+运营”打出增长曲线
大数据·安全·跨境电商·亚马逊·内容营销