首页 / 浏览问题 / 云GIS / 问题详情
搭建spark集群,在iserve上执行拷贝作业出错
hqd
13EXP 2022年07月06日
iserver9.1.2  iobject for spark 9.1.2

centos7.8

具体报错原因:

2022-7-6 22:00:45 - WARN - 分布式分析作业a0b1e73b_9e7e_4174_8b0f_d68826394571分析失败,原因是:Job aborted due to stage failure: Task 2 in stage 1.0 failed 4 times, most recent failure: Lost task 2.3 in stage 1.0 (TID 13, 172.18.196.165, executor 2): java.lang.UnsatisfiedLinkError: com.supermap.data.DatasourceConnectionInfoNative.jni_New()J

at com.supermap.data.DatasourceConnectionInfoNative.jni_New(Native Method)

at com.supermap.data.DatasourceConnectionInfo.<init>(Unknown Source)

at com.supermap.bdt.io.sdx.DSConnectionInfo.toDsInfo(DSConnectionInfo.scala:23)

at com.supermap.bdt.io.sdx.SDXReader$.getDatasource(SDXReader.scala:435)

at com.supermap.bdt.io.sdx.SDXFeatureRDD.compute(SDXFeatureRDD.scala:563)

at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)

at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)

at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)

at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)

at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)

at org.apache.spark.rdd.MapPartitionsRDD.compute(MapPartitionsRDD.scala:38)

at org.apache.spark.rdd.RDD.computeOrReadCheckpoint(RDD.scala:323)

at org.apache.spark.rdd.RDD.iterator(RDD.scala:287)

at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87)

at org.apache.spark.scheduler.Task.run(Task.scala:99)

at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)

at java.lang.Thread.run(Thread.java:750)

2 个回答

你好,请问是自行大家的spark外部集群吗?在集群节点机器上有配置iobjects java组件bin包吗,以及是否将java组件bin路径配置到系统环境变量中啊?

从报错提示分析原因:是因为172.18.196.165节点机器在计算时没找到iobject java组件依赖库,导致链接so失败抛出异常。

解决方案:

1、在spark集群各worker几点机器配置iobject java组件包。(iobjects java组件版本与iobjects spark bdt jar版本保持一致)

2、将iobject java组件的bin全路径配置到系统环境变量 LD_LIBRARY_PATH环境变量里。

3、确保spark执行用户有权限访问到bin包文件和系统环境变量。
1,520EXP 2022年07月07日
我是自己搭建的spark集群,节点都配有iobject Java 9.1.2,和iobject spark 9.1.2的组件包

各个节点环境变量配置如下:

#JAVA
export JAVA_HOME=/opt/module/jdk1.8.0_321
export JRE_HOME=/opt/module/jdk1.8.0_321/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib
#SPARK
export SPARK_HOME=/opt/module/spark-2.1.0-bin-hadoop2.7
export PATH=$JAVA_HOME/bin:$SPARK_HOME/bin:$PATH
#OBJECTS
export SUPERMAP_OBJ=/opt/module/iobjects_new
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$SUPERMAP_OBJ
export SPARK_CLASSPATH=$SPARK_CLASSPATH:/opt/module/iobjects_spark
环境变量看起来配置了,需要检查下权限:

1、iobjects_new目录下的文件所属用户和权限,确保spark执行用户能访问到目录下的依赖库。

2、检查 iobjects_new 目录下的是否缺少系统依赖库,可以使用 ldd libWrapjCore.so |grep not 命令检查,如果缺少可以在iserver_support目录下离线脚本安装,可以网上查询在线安装系统缺失库。

具体细节和常见问题,可以参考附件文档来解决。
这是 iobject_new 目录中文件的执行权限

-rw-r--r-- 1 root root
还是解决不了这个问题
麻烦把ldd libWrapjCore.so |grep not命令执行结果截图看看。

以及spark集群任务environment界面里看看是否有加载到objects new目录下的文件。截图看看。
没有找到依赖库怎么办

spark ui

麻烦提供一个联系电话和向日葵远程ID,远程看看。
19189188854

微信:h7777777qd

加我微信 ,你可以直接使用我的集群,操作看看
向日葵id:116776971
号码是空号,无法拨通
电话:19181988854
按照你之前的方法都试过了,还是不行,报同样的错
还是报相同的错
再远程看看部署的包对不对。
通过远程已解决,解决方案:

1、将iobjects java组件版本更新为与bdt jar版本一致,均为10.2.1。

2、iobjects java组件bin配置到固定目录,/opt/SuperMap/iobjects/1021/Bin 目录下,用户权限保持与spark集群一致。

3、各集群节点机器的依赖库的缺失,通过iserver的sh dependencies_check_and_install.sh install -y脚本安装,检查依赖缺失命令 ldd libWrapjCore.so |grep not
问题已解决,集群每个节点检查环境变量配置,避免包冲突。

使用命令:ldd /opt/SuperMap/iobjects/1021/Bin/libWrapjCore.so |grep not 检查每个节点的依赖,若缺少记得配置
hqd
13EXP 2022年07月08日
...