5

我想在 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 客户端程序,除了 spark 服务器本身之外,os/x 上还需要什么设置才能运行 spark 客户端程序?

4

3 回答 3

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 中,以避免每次都这样做。

于 2014-01-30T06:45:27.687 回答
5

如果您想将 Spark 与 Mesos 一起使用,项目网站上有说明,包括有关如何在 OS X 上查找 Mesos 库路径的说明。

正如您所注意到的,还有其他部署模式,包括local不需要安装 Mesos 的模式。

根据您的堆栈跟踪,您可能正在使用旧版本的 Spark。从 Spark 0.8.0+ 开始,软件包已被移至命名空间,因此如果您不想升级org.apache.spark,可能需要使用早期版本的文档。

于 2014-01-06T21:04:04.473 回答
2

如果您从源代码构建 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:没有这样的文件或目录”

于 2017-06-22T08:17:10.420 回答