如何在spark中优先安排任务?

时间:2018-03-08 11:17:34

标签: java apache-spark

我有两种任务:A和B

(一个任务意味着一个RDD的整个过程,例如RDD.map.reduce ...是一个任务。我们定义了RDD,它是分成许多分区的数据。每个分区分别执行它的map工作,并且在减少中组合在一起。)

A是一项短期任务,只需不到5秒,而B是一项大任务,需要30多分钟才能完成。

我们需要尽快获得A的结果,而B是后台任务,即使B排队一小时或更长时间,我们也不在乎。

A和B都有许多任务分区。

案例是,如果B在A之前安排,A将等待很长时间为B. 这是不允许的。

我认为FAIR不是一个好方法,因为如果B在A执行时启动,B仍将启动其任务分区,这将影响A的执行。

有没有办法优先考虑任务? A具有比B更高的优先级。即使A在B之后被调度,在执行分区完成之后,A将立即执行,其余的B将等待。

或者有什么方法可以保留任务A某种特定的资源。每次执行A时,都可以立即安排。

我找到了一种使用调度程序池的方法,但是如何向某个池指示A?

我在独立模式下使用带有java的spark。我提交的工作就像javaRDD.map(..)。reduce ... javaRDD是一个sub-clesse扩展形式JavaRDD。任务A和B具有不同的RDD类,如ARDD和BRDD。它们在同一个火花应用程序中运行。

程序如下:应用程序启动 - >创建了spark应用程序,但没有作业运行 - >我在app ui上单击“运行A”,然后ARDD将运行。 - >我点击app ui上的“run B”,然后BRDD将在与A相同的spark应用程序中运行。

0 个答案:

没有答案