我只有一台机器,并希望使用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
但它不起作用:
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 master url,它可以正常工作: - master mesos:// localhost:5050(客户端模式) . 根据documentation,Mesos群集不支持群集模式,但它们为群集模式here提供了另一条指令 . 这有点令人困惑?我的问题是:
我怎么能搞定它?
如果我直接从主节点提交app / jar,我应该使用客户端模式而不是集群模式吗?
如果我有一台计算机,我应该生成一个或多个mesos slave进程 . 基本上,我有一些火花工作,不想做资源的静态分区 . 但是当使用没有静态分区的mesos时,它似乎要慢得多?
谢谢 .