执行移植分析
将软件从x86平台移植到鲲鹏服务器时,建议先使用鲲鹏应用迁移工具或自定义脚本对软件进行移植分析,再依据分析报告进行移植。
方法一:使用鲲鹏应用迁移工具
使用鲲鹏应用迁移工具扫描Spark安装包,生成分析报告,详细操作步骤如下。
- 扫描Spark安装包并分析扫描报告,详细操作步骤请参见《使用鲲鹏应用迁移工具案例》。分析得出需要移植的第三方依赖包如图1所示。
- 根据扫描结果,下载“软件迁移评估报告”中显示“可兼容”的新JAR包,替换掉原始JAR包。
- 如果分析结果中出现“待确认”的包,请联系供应方获取鲲鹏兼容版本,或获取源码并在鲲鹏平台上编译生成鲲鹏兼容版本。
方法二:使用自定义脚本检查
通过自定义脚本检测Spark安装包中JAR文件是否包含动态库文件(.so),并进一步验证动态库是否支持AArch64架构,详细操作步骤如下。
- 使用以下脚本检查Spark安装包里是否有动态库文件。
#!/bin/bash spark_jars=/usr/local/spark/jars for file in $(ls -v $spark_jars); do if [[ $file == *.jar ]]; then if jar tf $spark_jars/$file 2>/dev/null | grep -q "\.so$"; then echo "=== $file contains linux dynamic libraries: ===" jar tf $spark_jars/$file 2>/dev/null | awk -F '/' '{print $NF}' | grep "lib.*\.so$" fi fi done执行该脚本后,会列出包含so文件的JAR包及其文件名。以Spark 3.3.1为例,输出结果如下图所示。

- 检查JAR包里的so文件是否支持AArch64平台。以步骤1截图中的commons-crypto-1.1.0.jar为例。
cd /usr/local/spark/jars mkdir tmp find -name lib*
输出结果如下图所示。

如果文件路径中包含arm或者aarch64,说明该文件是为AArch64架构编译的,支持鲲鹏平台。
- 使用如下命令进一步确认架构。
readelf -h ./org/apache/commons/crypto/native/Linux/aarch64/libcommons-crypto.so
输出结果如下图所示。

- 如果Machine显示为AArch64,则表示该动态库是为AArch64平台编译的,支持鲲鹏平台。
- 如果显示为其他架构,则表示该包不支持鲲鹏平台,需要执行步骤4。
- 请联系供应方获取鲲鹏兼容版本,或获取源码并在鲲鹏平台上编译生成鲲鹏兼容版本。
