我设置了一个具有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)并将我的本地dev机器设置为
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_LIBRARY_PATH
export LD_LIBRARY_PATH=/mylocallibs/
我下载了更高版本的libsvn_delta-1.so.0-> libsvn_delta-1.so.1并将其重命名为/ mylocallibs中的libsvn_delta-1.so.0,因为我被困了很长时间。
那只是开始了一系列其他未饱和的库文件。
我有没有在这里错过任何明显的东西?
库已由您的应用程序加载,并且应用程序尝试再次加载它,UnsatisfiedLinkError
JVM将抛出该库
由于您使用的是群集模式,因此您可能需要先通过
--files
选项发送库文件,然后再访问它..或将lib文件夹复制到hdfs,并尝试以可从hdfs读取的群集模式从hdfs进行访问。看到这个
在群集模式下,驱动程序在执行程序节点之一中运行,它无法识别您的本地路径。
以确保它正在工作,将部署模式更改为客户端以查看其是否工作。
或看到此问题,此处已解决类似问题。看一看。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句