Checkpoint 是为了最大程度保证绝对可靠的复用 RDD 计算数据的 Spark 的高级功能,是针对整个RDD 计算链条中特别需要数据持久化的环节(后面会反覆使用当前环节的RDD) 开始基于HDFS 等的数据持久化复用策略。
通过 Checkpoint 我们通过把数据持久化到 HDFS 上来保证数据的最大程度的安全性,从而实现容错与高可用。
CheckPoint 会涉及到一些类,以及他们之间的关系:DStreamGraph 类负责生成任务执行图,而 JobGenerator 则是任务真实的提交者。任务的数据源则来源于 DirectKafkaInputDStream,checkPoint 一些相关信息则是由类 DirectKafkaInputDStreamCheckpointData 负责。
好像涉及的类有点多,其实没关系,我们完全可以不用关心他们。先看看 checkpoint 都干了些啥,checkpoint 其实就序列化了一个类而已:
以下是其中的类成员:
其他的都比较容易理解,最重要的是 graph ( DStreamGraph ),该类里面有两个核心的数据结构是: