Spark

        流式应用程序必须 24/7 全天候运行,因此必须能够应对与应用程序逻辑无关的故障(例如,系统故障、JVM 崩溃等)。为此,Spark Streaming 需要通过Checkpoint将必要的数据或者操作进行备份,以便它可以从故障中恢复。检查点有两种类型的数据。

元数据检查点

        将定义流计算的信息保存到 HDFS 等容错存储中。这用于从运行流应用程序驱动程序的节点故障中恢复。元数据检查点主要用在Driver进程中恢复程序。

这类信息主要包括以下几方面:

SparkConf的相关信息Dream的相关操作队列中等待处理的Job

数据检查点 

        将生成的 RDD 保存到可靠的存储中。这在一些跨多个批次组合数据的有状态转换中是必要的。在有状态的转换操作中,Spark Streaming会定期自动设置检查点,以切断上游依赖。

        在这样的转换中,生成的 RDD 依赖于前一批的 RDD,这导致依赖链的长度随着时间的推移而不断增加,数据重算所耗费的时间,与依赖连的长度成正比。为了避免恢复时间的无限制增加(与依赖链成正比),有状态转换的中间 RDD 会定期检查点到可靠存储(例如 HDFS)以切断依赖链。

        总而言之,元数据检查点主要用于从驱动程序故障中恢复,而数据或 RDD 检查点对于使用状态转换的基本功能也是必需的。

Flink

        检查点是 Flink 容错机制的核心。这里所谓的“检查”,其实是针对故障恢复的结果而言的:故障恢复之后继续处理的结果,应该与发生故障前完全一致,我们需要“检查”结果的正确性。所以,有时又会把 checkpoint 叫作“一致性检查点”。

周期性的触发保存

        在 Flink 中,检 查点的保存是周期性触发的,间隔时间可以进行设置。检查点作为应用状态的一份“存档”,其实就是所有任务状态在同一时间点的一个“快照”,它的触发是周期性的。具体来说,当每隔一段时间检查点保存操作被触发时, 就把每个任务当前的状态复制一份,按照一定的逻辑结构放在一起持久化保存起来,就构成了检查点。

先睡觉~不卷了

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: