我设置了一个mesos集群,其中有1个主集群(192.168.2.1)和2个从集群(192.168.2.2、192.168.2.3)。
我可以用http://192.168.2.1:5050我可以看到两个奴隶都注册为特工。然后在这3个节点上设置spark。
然后我从/usr/local/lib下载了libmesos.so(libmesos-1.8.1.so),并将我的本地开发机器设置为
export MESOS_NATIVE_JAVA_LIBRARY=/mylocallibs/libmesos.so
当我尝试使用这个sparkconfig连接到主服务器时
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\u library\u路径
export LD_LIBRARY_PATH=/mylocallibs/
我下载了libsvn_delta-1.so.0->libsvn_delta-1.so.1的更新版本,并将其重命名为libsvn_delta-1.so.0 in/mylocallibs,只是为了继续,因为我被困了很长时间。
这只会导致一系列其他库文件未被保存。
我有没有漏掉什么明显的东西?
1条答案
按热度按时间mctunoxg1#
库已由应用程序加载,并且应用程序尝试再次加载,则
UnsatisfiedLinkError
将由jvm抛出由于您使用的是群集模式,因此可能需要通过
--files
在访问它之前。。或者将lib文件夹复制到hdfs,并尝试以集群模式从hdfs访问它可以从hdfs读取的文件。看到这个了吗在集群模式下,驱动程序在其中一个executor节点上运行,它无法识别您的本地路径。
为了确保它正在工作,请将deploymode更改为client,以查看它是否工作。
或者看到这个,类似的问题在这里被修正了。看看那个。
安装libcurl4 nss dev可以修复此问题。