---
title: 部署过程
description: "将编译Spark算法适配包中得到的软件包移动到安装目录，如表1所示，安装根目录“/home/test/boostkit/”仅为举例，请关注安装目录相对路径。- 本章节以机器学习算法加速库2.2.0版本为例，其余版本可参考本章节。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_20_0023.html
sourcePath: /source/zh/kunpengboostkithistory/2200/bds/kunpengbdssparkml_20_0023.html
indexId: b1dad50cd2c3c3e09a92e82a6f3e0b962fe4301d92c5244ac6f6409f345ff1d373
---
# 部署过程

将编译Spark算法适配包中得到的软件包移动到安装目录，如表1所示，安装根目录“/home/test/boostkit/”仅为举例，请关注安装目录相对路径。- 本章节以机器学习算法加速库2.2.0版本为例，其余版本可参考本章节。
- 本章节使用的测试工具JAR包和脚本均为参考样例，仅供参考，用户需要根据实际情况自行开发。
- 算法包只需要在客户端安装，控制节点和计算节点不需要安装。


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

| 安装目录 | 安装组件 |
| --- | --- |
| /home/test/boostkit/lib | boostkit\-ml\-acc\_2.11\-2.2.0\-spark2.3.2.jar |
| /home/test/boostkit/lib | boostkit\-ml\-core\_2.11\-2.2.0\-spark2.3.2.jar |
| /home/test/boostkit/lib | boostkit\-ml\-kernel\-2.11\-2.2.0\-spark2.3.2\-aarch64.jar |
| /home/test/boostkit/lib | boostkit\-xgboost4j\-kernel\-2.11\-2.2.0\-spark2.3.2\-aarch64.jar |
| /home/test/boostkit/lib | boostkit\-xgboost4j\-spark2.3.2\_2.11\-2.2.0.jar |
| /home/test/boostkit/lib | boostkit\-xgboost4j\_2.11\-2.2.0.jar |
| /home/test/boostkit/lib | libboostkit\_xgboost\_kernel.so |
| /home/test/boostkit/lib | 依赖的第三方开源加速库fastutil\-8.3.1.jar |
| /home/test/boostkit/ | 测试JAR包 |
| /home/test/boostkit/ | 任务提交shell脚本 |


安装步骤如下：

1. 在客户端节点上，以大数据组件的授权用户登录服务器，将算法依赖的第三方开源加速库fastutil-8.3.1.jar安装到对应目录，软件JAR包设置文件权限为640。

  a. 进入“/home/test/boostkit/lib”的目录。
    1 cd /home/test/boostkit/lib

  b. 下载fastutil-8.3.1.jar包。
    1 wget https://repo1.maven.org/maven2/it/unimi/dsi/fastutil/8.3.1/fastutil-8.3.1.jar

  c. 更改JAR包权限。
    1 chmod 640 fastutil-8.3.1.jar

2. 将机器学习算法加速库的适配包复制到客户端的“/home/test/boostkit/lib/”目录，软件包设置文件权限为550。
  1 2 3 4 5 6 cp /opt/Spark-ml-algo-lib-v2.2.0-spark2.3.2/ml-core/target/boostkit-ml-core_2.11-2.2.0-spark2.3.2.jar /home/test/boostkit/lib cp /opt/Spark-ml-algo-lib-v2.2.0-spark2.3.2/ml-accelerator/target/boostkit-ml-acc_2.11-2.2.0-spark2.3.2.jar /home/test/boostkit/lib cp /opt/Spark-ml-algo-lib-v2.2.0-spark2.3.2/ml-xgboost/jvm-packages/boostkit-xgboost4j/target/boostkit-xgboost4j_2.11-2.2.0_aarch64.jar /home/test/boostkit/lib cp /opt/Spark-ml-algo-lib-v2.2.0-spark2.3.2/ml-xgboost/jvm-packages/boostkit-xgboost4j-spark/target/boostkit-xgboost4j-spark_2.11-2.2.0_aarch64.jar /home/test/boostkit/lib chmod 550 /home/test/boostkit/lib/boostkit-* chmod 550 /home/test/boostkit/lib/libboostkit_xgboost_kernel.so

