我只有一台机器,并且想要使用mesos集群模式运行spark任务。运行一组节点可能更有意义,但我主要想先测试一下mesos以检查它是否能够更有效地利用资源(同时运行多个spark作业而没有静态分区)。我尝试了很多方法,但没有成功。这是我做的:使用分派器的Spark Mesos集群模式
构建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
运行火花mesos-调度
sudo ./sbin/start-mesos-dispatcher.sh --master mesos://localhost:5050
与调度员作为主站网址提交的应用程序。
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提供了另一条指令。所以这有点令人困惑?我的问题是:
- 我该如何得到它的作品?
- 如果我直接从主节点提交应用程序/ jar,我应该使用客户端模式而不是集群模式吗?
- 如果我有一台计算机,我应该产生一个或多个mesos slave进程。基本上,我有一些spark工作,并不想做静态资源分区。但是如果在没有静态分区的情况下使用mesos,它似乎要慢得多?
谢谢。