升级算法加速库
算法库更新版本后,可以按照以下流程进行版本升级,升级前建议停止算法任务。
- 在客户端节点上,以大数据组件的授权用户登录服务器,删除客户端“/home/test/boostkit/lib/”目录下旧版本的机器学习算法加速库JAR包。
1 2
rm -f /home/test/boostkit/lib/boostkit-* rm -f /home/test/boostkit/lib/libboostkit-*
- 参考编译代码获取机器学习算法加速库适配包。
- 参考获取机器学习算法加速库的核心JAR包获取机器学习算法加速库的核心JAR包。
- 将2获得的机器学习算法加速库适配包复制到“/home/test/boostkit/lib/”目录下。
1 2 3 4 5 6 7
cp /opt/Spark-ml-algo-lib-2.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-2.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-2.2.0-spark2.3.2/ml-xgboost/jvm-packages/boostkit-xgboost4j/target/boostkit-xgboost4j_2.11-2.2.0.jar /home/test/boostkit/lib cp /opt/Spark-ml-algo-lib-2.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 cp /opt/boostkit-ml-kernel_2.11-2.2.0-spark2.3.2-aarch64.jar /home/test/boostkit/lib cp /opt/boostkit-xgboost4j-kernel-2.11-2.2.0-spark2.3.2-aarch64.jar /home/test/boostkit/lib cp /opt/libboostkit_xgboost_kernel.so /home/test/boostkit/lib
- 如果运行除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配置的路径参数可能与脚本示例有所不同,请结合实际场景配置参数。
脚本中的语句含义如表1所示。
表1 脚本的语句含义 语句
含义
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包。
- 将提交任务shell脚本放入客户端与测试JAR包相同目录的“/home/test/boostkit/”下,使用yarn-client模式启动Spark作业,shell脚本内容示例如下:
- 如果运行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。
- 将提交任务shell脚本放入客户端与测试JAR包相同目录的“/home/test/boostkit/”下,使用yarn-client模式启动Spark作业,shell脚本内容示例如下: