叠加OmniOperator 算子加速

通过OmniOperator 算子加速特性提升算子执行效率,同时使用OmniShuffle Shuffle加速组件特性优化数据交互过程,实现端到端提升引擎查询性能。

前提条件

使用叠加特性之前请参考《Kunpeng BoostKit 24.0.RC5 大数据OmniRuntime特性指南》完成OmniOperator算子加速特性安装。

操作步骤

使用OmniShuffle Shuffle加速组件叠加OmniOperator 算子加速特性执行Spark引擎业务,需通过启动Spark-SQL命令行窗口来执行。

  1. 获取OmniShuffle Shuffle加速组件叠加OmniOperator 算子加速软件包,以Spark3.3版本为例,软件包名称为BoostKit-omniShuffle-spark-3.3.1-1.7.0-aarch64.zip。将软件包上传至“/home/ockadmin”并解压获取ock-omniop-shuffle-manager-24.0.0-for-spark-3.3.jar文件,将解压后的jar文件移动至“${OCK_HOME}/jars”目录下。
  2. “ock_spark.conf”中添加开启OmniOperator 算子加速的配置以及Shuffle manager配置,示例配置如下:

    spark.shuffle.manager              org.apache.spark.shuffle.ock.OckColumnarShuffleManager
    spark.shuffle.ock.mode rss  # RSS/ESS 可选
    
    spark.sql.orc.columnarReaderBatchSize 10000
    spark.memory.offHeap.enabled true
    spark.memory.offHeap.size 28g
    spark.driverEnv.LD_PRELOAD /opt/omni-operator/lib/libjemalloc.so.2
    spark.executorEnv.LD_PRELOAD /opt/omni-operator/lib/libjemalloc.so.2
    spark.executorEnv.OMNI_CONNECTED_ENGINE Spark
    spark.executorEnv.OMNI_HOME /opt/omni-operator
    spark.driverEnv.OMNI_HOME /opt/omni-operator
    spark.executorEnv.LD_LIBRARY_PATH /opt/omni-operator/lib/:/usr/local/lib/HMPP:$LD_LIBRARY_PATH
    spark.driverEnv.LD_LIBRARY_PATH /opt/omni-operator/lib/:/usr/local/lib/HMPP:$LD_LIBRARY_PATH
    spark.sql.extensions com.huawei.boostkit.spark.ColumnarPlugin
    spark.sql.join.columnar.preferShuffledHashJoin true
    spark.sql.orc.impl native

  3. 将SparkExtension插件启动命令添加至OmniOperator 算子加速依赖的jar路径,示例命令如下:

    spark-sql --deploy-mode client --driver-cores 8 \
                                   --driver-memory 40G \
                                   --num-executors 24 \
                                   --executor-cores 12 \
                                   --executor-memory 25g \
                                   --master yarn \
                                   --conf spark.sql.codegen.wholeStage=false \
                                   --jars /home/ockadmin/opt/ock/jars/* \
                                   --jars /opt/omni-operator/lib/* \
                                   --properties-file /home/ock_spark.conf \
                                   --database tpcds_bin_partitioned_orc_3

  4. 查看叠加特性是否成功。

    1. 执行TPC-DS SQL任务,观察到Spark History UI上的执行流程图中Shuffle算子被替换为OmniColumnarShuffleExchange,则表示使用OmniOperator 算子加速特性成功。
      图1 执行流程图
    2. 观察driver日志中出现Shuffle initialize success则表示使用OmniShuffle Shuffle加速组件成功。
      图2 driver日志信息

  • “/opt/omni-operator/” 为OmniOperator 算子加速的安装目录,可根据实际情况修改。
  • 步骤2中添加的配置项具体作用请参考《Kunpeng BoostKit 24.0.RC5 大数据OmniRuntime特性指南》。
  • spark.shuffle.ock.mode 为Shuffle使用的模式,跟OmniShuffle Shuffle加速组件部署方式保持一致。