我在几台机器上运行了一个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作为应用程序而不是驱动程序启动。
有没有办法在多个工作人员之间运行驱动程序?或者我可以将作业服务器作为应用程序而不是驱动程序运行吗?
答案 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的每个作业都可以使用分配给上下文的执行程序,并且能够以分布式方式运行。