Apache spark 仅允许在spark cluster上执行一个驱动程序

Apache spark 仅允许在spark cluster上执行一个驱动程序,apache-spark,cluster-computing,Apache Spark,Cluster Computing,我们有一个由8个节点组成的spark群集。每小时向集群提交一个spark作业。如果集群上已经有spark作业在运行,我如何配置集群或编写一些不允许在集群上提交spark作业的代码?作业不提交是否相关 在我看来,更好的方法是将集群的所有资源分配给每个作业,同时使用executorMemory、executorCores和其他属性提交作业 您还可以将调度机制从公平调度更改为其他方式 这样做的实质是,如果一个作业已经在运行,那么集群在执行时将没有任何资源分配给另一个作业,新作业将处于等待状态,直到资源

我们有一个由8个节点组成的spark群集。每小时向集群提交一个spark作业。如果集群上已经有spark作业在运行,我如何配置集群或编写一些不允许在集群上提交spark作业的代码?

作业不提交是否相关

在我看来,更好的方法是将集群的所有资源分配给每个作业,同时使用executorMemory、executorCores和其他属性提交作业

您还可以将调度机制从公平调度更改为其他方式

这样做的实质是,如果一个作业已经在运行,那么集群在执行时将没有任何资源分配给另一个作业,新作业将处于等待状态,直到资源可用为止

PS:搜索工作流管理器。OOzie,azkaban等可能对你有帮助

让我知道这是否有帮助。
干杯。

我们可以先检查集群状态

如果没有正在运行的作业,则可以提交新作业


例如:修改脚本bin/spark submit,并在调用sparkSubmit之前添加一个检查。处理此问题的一种可能方法是在提交作业时始终将所有集群资源分配给该作业,这可能是通过在任何时间运行一个作业来实现的


的答案可以为您提供一些关于要在命令行上设置的标志和选项的指导,以实现这一点,但请确保根据特定计划程序的需要调整这些标志,Mesos或单机版。

您可以使用Spark JobServer检查作业是否正在运行,并仅在满足触发器的所有条件时触发。您使用的是什么计划程序?纱线,Mesos还是单机版?我不希望提交的作业处于“等待”状态。因为只要正在运行的作业完成,“等待”作业就会开始执行。