如何在独立OS / X上设置运行spark的mesos

时间:2014-01-06 00:45:29

标签: macos scala apache-spark mesos

我想在Mac上测试Spark程序。 Spark正在运行,我的spark scala程序编译:但是在运行时有一个库( mesos .so?)错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no mesos in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758)
    at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    at java.lang.System.loadLibrary(System.java:1045)
    at org.apache.mesos.MesosNativeLibrary.load(MesosNativeLibrary.java:46)
    at spark.SparkContext.<init>(SparkContext.scala:170)
    at com.blazedb.scala.ccp.spark.LoadRDD$.main(LoadRDD.scala:14)

为了运行spark客户端程序,os / x需要在mesos的spark服务器本身之外进行哪些设置?

3 个答案:

答案 0 :(得分:9)

您需要设置'MESOS_NATIVE_LIBRARY'环境变量,这是libmesos.so的位置。它通常是/usr/local/lib/libmesos.so。

# For Linux
$ export MESOS_NATIVE_LIBRARY='/usr/local/lib/libmesos.so'

# For OSX
$ export MESOS_NATIVE_LIBRARY='/usr/local/lib/libmesos.dylib'

我建议将该行添加到.bashrc中,以避免每次都这样做。

答案 1 :(得分:5)

如果你想使用带有Mesos的Spark,有instructions on the project website,包括如何在OS X上找到Mesos库路径的注释。

正如您所注意到的那样,other deployment modes包括local模式,不需要安装Mesos。

根据您的堆栈跟踪,您可能会使用旧版本的Spark。从Spark 0.8.0+开始,这些包已经移入org.apache.spark命名空间,因此如果您不想升级,可能需要使用earlier versions of the docs

答案 2 :(得分:1)

如果您从源代码构建mesos,那么所有生成的库将在[MESOS_HOME] /src/.libs文件夹中生成。您必须删除空的[MESOS_HOME] / .libs文件夹并创建指向[MESOS_HOME] /src/.libs的符号链接

使用的命令是:

  • rm -r [MESOS_HOME] /src/.libs
  • ln -s [MESOS_HOME] /src/.libs [MESOS_HOME] /.libs

丢失了我的问题“g ++:错误:./。libs / libmesos.so:没有这样的文件或目录”