Spark with Mesos : java.lang.UnsatisfiedLinkError: libsvn_delta-1.so.0: cannot open shared object file: No such file or directory

Spark with Mesos : java.lang.UnsatisfiedLinkError: libsvn_delta-1.so.0: cannot open shared object file: No such file or directory

我用 1 个主节点 (192.168.2.1) 和 2 个从节点 (192.168.2.2, 192.168.2.3) 设置了一个 mesos 集群。

并且我能够使用 http://192.168.2.1:5050 成功访问 mesos,并且我能够看到两个从服务器都注册为代理。然后我在这 3 个节点上设置 spark。

然后我从 /usr/local/lib 下载了 libmesos.so (libmesos-1.8.1.so) 并将我的本地开发机器设置为

export MESOS_NATIVE_JAVA_LIBRARY=/mylocallibs/libmesos.so

当我尝试使用这个 SparkConfig 连接到 master 时

SparkConf sparkConf = new SparkConf()
      .setMaster("mesos://192.168.2.1:5050")
      .setAppName("My app")
      .set("spark.executor.uri", <http url to spark tgz>)
      .set("spark.submit.deployMode", "cluster");

我收到以下错误

java.lang.UnsatisfiedLinkError: libsvn_delta-1.so.0: cannot open shared object file: No such file or directory

我在这3个节点上设置spark的方式如下:

# Download spark executable
wget http://www-us.apache.org/dist/spark/spark-2.4.3/spark-2.4.3-bin-hadoop2.7.tgz -O /opt/spark-2.4.3-bin-hadoop2.7.tgz

# Extract
cd /opt; tar xzf /opt/spark-2.4.3-bin-hadoop2.7.tgz

# Setup link for upgrades
ln -s /opt/spark-2.4.3-bin-hadoop2.7 /opt/spark

# Set spark_home
export SPARK_HOME=/opt/spark

cp $SPARK_HOME/conf/spark-env.sh.template $SPARK_HOME/conf/spark.env.sh

# Edit spark-env.sh and set variables
vi $SPARK_HOME/conf/spark-env.sh

export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so

export SPARK_EXECUTOR_URI=<http url to spark tgz>

cp $SPARK_HOME/conf/spark-defaults.conf.template $SPARK_HOME/conf/spark-defaults.conf

# Edit spark defaults and set variables
vi $SPARK_HOME/conf/spark-defaults.conf

export MESOS_NATIVE_JAVA_LIBRARY=/usr/local/lib/libmesos.so

export SPARK_EXECUTOR_URI=<http url to spark tgz>

我尝试在我的本地开发机器上设置 LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/mylocallibs/

我下载了更高版本的libsvn_delta-1.so.0 -> libsvn_delta-1.so.1 并重命名为libsvn_delta-[=38= .0 in /mylocallibs 只是为了开始,因为我被困了很长时间。

这只是开始了一系列其他库文件未得到满足。

我在这里漏掉了什么明显的东西吗?

库已经被您的应用程序加载,应用程序试图再次加载它,UnsatisfiedLinkError 将被 JVM 抛出

since you are using cluster mode you may need to send the library files through --files option before access it.. or copy lib folder to hdfs and try to access from hdfs in cluster mode it can read from hdfs. see this

在集群模式下,驱动程序在其中一个执行程序节点中运行,它无法识别您的本地路径。

为确保其正常工作,将部署模式更改为客户端以查看其是否正常工作。

或者看这个,类似的问题已在此处修复。看看那个。

Installing libcurl4-nss-dev fix the problem.