我在理解Spark如何调度作业时遇到了一些麻烦。我有一系列的作业想按顺序运行。据我所知,我可以向spark-submit
提交任意数量的作业,它会根据可用资源自动管理调度,但我想保证这些作业将按顺序运行。我知道我可以编写一个脚本,一个接一个地提交作业,但我想知道Spark是否有一个内置的机制来处理这类提交。
更重要的是,我有几个这样的作业系列,假设我有一系列作业A -> B -> C
和另一个D -> E -> F
,我可以让A
、B
或C
中的任何一个与D
、E
或F
中的任何一个并发运行,但不能与A
、B
中的任何一个并发运行。或C
与A
、B
或C
中的任何一个并发运行。Spark是否有内置机制来处理这种用例?
我读过一些关于yarn允许多个队列的排队机制的文章,但我不确定这是否是我正在寻找的解决方案。
谢谢!
1条答案
按热度按时间wribegjk1#
Yarn的作用是在你的工作中分配资源。
如果您同时提交所有作业,它们将根据请求的资源、队列优先级、队列策略(fifo或fair)等以不同的顺序开始。
你可以做的是使3个不同的队列具有不同的优先级,并提交所有的工作在同一时间,但接缝相当危险。
基本上,您需要的是airflow或Oozie之类的调度程序