我在kubernetes中部署了apachesparkversion2.4.5的3节点集群。集群由一个主节点和两个工作节点以及默认的fifo调度程序配置组成。
我通过隐藏的restapi提交应用程序,发现了一个死锁发生的情况。如果短时间内提交的应用程序的数量足以消耗所有集群资源,那么剩余的应用程序就会排队,这是正确的,但是那些能够启动的应用程序永远不会完成,因为每个应用程序都在等待可用的执行者。由于资源不足而产生死锁情况。
例如:
如果集群中每个工作节点有3个内核和5gb,那么可用于将任务提交到工作节点的资源总量将是6个内核和10gb。
如果运行应用程序所需的资源受到以下应用程序配置的限制:
spark.app.name:TEST_STD_DISCOVERY
spark.serializer:org.apache.spark.serializer.KryoSerializer
spark.eventLog.enabled:true
spark.submit.deployMode:cluster
spark.master:spark://<MASTER>:7077
spark.driver.cores:1
spark.driver.memory:1g
spark.executor.memory:1g
spark.executor.cores:1
spark.cores.max:2
将启动六个应用程序示例,为驱动程序资源消耗6个内核,并且没有一个能够为使用执行器分配资源。
如何防止这种行为,除了增加集群上的可用资源,或者为每个应用程序分配所有集群可用资源之外,没有并行性。
谢谢你的好意。
暂无答案!
目前还没有任何答案,快来回答吧!