【发布时间】:2015-12-23 03:05:39
【问题描述】:
我只有一台机器,想用 mesos 集群模式运行 spark 作业。使用节点集群运行可能更有意义,但我主要想先测试 mesos 以检查它是否能够更有效地利用资源(在没有静态分区的情况下同时运行多个 spark 作业)。我尝试了很多方法,但都没有成功。这是我所做的:
-
构建 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 -
运行 spark-mesos-dispatcher
sudo ./sbin/start-mesos-dispatcher.sh --master mesos://localhost:5050 -
以调度程序作为主 url 提交应用程序。
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]
如果我使用 spark-submit --deploy-mode 集群,则会收到另一条错误消息:
Exception in thread "main" org.apache.spark.deploy.rest.SubmitRestConnectionException: Unable to connect to server
如果我不使用调度程序而是直接使用 mesos 主 url,它会完美工作:--master mesos://localhost:5050(客户端模式)。根据documentation,Mesos 集群不支持集群模式,但他们给出了集群模式here 的另一条指令。所以有点混乱?我的问题是:
- 我怎样才能让它工作?
- 如果我直接从主节点提交应用程序/jar,是否应该使用客户端模式而不是集群模式?
- 如果我有一台计算机,我应该生成 1 个或多个 mesos 从属进程吗?基本上,我有一些火花工作,不想做资源的静态分区。但是在没有静态分区的情况下使用 mesos 时,似乎会慢很多?
谢谢。
【问题讨论】:
标签: apache-spark mesos