第三方jar包跨平台(x86、TaiShan)支持
问题
用户自己写的jar包(例如自定义udf包)区分x86和TaiShan版本,如何让Spark2x支持其正常运行。
回答
第三方jar包(例如自定义udf)区分x86和TaiShan版本时,混合使用方案:
- 进入到服务端Spark2x SparkResource的安装目录(集群安装时,SparkResource可能会安装在多个节点上,登录任意一个SparkResource节点,进入到SparkResource的安装目录)。
cd /opt/Bigdata/FusionInsight_Spark_*/install/FusionInsight-Spark-*/spark
- 准备jar包,例如xx.jar的x86版本和TaiShan版本。将x86版本和TaiShan版本的xx.jar分别复制到当前目录的x86文件夹和arm文件夹里面。
步骤1和步骤2必须执行,否则会影响作业提交。
- 在当前目录下执行以下命令将jar包打包:
zip -qDj spark-archive-2x-x86.zip x86/*
zip -qDj spark-archive-2x-arm.zip arm/*

- 执行以下命令查看HDFS上的Spark2x依赖的jar包:
hdfs dfs -ls /user/spark2x/jars/8.1.0.1
8.1.0.1是版本号,不同集群的版本号不同,请以实际集群版本为准。
执行以下命令移动hdfs上旧的jar包文件到其他目录,例如移动到“tmp”目录。
hdfs dfs -mv /user/spark2x/jars/8.1.0.1/spark-archive-2x-arm.zip /tmp
hdfs dfs -mv /user/spark2x/jars/8.1.0.1/spark-archive-2x-x86.zip /tmp
- 上传3中打包的spark-archive-2x-arm.zip和spark-archive-2x-x86.zip到hdfs的/user/spark2x/jars/8.1.0.1目录下,上传命令如下:
hdfs dfs -put spark-archive-2x-arm.zip /user/spark2x/jars/8.1.0.1/
hdfs dfs -put spark-archive-2x-x86.zip /user/spark2x/jars/8.1.0.1/
上传完毕后删除本地的spark-archive-2x-arm.zip,spark-archive-2x-x86.zip文件。
- 对其他的SparkResource安装节点执行1~2。
- 进入WebUI重启Spark2x的JDBCServer实例。
- 重启后,需要更新客户端配置。按照客户端所在的机器类型(x86、TaiShan)复制xx.jar的相应版本到客户端的Spark2x安装目录“${install_home}/Spark2x/spark/jars”文件夹中。${install_home}是用户的客户端安装路径,用户需要填写实际的安装目录;如果本地的安装目录为“/opt/hadoopclient”,就复制相应版本xx.jar到“/opt/hadoopclient/Spark2x/spark/jars”文件夹里。