2015-09-25 37 views
5

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

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

    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 
    
  2. 运行火花mesos-调度

    sudo ./sbin/start-mesos-dispatcher.sh --master mesos://localhost:5050 
    
  3. 与调度员作为主站网址提交的应用程序。

    spark-submit --master mesos://localhost:7077 <other-config> <jar file> 
    

但它不工作:

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] 

如果我用火花提交--deploy模式的集群,然后我得到了另一条错误消息:

Exception in thread "main" org.apache.spark.deploy.rest.SubmitRestConnectionException: Unable to connect to server 

它如果我不使用调度程序,但直接使用mesos master url:--master mesos:// localhost:5050(client mode)。根据documentation,Mesos群集不支持群集模式,但它们为群集模式here提供了另一条指令。所以这有点令人困惑?我的问题是:

  1. 我该如何得到它的作品?
  2. 如果我直接从主节点提交应用程序/ jar,我应该使用客户端模式而不是集群模式吗?
  3. 如果我有一台计算机,我应该产生一个或多个mesos slave进程。基本上,我有一些spark工作,并不想做静态资源分区。但是如果在没有静态分区的情况下使用mesos,它似乎要慢得多?

谢谢。

回答

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 

如果成功,你可以看到如下

{ 
    "action" : "CreateSubmissionResponse", 
    "serverSparkVersion" : "1.5.0", 
    "submissionId" : "driver-20151006164749-0001", 
    "success" : true 
} 

我收到了你的错误日志是你的,我重新启动机器,然后重试步。它也工作。

1

似乎有两件事让你感到困惑:在群集中启动Spark应用程序(与本地相反)并将驱动程序启动到群集中。

Submitting Applications顶部:

Spark中的bin目录中的火花提交脚本用于在群集上启动应用程序。它可以通过统一的界面使用Spark支持的所有集群管理器,因此您不必为每个应用程序专门配置应用程序。

因此,Mesos是受支持的群集管理器之一,因此您可以run Spark apps on a Mesos cluster

作为写入时间不支持的Mesos是将驱动程序启动到集群中,这是./bin/spark-submit的命令行参数--deploy-mode指定的内容。由于--deploy-mode默认值是client你可以忽略它,或者如果你要明确指定,然后使用:

./bin/spark-submit --deploy-mode client ... 
相关问题