---
title: 升级算法加速库
description: "1. 在客户端节点上，以大数据组件的授权用户登录服务器，删除客户端“/home/test/boostkit/lib/”目录下旧版本的机器学习算法加速库JAR包。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdssparkml_20_0027.html
sourcePath: /source/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdssparkml_20_0027.html
indexId: f155f40dd6e4ffa1ce2f1a8a46898b781dd4f5fe48d5cdafb1f63ebe22b63d6f88
---
# 升级算法加速库

1. 在客户端节点上，以大数据组件的授权用户登录服务器，删除客户端“/home/test/boostkit/lib/”目录下旧版本的机器学习算法加速库JAR包。
  1 2 rm -f /home/test/boostkit/lib/boostkit-* rm -f /home/test/boostkit/lib/libboostkit-*

2. 参考编译代码获取机器学习算法加速库适配包。
3. 参考获取机器学习算法加速库的核心JAR包获取机器学习算法加速库的核心JAR包。
4. 将2获得的机器学习算法加速库适配包复制到“/home/test/boostkit/lib/”目录下。
  1 2 3 cp /opt/Spark-ml-algo-lib-3.0.0-spark3.3.1/ml-core/target/boostkit-ml-core_2.12-3.0.0-spark3.3.1.jar /home/test/boostkit/lib cp /opt/Spark-ml-algo-lib-3.0.0-spark3.3.1/ml-accelerator/target/boostkit-ml-acc_2.12-3.0.0-spark3.3.1.jar /home/test/boostkit/lib cp /opt/boostkit-ml-kernel_2.12-3.0.0-spark3.3.1-aarch64.jar /home/test/boostkit/lib

5. 如果运行算法，任务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.12-3.0.0-spark3.3.1.jar,lib/boostkit-ml-core_2.12-3.0.0-spark3.3.1.jar,lib/boostkit-ml-kernel-2.12-3.0.0-spark3.3.1-aarch64.jar" \ --conf "spark.executor.extraClassPath=fastutil-8.3.1.jar:boostkit-ml-acc_2.12-3.0.0-spark3.3.1.jar:boostkit-ml-core_2.12-3.0.0-spark3.3.1.jar:boostkit-ml-kernel-2.12-3.0.0-spark3.3.1-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.12-3.0.0-spark3.3.1.jar:lib/boostkit-ml-core_2.12-3.0.0-spark3.3.1.jar:lib/boostkit-ml-kernel-2.12-3.0.0-spark3.3.1-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.12-3.0.0-spark3.3.1.jar,lib/boostkit-ml-core_2.12-3.0.0-spark3.3.1.jar,lib/boostkit-ml-kernel-2.12-3.0.0-spark3.3.1-aarch64.jar,lib/boostkit-xgboost4j-kernel-2.12-3.0.0-spark3.3.1-aarch64.jar" \ --driver-class-path "ml-test.jar:fastutil-8.3.1.jar:snakeyaml-1.17.jar:boostkit-ml-acc_2.12-3.0.0-spark3.3.1.jar:boostkit-ml-core_2.12-3.0.0-spark3.3.1.jar:boostkit-ml-kernel-2.12-3.0.0-spark3.3.1-aarch64.jar" \ --conf "spark.yarn.cluster.driver.extraClassPath=ml-test.jar:snakeyaml-1.17.jar:boostkit-ml-kernel-2.12-3.0.0-spark3.3.1-aarch64.jar:boostkit-ml-acc_2.12-3.0.0-spark3.3.1.jar:boostkit-ml-core_2.12-3.0.0-spark3.3.1.jar" \ --conf "spark.executor.extraClassPath=fastutil-8.3.1.jar:boostkit-ml-acc_2.12-3.0.0-spark3.3.1.jar:boostkit-ml-core_2.12-3.0.0-spark3.3.1.jar:boostkit-ml-kernel-2.12-3.0.0-spark3.3.1-aarch64.jar" \ ./ml-test.jar

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

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

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

| 语句 | 含义 |
| --- | --- |
| spark\-submit | 指明是以spark\-submit的形式提交作业。 |
| \-\-class com.bigdata.ml.RFMain | 调用算法的测试程序入口函数。 |
| \-\-driver\-class\-path "XXX" | 指明需要用到的机器学习算法加速库、依赖的第三方开源加速库fastutil、算法的测试JAR包在客户端的存放地址，建议写绝对地址。 机器学习算法加速库需要用到的包：boostkit\-ml\-acc\_2.12\-3.0.0\-spark3.3.1.jar、boostkit\-ml\-core\_2.12\-3.0.0\-spark3.3.1.jar、boostkit\-ml\-kernel\-2.12\-3.0.0\-spark3.3.1\-aarch64.jar、boostkit\-ml\-kernel\-client\_2.12\-3.0.0\-spark3.3.1.jar、fastutil\-8.3.1.jar。 当提交yarn\-client模式的Spark作业时需要写清楚所要引用的JAR包在当前节点的路径和JAR包的名字，多个JAR包之间使用“:”作为分隔符。 当提交yarn\-cluster模式的Spark作业时不需要写清楚所要引用的JAR包在当前节点的路径，只需要写清楚要引用的JAR包的名字即可，多个JAR包之间使用“:”作为分隔符。 |
| \-\-conf "spark.executor.extraClassPath=XXX" | 指明需要用到的机器学习算法加速库、依赖的第三方开源加速库fastutil和算法所需的JAR包。 机器学习算法加速库需要用到的包：boostkit\-ml\-acc\_2.12\-3.0.0\-spark3.3.1.jar、boostkit\-ml\-core\_2.12\-3.0.0\-spark3.3.1.jar、boostkit\-ml\-kernel\-2.12\-3.0.0\-spark3.3.1\-aarch64.jar、boostkit\-ml\-kernel\-client\_2.12\-3.0.0\-spark3.3.1.jar、fastutil\-8.3.1.jar。 |
| \-\-conf "spark.yarn.cluster.driver.extraClassPath=XXX" | 指明需要用到的机器学习算法加速库、依赖的第三方开源加速库fastutil和算法所需的JAR包。 机器学习算法加速库需要用到的包：boostkit\-ml\-acc\_2.12\-3.0.0\-spark3.3.1.jar、boostkit\-ml\-core\_2.12\-3.0.0\-spark3.3.1.jar、boostkit\-ml\-kernel\-2.12\-3.0.0\-spark3.3.1\-aarch64.jar、boostkit\-ml\-kernel\-client\_2.12\-3.0.0\-spark3.3.1.jar、fastutil\-8.3.1.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。 |
| \-\-conf spark.executor.extraLibraryPath="XXX" | 设置Executor的LibraryPath。 |
| \-\-conf spark.driver.extraLibraryPath="XXX" | 设置Driver的LibraryPath。 |
| \-\-files | 在执行Spark作业的时候将该参数中配置到的文件复制到Spark计算节点对应的workspace使之可以读取到libboostkit\_xgboost\_kernel.so、libboostkit\_lightgbm\_close.so。 |
| ./ml\-test.jar | 指明作为测试程序的JAR包。 |
