有奖捉虫:行业应用 & 管理与支持文档专题 HOT
随着 SSD 的广泛应用及网卡性能的显著提升,Spark 引擎的性能瓶颈更多由传统认知的 IO 转变为以 CPU 为主的计算资源。而围绕 JVM 的 CPU 优化方案(如 Codegen )存在诸多约束,如字节码长度、参数个数等存在限制,开发者也很难在 JVM 上利用现代 CPU 的一些特性。
Spark Native 引擎在 Spark 物理计划进行转换,使用 C++ 实现的向量化加速库执行计算,并将执行完的数据以列式方式返回,提升内存及带宽利用效率,进而突破性能瓶颈,可以使 Spark 作业效率得到有效的提升。

使用限制

Spark Native 引擎目前存在使用场景限制,在限制场景时将 Spark Native引擎会在对应的 Stage 进行 fallback,回退到原生 Spark 引擎进行执行,由于 fallback 需要进行必要的数据转换,fallback 次数过多,可能会导致总体运行时间比原生 Spark 引擎更慢。
请您提前了解 Spark Native 引擎的使用限制:
支持 Parquet 数据格式,ORC 支持暂不完善,其他数据格式暂不支持。
暂不支持 Iceberg、Hudi 等湖格式。
暂不支持 ANSI 模式。
暂不支持 Date、Timestamp、Decimal、NaN 数据类型。
暂不支持动态分区写入。
暂不支持原生 Spark 的 columnar reading。
更多约束可参考gluten 使用限制算子及函数支持

配置方式

注意:
Spark Native 引擎目前仍在测试阶段,您可以通过 EMR- V3.6.1(Beta)版本使用该特性进行测试,不建议用于生产作业。
创建 EMR- V3.6.1 版本集群,您可以通过 EMR 控制台 配置管理 功能,在 spark-defaults.conf 配置文件中新增以下配置使用该特性:
参数
说明
spark.plugins
Spark 用到的插件,参数值设置为 io.glutenproject.GlutenPlugin(如果已经配置了 spark.plugins,则可以将 io.glutenproject.GlutenPlugin 加到其中,用逗号","隔开)
spark.memory.offHeap.enabled
设置为 true,Native 加速需要用到 JVM 的 off memory
spark.memory.offHeap.size
设置 offHeap 内存的大小,根据实际情况设置,初始可设置为1G
spark.shuffle.manager
gluten 使用的列式 shuffle manager, 参数值设置为:org.apache.spark.shuffle.sort.ColumnarShuffleManager
spark.driver.extraClassPath
Spark 用到的 gluten native jar,jar 包默认路径在 /usr/local/service/spark/gluten 下
spark.executor.extraClassPath
Spark 用到的 gluten native jar,jar 包默认路径在 /usr/local/service/spark/gluten 下
spark.executorEnv.LIBHDFS3_CONF
集成的 HDFS 集群配置文件的路径,默认在/usr/local/service/hadoop/etc/hadoop/hdfs-site.xml


http://www.vxiaotou.com