3. 将算法的测试工具（需要自行开发）打成的JAR包（如ml-test.jar）放入客户端的库算法包上层目录“/home/test/boostkit/”下。
  用户可自行开发或者参考测试工具kal-test README：https://gitee.com/kunpengcompute/Spark-ml-algo-lib/tree/master/tools/kal-test(https://gitee.com/kunpengcompute/Spark-ml-algo-lib/tree/master/tools/kal-test)

4. 如果运行除XGBoost之外的算法，任务shell脚本内容可参考以下脚本内容（yarn-client模式和yarn-cluster模式二选一即可）。

  - 将提交任务shell脚本放入客户端与测试JAR包相同目录的“/home/test/boostkit/”下，使用yarn-client模式启动Spark作业，shell脚本内容示例如下：
    1 2 3 4 5 6 7 8 9 10 11 12 #!/bin/bash spark-submit \ --class com.bigdata.ml.RFMain \ --master yarn \ --deploy-mode client \ --driver-cores 36 \ --driver-memory 50g \ --jars "lib/fastutil-8.3.1.jar,lib/boostkit-ml-acc_2.11-2.2.0-spark2.3.2.jar,lib/boostkit-ml-core_2.11-2.2.0-spark2.3.2.jar,lib/boostkit-ml-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar" \ --conf "spark.executor.extraClassPath=fastutil-8.3.1.jar:boostkit-ml-acc_2.11-2.2.0-spark2.3.2.jar:boostkit-ml-core_2.11-2.2.0-spark2.3.2.jar:boostkit-ml-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar" \ --driver-class-path "lib/ml-test.jar:lib/fastutil-8.3.1.jar:lib/snakeyaml-1.17.jar:lib/boostkit-ml-acc_2.11-2.2.0-spark2.3.2.jar:lib/boostkit-ml-core_2.11-2.2.0-spark2.3.2.jar:lib/boostkit-ml-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar" ./ml-test.jar

  - 将提交任务shell脚本放入客户端与测试JAR包相同目录的“/home/test/boostkit/”下，使用yarn-cluster模式启动Spark作业，shell脚本内容示例如下：
    1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/bash spark-submit \ --class com.bigdata.ml.RFMain \ --master yarn \ --deploy-mode cluster \ --driver-cores 36 \ --driver-memory 50g \ --jars "lib/fastutil-8.3.1.jar,lib/boostkit-ml-acc_2.11-2.2.0-spark2.3.2.jar,lib/boostkit-ml-core_2.11-2.2.0-spark2.3.2.jar,lib/boostkit-ml-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar,lib/boostkit-xgboost4j-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar" \ --driver-class-path "ml-test.jar:fastutil-8.3.1.jar:snakeyaml-1.17.jar:boostkit-ml-acc_2.11-2.2.0-spark2.3.2.jar:boostkit-ml-core_2.11-2.2.0-spark2.3.2.jar:boostkit-ml-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar" \ --conf "spark.yarn.cluster.driver.extraClassPath=ml-test.jar:snakeyaml-1.17.jar:boostkit-ml-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar:boostkit-ml-acc_2.11-2.2.0-spark2.3.2.jar:boostkit-ml-core_2.11-2.2.0-spark2.3.2.jar" \ --conf "spark.executor.extraClassPath=fastutil-8.3.1.jar:boostkit-ml-acc_2.11-2.2.0-spark2.3.2.jar:boostkit-ml-core_2.11-2.2.0-spark2.3.2.jar:boostkit-ml-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar" \ ./ml-test.jar

    由于XGBoost有部分C++代码所以XGBoost算法的提交参数与其他算法略有不同，以上脚本可以提交除XGBoost外的其他算法作业。 算法包运行时的日志默认回显到客户端控制台，不储存在文件中，可以通过引入自定义的log4j.properties将日志保存到本地，引入方法可参考设置运行日志保存到本地。 Spark单机cluster模式提交任务时，建议启用身份验证，并禁用REST API，为规避Spark漏洞。 不同的大数据平台上，executorEnv.LD_LIBRARY_PATH、spark.executor.extraLibraryPath和spark.driver.extraLibraryPath配置的路径参数可能与脚本示例有所不同，请结合实际场景配置参数。

    脚本中的语句含义如表2所示。

**表2 脚本的语句含义**

