0

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

我尝试在 4 个内核上启动 spark-shell,./spark-shell --master spark://ip:7077 --conf spark.driver.cores=4 --conf spark.driver.memory=4g并且工作在 2 个工作人员(每个 2 个内核)之间共享。spark-shell 作为应用程序而不是驱动程序启动。

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

4

1 回答 1

2

问题已在聊天中解决

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

master = "spark://ip:7077"

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

设置好这些参数后,你可以通过一个简单的调用来启动 JobServer:

./server_start.sh

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

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

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

于 2016-05-16T22:06:48.273 回答