Apache spark spark动态分配如何清除排队的任务

Apache spark spark动态分配如何清除排队的任务,apache-spark,spark-streaming,Apache Spark,Spark Streaming,我可以打开新的虚拟机在飞行的基础上,我问这个问题 我使用spark动态分配时 spark.dynamicalocation.minExecutors=10在突然爆发数据时,spark打开新执行器的速度非常慢,导致长时间排队 当我将spark.dynamicAllocation.minExecutors=200更改为更大的突然突发数时,它会非常快地打开新的执行器,并且队列可以清空 我的问题是,在这种情况下,我们是否必须将其设置为高值。Vipin 当您在spark中设置动态分配时,我可以看到您启用了

我可以打开新的虚拟机在飞行的基础上,我问这个问题

我使用spark动态分配时 spark.dynamicalocation.minExecutors=10在突然爆发数据时,spark打开新执行器的速度非常慢,导致长时间排队

当我将spark.dynamicAllocation.minExecutors=200更改为更大的突然突发数时,它会非常快地打开新的执行器,并且队列可以清空

我的问题是,在这种情况下,我们是否必须将其设置为高值。

Vipin

当您在spark中设置动态分配时,我可以看到您启用了它并设置了执行器的最小值。但是,当您需要200个executor更快时,分配有一个名为
spark.DynamicLocation.schedulerBacklogTimeout的配置,默认情况下,该配置有1s的超时

这意味着在1s后,如果您的任务没有完成任务,它将分配更多的执行者

根据《星火》杂志的报道,上面说:

Spark要求执行者轮换执行。当spark.dynamicAllocation.schedulerBacklogTimeout秒数存在挂起的任务时,会触发实际请求,然后如果挂起的任务队列持续存在,则会在此后每隔spark.dynamicAllocation.SustainatedSchedulerBacklogTimeout秒再次触发。此外,每轮请求的执行者数量比前一轮成倍增加。例如,一个应用程序将在第一轮中添加1个执行者,然后在随后的轮中添加2、4、8等执行者

因此,对于每一秒的火花,为n秒的延迟分配2^n。要到达200执行器,您需要等待至少8秒,以请求执行器停止。再过几秒钟就可以解决这个问题了


也许如果你提高内核的数量,它会对你有所帮助。但是如果您使用每个节点的完整内核。。。没有解决办法。

像1、2、4、8这样的开放执行者的实施是私有的吗?当我的系统像那样打开新的虚拟机时,如果我能让它变成10 20 30,我的问题就可以解决了。我正在检查代码。好像是女贞。请参阅链接: