Spark从检查点重新启动流时发生的事情

时间:2016-09-19 17:12:46

标签: apache-spark out-of-memory spark-streaming

长时间不活动后重启火花(3day)。

val ssc = StreamingContext.getOrCreate(checkpointDir, newStreamingContext _, createOnError = createOnError)

我看到重启是痛苦的。

选项卡流式传输需要45分钟才能显示,这意味着"spark has finish the loading of checkpoint"。 (从检查点文件加载最后一批时间很长)

之后显示1000个批次,0个事件。当我几分钟后重新启动时,它只显示错过的批次(当停机时间约为5分钟时,10批30秒)并且“快速”加载。

所以这让我觉得加载我的检查点需要时间,因为它加载了这1000个批次。

因为1000个30s的30s不匹配3天,我想知道当这1000个批次完成时会发生什么,它会在当前时间重新启动还是加载其他错过的批次?此1000限制是否可配置?

编辑:在这1000个批次之后没有任何反应,直接kafka没有创建新的批次。我认为这不是预期的功能,我不愿意为此制作火花jira票。

因为问题没有出现,我认为这1000个批次都装在驱动程序内存中。

某些批次之后有时会出现OOM。当它没有时,我看到我的总延迟提高,而平均处理时间低于批处理时间。 这让我觉得我的驱动程序几乎是OOM,并且难以向执行程序发送批处理。

当然,当我的流不是从检查点创建的时候,每件事都运行良好。那么?当流从检查点开始时会发生什么?

ps:0个事件批处理包含事件,因为它们花费的时间与我通常的完整批次一样多,而且我看到kafka偏移量增加了,所以我认为是火花UI的显示错误。

0 个答案:

没有答案