在Spark独立群集中运行具有多个工作线程的分布式Spark作业服务器

时间:2016-05-16 20:10:03

标签: apache-spark spark-jobserver

我在几台机器上运行了一个Spark独立集群。所有工作人员都使用2核和4GB内存。我可以使用./spark-shell --master spark://ip:7077 --conf spark.driver.cores=4 --conf spark.driver.memory=4g启动作业服务器,但每当我尝试启动一个具有2个以上内核的服务器时,驱动程序的状态就会陷入“提交”并且没有工作人员接受这项工作。

我尝试使用{{1}}在4个内核上启动spark-shell,并在2个worker(每个2个内核)之间共享作业。 spark-shell作为应用程序而不是驱动程序启动。

有没有办法在多个工作人员之间运行驱动程序?或者我可以将作业服务器作为应用程序而不是驱动程序运行吗?

1 个答案:

答案 0 :(得分:2)

问题已在聊天中解决

您必须更改JobServer .conf文件以将master参数设置为指向您的群集:

master = "spark://ip:7077"

此外,JobServer程序使用的内存可以在settings.sh文件中设置。

设置完这些参数后,您可以通过简单的调用启动JobServer:

./server_start.sh

然后,一旦服务运行,您就可以通过REST创建上下文,这将向集群请求资源,并将收到适当数量的excecuter / cores:

curl -d "" '[hostname]:8090/contexts/cassandra-context?context-factory=spark.jobserver.context.CassandraContextFactory&num-cpu-cores=8&memory-per-node=2g'

最后,在此创建的上下文中通过POST发送到JobServer的每个作业都可以使用分配给上下文的执行程序,并且能够以分布式方式运行。