翻译自:http://spark.apache.org/docs/2.1.1/streaming-programming-guide.html#checkpointing
spark streaming流应用程序必须24/7运行,因此必须能够抵御与应用程序逻辑无关的故障(例如,系统故障、JVM崩溃等)。为了实现这一点,spark streaming需要检查足够多的信息,以便容错存储系统能够从故障中恢复。检查点有两种类型的数据。
元数据检查点-将定义流计算的信息保存到HDFS等容错存储中。这用于从运行流应用程序驱动程序的节点故障中恢复(稍后将详细讨论)。
元数据包括:
配置-用于创建流应用程序的配置。
数据流操作-定义流应用程序的一组数据流操作。
未完成批处理-其作业已排队但尚未完成的批处理。
数据检查点-将生成的RDD保存到可靠的存储中。在一些跨多个批处理组合数据的有状态转换中,这是必需的。在这种转换中,生成的RDD依赖于前一批的RDD,这导致依赖链的长度随时间而增加。为了避免恢复时间的无限增长(与依赖链成比例),有状态转换的中间rdd被定期检查到可靠存储(例如HDFS)以切断依赖链。
总而言之,元数据检查点主要用于从驱动程序故障中恢复,而数据或RDD检查点则是必要的,即使是在使用有状态转换的情况下,基本功能也是如此。
什么时候开启checkpoint
必须为具有以下任何要求的应用程序启用检查点:
有状态转换的使用-如果应用程序中使用了updateStateByKey或reducebykeyandwindown(带反函数),则必须提供检查点目录以允许定期进行RDD检查点。<