---
title: 安装Spark引擎
description: "OmniData算子下推特性支持Spark引擎，使用OmniData算子下推特性前应先安装Spark引擎，并在Spark引擎中添加OmniData算子下推参数。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2300/bds/kunpengbds_omniruntime_20_0056.html
sourcePath: /source/zh/kunpengboostkithistory/2300/bds/kunpengbds_omniruntime_20_0056.html
indexId: a1ed64f30b0a3cf56952b26fd0052929ab089b72ee954ce660b5702ed50f823678
---
# 安装Spark引擎

OmniData算子下推特性支持Spark引擎，使用OmniData算子下推特性前应先安装Spark引擎，并在Spark引擎中添加OmniData算子下推参数。

#### 规划集群环境

本章节规划的环境由七台服务器组成，分别是任务提交节点（1台）、计算节点（3台）、存储节点（3台）。其中Spark Driver作为大数据集群的任务提交节点，计算节点分别是大数据集群的agent1、agent2和agent3。存储节点分别是大数据集群的ceph1、ceph2、ceph3。如图1所示。

图1 环境配置

集群所使用的硬件环境如表1所示。


**表1 集群环境硬件配置**

| 项目 | 型号 |
| --- | --- |
| 处理器 | 鲲鹏920 5250处理器 |
| 内存大小 | 384GB （12 \* 32GB） |
| 内存频率 | 2666MHz |
| 网卡 | Ceph环境：业务网络25GE，管理网络1GE HDFS环境：业务网络10GE，管理网络1GE |
| 硬盘 | 系统盘：1 \* RAID 0（1 \* 1.2T SAS HDD） 管理节点：12 \* RAID 0（1 \* 4T SATA HDD） 计算节点： Ceph环境：1 \* 3.2T NVMe HDFS环境：12 \* RAID 0（1 \* 4T SATA HDD） 存储节点： Ceph环境：12 \* RAID 0（1 \* 4T SATA HDD） 1 \* 3.2T NVMe HDFS环境：12 \* RAID 0（1 \* 4T SATA HDD） |
| RAID卡 | LSI SAS3508 |


#### 安装Spark 3.1.1引擎

安装过程选择“/opt/boostkit”作为软件安装的目录，将Spark编译依赖的JAR都放在该目录下，如表2所示。


**表2 组件安装目录**

| 安装节点 | 安装目录 | 安装组件 | 获取方式 |
| --- | --- | --- | --- |
| 服务端（server1） | /opt/boostkit | aws\-java\-sdk\-bundle\-1.11.375.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | bcpkix\-jdk15on\-1.68.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | boostkit\-omnidata\-client\-1.5.0\-aarch64.jar | 华为Support官网下载 |
| 服务端（server1） | /opt/boostkit | boostkit\-omnidata\-common\-1.5.0\-aarch64.jar | 华为Support官网下载 |
| 服务端（server1） | /opt/boostkit | boostkit\-omnidata\-spark\-sql\_2.12\-3.1.1\-1.5.0.jar | 鲲鹏社区下载或者使用源码进行编译 |
| 服务端（server1） | /opt/boostkit | curator\-client\-2.12.0.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | curator\-framework\-2.12.0.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | curator\-recipes\-2.12.0.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | fastjson\-1.2.83.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | fst\-2.57.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | guava\-26.0\-jre.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | haf\-1.3.0.jar | 华为Support官网下载 |
| 服务端（server1） | /opt/boostkit | hdfs\-ceph\-3.2.0.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | hetu\-transport\-1.6.1.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | jackson\-datatype\-guava\-2.12.4.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | jackson\-datatype\-jdk8\-2.12.4.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | jackson\-datatype\-joda\-2.13.3.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | jackson\-datatype\-jsr310\-2.12.4.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | jackson\-module\-parameter\-names\-2.12.4.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | jasypt\-1.9.3.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | jol\-core\-0.2.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | joni\-2.1.5.3.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | log\-0.193.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | perfmark\-api\-0.23.0.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | presto\-main\-1.6.1.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | presto\-spi\-1.6.1.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | protobuf\-java\-3.12.0.jar | 鲲鹏社区下载 |
| 服务端（server1） | /opt/boostkit | slice\-0.38.jar | 鲲鹏社区下载 |


