使用Dispatcher的Spark Mesos集群模式

aux*_*xdx 6 mesos apache-spark

我只有一台机器,并希望使用mesos集群模式运行spark作业.使用节点集群运行可能更有意义,但我主要想首先测试mesos以检查它是否能够更有效地利用资源(同时运行多个spark作业而不进行静态分区).我尝试了很多方法但没有成功.这是我做的:

  1. 构建mesos并运行mesos主站和从站(同一台机器中的2个从站).

    sudo ./bin/mesos-master.sh --ip=127.0.0.1 --work_dir=/var/lib/mesos
    sudo ./bin/mesos-slave.sh --master=127.0.0.1:5050 --port=5051 --work_dir=/tmp/mesos1
    sudo ./bin/mesos-slave.sh --master=127.0.0.1:5050 --port=5052 --work_dir=/tmp/mesos2
    
    Run Code Online (Sandbox Code Playgroud)
  2. 运行spark-mesos-dispatcher

    sudo ./sbin/start-mesos-dispatcher.sh --master mesos://localhost:5050
    
    Run Code Online (Sandbox Code Playgroud)
  3. 使用调度程序作为主URL提交应用程序.

    spark-submit  --master mesos://localhost:7077 <other-config> <jar file>
    
    Run Code Online (Sandbox Code Playgroud)

但它不起作用:

    E0925 17:30:30.158846 807608320 socket.hpp:174] Shutdown failed on fd=61: Socket is not connected [57]
    E0925 17:30:30.159545 807608320 socket.hpp:174] Shutdown failed on fd=62: Socket is not connected [57]
Run Code Online (Sandbox Code Playgroud)

如果我使用spark-submit --deploy-mode集群,那么我收到另一条错误消息:

    Exception in thread "main" org.apache.spark.deploy.rest.SubmitRestConnectionException: Unable to connect to server
Run Code Online (Sandbox Code Playgroud)

如果我不使用调度程序但直接使用mesos master url,它可以正常工作: - master mesos:// localhost:5050(客户端模式).根据文档,Mesos集群不支持集群模式,但它们在此处为集群模式提供了另一条指令.这有点令人困惑?我的问题是:

  1. 我怎么能搞定它?
  2. 如果我直接从主节点提交app/jar,我应该使用客户端模式而不是群集模式吗?
  3. 如果我有一台计算机,我应该生成一个或多个mesos slave进程.基本上,我有一些火花工作,不想做资源的静态分区.但是当使用没有静态分区的mesos时,它似乎要慢得多?

谢谢.

Pet*_*Chu 1

我用你的场景来尝试,它可能有效。有一点不同,我使用 ip 地址而不是“localhost”和“127.0.0.1”,所以只需再试一次并检查http://your_dispatcher:8081(在浏览器上)是否存在。

这是我的火花提交命令:

$spark-submit --deploy-mode cluster --master mesos://192.168.11.79:7077 --class "SimpleApp"  SimpleAppV2.jar
Run Code Online (Sandbox Code Playgroud)

如果成功可以看到如下

{
  "action" : "CreateSubmissionResponse",
  "serverSparkVersion" : "1.5.0",
  "submissionId" : "driver-20151006164749-0001",
  "success" : true
}
Run Code Online (Sandbox Code Playgroud)

当我收到您的错误日志时,我重新启动计算机并重试您的步骤。它也有效。