在流式运行程序运行时,必须全天24小时的运行,因此我们必须应对与应用程序逻辑无关的故障(例如系统故障,JVM崩溃等)
为此,Spark Streaming需要将足够的信息检查点指向容错存储系统,以便可以从故障中恢复。
检查点有两种类型的数据。
1、元数据检查点---将定义流计算的信息保存到HDFS等容错存储中。
这用于从运行流应用程序的驱动程序的节点的故障中恢复。
元数据包括:
配置 ---用于创建流应用程序的配置。
DStream操作 ---定义流应用程序的DStream操作集。
不完整的批次 ---作业排队但尚未完成的批次。
2、数据检查点 --- 将生成的RDD保存到可靠的存储中。
在某些状态转换中,这是必须的,这些转换将跨多个批次的数据进行合并。在此类转换中,生成的RDD依赖于先前批次的RDD,这导致依赖项链的长度随时间不断增加。为了避免恢复的时候这种无限制的增加,有状态转换的中间RDD定期落地到(通过检查点)到可靠的存储(例如HDFS),以切断依存关系链。
总而言之,从驱动程序故障中恢复时,需要元数据检查点,而如果使用有状态转换的数据或者RDD,即使是基本功能,也需要数据或RDD检查点。
何时使用检查点
必须为具有以下任何要求的应用程序启用检查点:
1、有状态转换的用法
如果在应用程序中使用updateStateByKey