| 语句 | 含义 |
| --- | --- |
| spark\-submit | 指明是以spark\-submit的形式提交作业。 |
| \-\-class com.bigdata.ml.RFMain | 调用算法的测试程序入口函数。 |
| \-\-driver\-class\-path "XXX" | 指明需要用到的机器学习算法加速库、依赖的第三方开源加速库fastutil、算法的测试JAR包在客户端的存放地址，建议写绝对地址。 机器学习算法加速库需要用到的包：boostkit\-ml\-acc\_2.11\-2.2.0\-spark2.3.2.jar、boostkit\-ml\-core\_2.11\-2.2.0\-spark2.3.2.jar、boostkit\-ml\-kernel\-2.11\-2.2.0\-spark2.3.2\-aarch64.jar、fastutil\-8.3.1.jar、boostkit\-xgboost4j\-kernel\-2.11\-2.2.0\-spark2.3.2\-aarch64.jar、boostkit\-xgboost4j\-spark2.3.2\_2.11\-2.2.0.jar、boostkit\-xgboost4j\_2.11\-2.2.0.jar。 当提交yarn\-client模式的Spark作业时需要写清楚所要引用的JAR包在当前节点的路径和JAR包的名字，多个JAR包之间使用“:”作为分隔符。 当提交yarn\-cluster模式的Spark作业时不需要写清楚所要引用的JAR包在当前节点的路径，只需要写清楚要引用的JAR包的名字即可，多个JAR包之间使用“:”作为分隔符。 |
| \-\-conf "spark.executor.extraClassPath=XXX" | 指明需要用到的机器学习算法加速库、依赖的第三方开源加速库fastutil和算法所需的JAR包。 机器学习算法加速库需要用到的包：boostkit\-ml\-acc\_2.11\-2.2.0\-spark2.3.2.jar、boostkit\-ml\-core\_2.11\-2.2.0\-spark2.3.2.jar、boostkit\-ml\-kernel\-2.11\-2.2.0\-spark2.3.2\-aarch64.jar、fastutil\-8.3.1.jar、boostkit\-xgboost4j\-kernel\-2.11\-2.2.0\-spark2.3.2\-aarch64.jar、boostkit\-xgboost4j\-spark2.3.2\_2.11\-2.2.0.jar、boostkit\-xgboost4j\_2.11\-2.2.0.jar。 |
| \-\-conf "spark.yarn.cluster.driver.extraClassPath=XXX" | 指明需要用到的机器学习算法加速库、依赖的第三方开源加速库fastutil和算法所需的JAR包。 机器学习算法加速库需要用到的包：boostkit\-ml\-acc\_2.11\-2.2.0\-spark2.3.2.jar、boostkit\-ml\-core\_2.11\-2.2.0\-spark2.3.2.jar、boostkit\-ml\-kernel\-2.11\-2.2.0\-spark2.3.2\-aarch64.jar、fastutil\-8.3.1.jar、boostkit\-xgboost4j\-kernel\-2.11\-2.2.0\-spark2.3.2\-aarch64.jar、boostkit\-xgboost4j\-spark2.3.2\_2.11\-2.2.0.jar、boostkit\-xgboost4j\_2.11\-2.2.0.jar。 只有yarn\-cluster模式的Spark作业需要配置此参数，只需要写清楚所引用的JAR包的名字，多个JAR包之间使用“:”作为分隔符。 |
| \-\-master yarn | 指明在Yarn集群上提交Spark任务。 |
| \-\-deploy\-mode cluster | 指明提交Spark任务的模式是cluster形式的。 |
| \-\-deploy\-mode client | 指明提交Spark任务的模式是client形式的。 |
| \-\-driver\-cores | driver进程所用到的核数。 |
| \-\-driver\-memory | driver使用的内存，不可超过单机的总内存。 |
| \-\-jars | 指定算法所需JAR包，要写清楚所指定JAR包的路径和名字，多个JAR包之间使用“,”作为分隔符。 |
| \-\-conf spark.executorEnv.LD\_LIBRARY\_PATH="XXX" | 设置executor的LD\_LIBRARY\_PATH使之可以加载到libboostkit\_xgboost\_kernel.so。 |
| \-\-conf spark.executor.extraLibraryPath="XXX" | 设置executor的LibraryPath，设置额外的executor运行lib目录，使driver读取到libboostkit\_xgboost\_kernel.so。 |
| \-\-conf spark.driver.extraLibraryPath="XXX" | 设置driver的LibraryPath，设置额外的driver运行lib目录，使executor读取到libboostkit\_xgboost\_kernel.so。 |
| \-\-files | 在执行Spark作业的时候将该参数中配置到的文件拷贝到Spark计算节点对应的workspace使之可以读取到libboostkit\_xgboost\_kernel.so。 |
| ./ml\-test.jar | 指明作为测试程序的JAR包。 |