aws-java-sdk-bundle-1.11.375.jar、hdfs-ceph-3.2.0.jar这两个JAR包在Ceph环境下需要添加，HDFS不需要这两个JAR包。除aws-java-sdk-bundle-1.11.375.jar、hdfs-ceph-3.2.0.jar外，上述依赖包可通过执行Gitee上spark_build.sh(https://gitee.com/kunpengcompute/boostkit-bigdata/blob/main/omnidata/omnidata-spark-connector/spark_build.sh)脚本获取。


1. 创建“/opt/boostkit”目录。
  1 mkdir -p /opt/boostkit

2. 在任务提交节点（spark driver）上，将在软件获取中得到的boostkit-omnidata-client-1.5.0-aarch64.jar和boostkit-omnidata-common-1.5.0-aarch64.jar（“BoostKit-omnidata_1.5.0.zip\BoostKit-omnidata_1.5.0.tar.gz”中），上传到“/opt/boostkit”目录。
  1 2 cp boostkit-omnidata-client-1.5.0-aarch64.jar /opt/boostkit cp boostkit-omnidata-common-1.5.0-aarch64.jar /opt/boostkit

3. 将在软件获取中得到的haf-1.3.0.jar（“BoostKit-haf_1.3.0.zip\haf-1.3.0.tar.gz\haf-host-1.3.0.tar.gz\lib\jar”中），上传到“/opt/boostkit”目录。
  1 cp haf-1.3.0.jar /opt/boostkit

4. 将在软件获取中得到的hdfs-ceph-3.2.0.jar以及boostkit-omnidata-server-1.5.0-aarch64-lib.zip中的aws-java-sdk-bundle-1.11.375.jar，上传到“/opt/boostkit”目录（如果是HDFS存储系统，则跳过该步骤）。
  1 2 cp hdfs-ceph-3.2.0.jar /opt/boostkit cp aws-java-sdk-bundle-1.11.375.jar /opt/boostkit

5. 使用FTP工具将在软件获取中得到boostkit-omnidata-spark-sql_2.12-3.1.1-1.5.0-aarch64.zip压缩包上传到安装环境并解压。
  1 unzip boostkit-omnidata-spark-sql_2.12-3.1.1-1.5.0-aarch64.zip

6. 将boostkit-omnidata-spark-sql_2.12-3.1.1-1.5.0-aarch64.zip压缩包内的JAR包拷贝到“/opt/boostkit”目录。
  1 2 cd boostkit-omnidata-spark-sql_2.12-3.1.1-1.5.0-aarch64 cp *.jar /opt/boostkit

  如果用户需要手动编译boostkit-omnidata-spark-sql_2.12-3.1.1-1.5.0.jar，可以根据README.md(https://gitee.com/kunpengcompute/omnidata-spark-connector/blob/main/README.md)编译。

7. 新增OmniData算子下推的参数到Spark的配置文件（“$SPARK_HOME/conf/spark-defaults.conf”）中。
以下过程中$SPARK_HOME用“/usr/local/spark”替代。

  a. 编辑Spark配置文件。
    1 vi /usr/local/spark/conf/spark-defaults.conf

  b. 按“i”进入编辑模式，将下面参数配置添加到spark-defaults.conf中。
    1 2 3 4 5 6 7 8 9 10 11 12 13 spark.sql.cbo.enabled true spark.sql.cbo.planStats.enabled true spark.sql.ndp.enabled true spark.sql.ndp.filter.selectivity.enable true spark.sql.ndp.filter.selectivity 0.5 spark.sql.ndp.alive.omnidata 3 spark.sql.ndp.table.size.threshold 10 spark.sql.ndp.zookeeper.address agent1:2181,agent2:2181,agent3:2181 spark.sql.ndp.zookeeper.path /sdi/status spark.sql.ndp.zookeeper.timeout 15000 spark.driver.extraLibraryPath /home/omm/omnidata-install/haf-host/lib spark.executor.extraLibraryPath /home/omm/omnidata-install/haf-host/lib spark.executorEnv.HAF_CONFIG_PATH /home/omm/omnidata-install/haf-host/etc/

    以上的参数也可以通过set命令直接在spark-sql设置。

    新增OmniData算子下推的参数信息如表3所示。

**表3 OmniData算子下推的参数含义**

| 参数 | 推荐值 | 含义 |
| --- | --- | --- |
| spark.sql.cbo.enabled | true | 是否开启cbo优化，设置为true时，启用cbo以估计执行计划来统计信息。 |
| spark.sql.cbo.planStats.enabled | true | 设置为true时，逻辑计划将从目录中获取行和列的统计信息。 |
| spark.sql.ndp.enabled | true | 是否开启OmniData算子下推。 |
| spark.sql.ndp.filter.selectivity.enable | true | 是否开启filter选择率来判断是否下推。 |
| spark.sql.ndp.filter.selectivity | 0.5 | filter选择率小于该值才会下推（selectivity越小，表示需要过滤的数据量越小），缺省值为0.5，类型为double。 需要开启spark.sql.ndp.filter.selectivity.enable=true。 如果需要强制下推，可以将参数设置为1.0。 |
| spark.sql.ndp.table.size.threshold | 10240 | 表大于该值才会下推，缺省值为10240，单位：字节。 |
| spark.sql.ndp.alive.omnidata | 3 | 集群OmniData算子下推Server数量。 |
| spark.sql.ndp.zookeeper.address | agent1:2181,agent2:2181,agent3:2181 | 连接ZooKeeper地址。 |
| spark.sql.ndp.zookeeper.path | /sdi/status | ZooKeeper存放下推资源信息的目录。 |
| spark.sql.ndp.zookeeper.timeout | 15000 | ZooKeeper超时时间，单位：ms。 |
| spark.driver.extraLibraryPath | /home/omm/omnidata\-install/haf\-host/lib | Spark运行时driver依赖的库文件路径。 |
| spark.executor.extraLibraryPath | /home/omm/omnidata\-install/haf\-host/lib | Spark执行时executor依赖的库文件路径。 |
| spark.executorEnv.HAF\_CONFIG\_PATH | /home/omm/omnidata\-install/haf\-host/etc/ | 使能HAF时的配置文件路径。 |


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。


- HAF在计算节点的日志目录：“/home/omm/omnidata-install/haf-host/logs”。
- 如果集群为安全模式，需配置spark.sql.ndp.zookeeper.jaas.conf和spark.sql.ndp.zookeeper.krb5.conf参数，参数值为对应jaas和krb5的文件路径，文件路径用户自定义。
