2017-06-13 69 views
0

我们有8个节点的火花集群。每个小时将一个点火作业提交给群集。如何配置群集或写入一些代码,如果其中一个已经在群集上运行,则不会在群集上提交spark任务?只允许一个驱动程序在火花集群上执行

+0

您可以使用Spark JobServer(https://github.com/spark-jobserver/spark-jobserver)来检查作业是否正在运行,并且只有在满足所有触发条件时才会触发。 –

+0

您正在使用哪种调度程序? YARN,Mesos还是独立的? – stefanobaghino

回答

0

工作不应该提交吗?

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

您也可以将您的调度机制从公平调度改为其他。

这样做的实质是,如果一个作业已经在运行,你的集群将没有任何资源分配给另一个作业,如果执行并且新作业将进入等待状态,直到资源空闲。

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

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

+0

我不希望提交的作业处于“等待”状态。因为只要正在运行的作业完成,“等待”作业就会开始执行。 – kushagra

0

我们可以先检查集群状态。

如果没有作业正在运行,那么您可以提交新的作业。

如:修改脚本斌/火花提交,并呼吁sparkSubmit

0

一种可能的方式来处理,这是始终分配所有群集资源的工作,当你提交,这是之前添加一个检查可能是你想通过在任何一次运行一个作业来实现。

this question的答案可以为您提供一些关于在命令行上设置的标志和选项的指导,以实现此目的(但要确保根据特定调度程序的需要调整这些标志,无论是YARN,Mesos或独立的)。

相关问题