5. 如果运行XGBoost算法，任务shell脚本内容可参考以下脚本内容（yarn-client模式和yarn-cluster模式二选一即可）。

  - 将提交任务shell脚本放入客户端与测试JAR包相同目录的“/home/test/boostkit/”下，使用yarn-client模式启动Spark作业，shell脚本内容示例如下：
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/bash spark-submit \ --class com.bigdata.ml.XGBTRunner\ --master yarn \ --deploy-mode client \ --driver-cores 36 \ --driver-memory 50g \ --jars "lib/boostkit-xgboost4j-spark-kernel_2.11-2.2.0-aarch_64.jar,lib/boostkit-xgboost4j-spark2.3.2_2.11-2.2.0.jar,lib/boostkit-xgboost4j_2.11-2.2.0.jar" \ --conf "spark.executor.extraClassPath=boostkit-xgboost4j-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar:boostkit-xgboost4j-spark2.3.2_2.11-2.2.0.jar:boostkit-xgboost4j_2.11-2.2.0.jar" \ --driver-class-path "lib/ml-test.jar:lib/boostkit-xgboost4j-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar:lib/boostkit-xgboost4j-spark2.3.2_2.11-2.2.0.jar:lib/boostkit-xgboost4j_2.11-2.2.0.jar" --conf spark.executorEnv.LD_LIBRARY_PATH="./lib/:${LD_LIBRARY_PATH}" \ --conf spark.executor.extraLibraryPath="./lib" \ --conf spark.driver.extraLibraryPath="./lib" \ --files=lib/libboostkit_xgboost_kernel.so \ ./ml-test.jar

  - 将提交任务shell脚本放入客户端与测试JAR包相同目录的“/home/test/boostkit/”下，使用yarn-cluster模式启动Spark作业，shell脚本内容示例如下：
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/bin/bash spark-submit \ --class com.bigdata.ml.XGBTRunner\ --master yarn \ --deploy-mode cluster \ --driver-cores 36 \ --driver-memory 50g \ --jars "lib/boostkit-xgboost4j-spark-kernel_2.11-2.2.0-aarch_64.jar,lib/boostkit-xgboost4j-spark2.3.2_2.11-2.2.0.jar,lib/boostkit-xgboost4j_2.11-2.2.0.jar" \ --conf "spark.executor.extraClassPath=boostkit-xgboost4j-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar:boostkit-xgboost4j-spark2.3.2_2.11-2.2.0.jar:boostkit-xgboost4j_2.11-2.2.0.jar" \ --driver-class-path "ml-test.jar:boostkit-xgboost4j-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar:boostkit-xgboost4j-spark2.3.2_2.11-2.2.0.jar:boostkit-xgboost4j_2.11-2.2.0.jar" --conf "spark.yarn.cluster.driver.extraClassPath=ml-test.jar:boostkit-xgboost4j-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar:boostkit-xgboost4j-spark2.3.2_2.11-2.2.0.jar:boostkit-xgboost4j_2.11-2.2.0.jar" --conf spark.executorEnv.LD_LIBRARY_PATH="./lib/:${LD_LIBRARY_PATH}" \ --conf spark.executor.extraLibraryPath="./lib" \ --conf spark.driver.extraLibraryPath="./lib" \ --files=lib/libboostkit_xgboost_kernel.so \ ./ml-test.jar

    算法包运行时的日志默认回显到客户端控制台，不储存在文件中，可以通过引入自定义的log4j.properties将日志保存到本地，引入方法可参考设置运行日志保存到本地。 Spark单机cluster模式提交任务时，建议启用身份验证，并禁用REST API，为规避Spark漏洞。 不同的大数据平台上，executorEnv.LD_LIBRARY_PATH、spark.executor.extraLibraryPath和spark.driver.extraLibraryPath配置的路径参数可能与脚本示例有所不同，请结合实际场景配置参数。 脚本参数含义请参见表2。


升级算法库请参见升级算法加速库。
