本文主要是介绍理解SparkStreaming的Checkpointing,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
streaming 应用程序必须 24 * 7 运行, 因此必须对应用逻辑无关的故障(例如, 系统故障, JVM 崩溃等)具有弹性. 为了可以这样做, Spark Streaming 需要 checkpoint 足够的信息到容错存储系统, 以便可以从故障中恢复.checkpoint 有两种类型的数据.
Metadata checkpointing - 将定义 streaming 计算的信息保存到容错存储(如 HDFS)中.这用于从运行 streaming 应用程序的 driver 的节点的故障中恢复(稍后详细讨论). 元数据包括:
Configuration - 用于创建流应用程序的配置.
DStream operations - 定义 streaming 应用程序的 DStream 操作集.
Incomplete batches - 批量的job 排队但尚未完成.
Data checkpointing - 将生成的 RDD 保存到可靠的存储.这在一些将多个批次之间的数据进行组合的 状态 变换中是必需的.在这种转换中, 生成的 RDD 依赖于先前批次的 RDD, 这导致依赖链的长度随时间而增加.为了避免恢复时间的这种无限增加(与依赖关系链成比例), 有状态转换的中间 RDD 会定期 checkpoint 到可靠的存储(例如 HDFS)以切断依赖关系链.
总而言之, 元数据 checkpoint 主要用于从 driver 故障中恢复, 而数据或 RDD checkpoint 对于基本功能(如果使用有状态转换)则是必需的.
何时启用 checkpoint
对于具有以下任一要求的应用程序, 必须启用 checkpoint:
使用状态转换 - 如果在应用程序中使用 updateStateByKey或 reduceByKeyAndWindow(具有反向功能)
这篇关于理解SparkStreaming的Checkpointing的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!