Java 编写sparkstreaming检查点机制(checkpoint)
因为sparkStreaming流程序是24小时不间断的运行,所以为了防止出现故障导致程序停止,sparkStreaming需要将足够的信息保存到容错存储系统中,以便于可以从故障中恢复。
一、检查点有两种:
1、元数据检查点
将定义流失计算的信息保存到容错存储系统中,如HDFS等。这可用于从运行流应用程序的节点的故障中恢复。
元数据包括:用于创建流应用程序的配置,定义流应用程序的Dstream操作集(就是一些运算,算子等),不完整的批次(在队列中而尚未完成的批次)
2、数据检查点
将生成的RDD保存到可靠的存储系统中。特别是对于一些跨批次组合数据,且有状态转换时。
注:在这种转换中,生成的RDD依赖于先前批次的RDD,这导致依赖关系链的长度随着时间而增加。为了避免恢复时间的这种无限增加【与依赖链成正比】,有状态变换的中间RDD周期性地检查以存储到可靠的存储系统中,以切断依赖链。
所以一般需要设置检查点的情况:
1、有状态转换的使用,比如使用了updateStateByKey或reduceByKeyAndWindow,那么就必须提供一个检查点来缓存之前批次的中间结果,状态结果。
二、配置检查点
可以通过在容错,可靠的文件系统【例如:HDFS、S3或Windows文件系统】中设置目录来启用检查点,检查点信息将保存到该文件系统中。使用:streamingContext.checkpoint(checkpointDirectory)来设置的。这将允许使用上述状态转换。

浙公网安备 33010602011771号