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

Running a distributed Spark Job Server with multiple workers in a Spark standalone cluster

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

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

有什么方法可以 运行 driver 拆分多个 worker 吗?或者我可以 运行 作业服务器作为应用程序而不是 driver?

问题已在聊天中解决

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

master = "spark://ip:7077"

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

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

./server_start.sh

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

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

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