部署过程
 
 - 本章节以机器学习算法加速库3.0.0版本为例,其余版本可参考本章节。
- 本章节使用的测试工具JAR包和脚本均为参考样例,仅供参考,用户需要根据实际情况自行开发。
- 算法包只需要在客户端安装,控制节点和计算节点不需要安装。
| 安装目录 | 安装组件 | 
|---|---|
| /home/test/boostkit/lib | 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 | |
| /home/test/boostkit/ | 测试JAR包 | 
| 任务提交shell脚本 | 
安装步骤如下:
- 在客户端节点上,以大数据组件的授权用户登录服务器,将算法依赖的第三方开源加速库fastutil-8.3.1.jar安装到对应目录,软件JAR包设置文件权限为640。- 进入“/home/test/boostkit/lib”的目录。1cd /home/test/boostkit/lib 
- 下载fastutil-8.3.1.jar包。1wget https://repo1.maven.org/maven2/it/unimi/dsi/fastutil/8.3.1/fastutil-8.3.1.jar
- 更改JAR包权限。1chmod 640 fastutil-8.3.1.jar 
 
- 进入“/home/test/boostkit/lib”的目录。
- 将机器学习算法加速库的适配包复制到客户端的“/home/test/boostkit/lib/”目录,软件包设置文件权限为550。1 2 3 cp /opt/Spark-ml-algo-lib-v3.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-v3.0.0-spark3.3.1/ml-accelerator/target/boostkit-ml-acc_2.12-3.0.0-spark3.3.1.jar /home/test/boostkit/lib chmod 550 /home/test/boostkit/lib/boostkit-* 
- 将算法的测试工具(需要自行开发)打成的JAR包(如ml-test.jar)放入客户端的库算法包上层目录“/home/test/boostkit/”下。
- 如果运行算法,任务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配置的路径参数可能与脚本示例有所不同,请结合实际场景配置参数。
 脚本中的语句含义如表2所示。 表2 脚本的语句含义 语句 含义 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包。 
 
- 将提交任务shell脚本放入客户端与测试JAR包相同目录的“/home/test/boostkit/”下,使用yarn-client模式启动Spark作业,shell脚本内容示例如下: