SparkStreaming的检查点Checkpointing

Checkpointing

一个流处理应用必须能够全天候工作,因此必须能够适应与应用逻辑无关的错误(如:系统错误、JVM崩溃、etc)。为了解决这个问题,Spark Streaming需要将足够的信息检查(checkpoint)到容错存储系统,以便它可以从故障中恢复。检查点有两种类型的数据:

  • 元数据检查点(Metadata checkpointing):将流应用的信息保存到容错的存储系统HDFS中,元数据包含:
    • Configuration: 流应用的配置信息
    • DStream operations:DStream操作算子
    • Incomplete batches:未完成的批操作
  • 数据检查点(Data checkpointing):将生成的RDD保存到可靠的存储系统中并切断依赖链。
如何开启Checkpointing
  • 使用有状态的转换算子:如 updateStateByKey or reduceByKeyAndWindow ,必须得设置检查点
  • 应用的故障恢复:元数据检查点用于使用进度信息进行恢复。
如何配置Checkpointing
  • 程序第一次运行

    val ssc = new StreamingContext(...)   // new context
    val lines = ssc.socketTextStream(...) // create DStreams
    ...
    ssc.checkpoint(checkpointDirectory)   // set checkpoint directory
    
  • 失败重新启动

    // Get StreamingContext from checkpoint data or create a new one
    val context = StreamingContext.getOrCreate(checkpointDirectory, functionToCreateContext _)
    
Accumulators, Broadcast Variables, and Checkpoints

首先需要注意的是,累加器(Accumulators)和广播变量(Broadcast variables)是无法从Spark Streaming的检查点中恢复回来的。所以如果你开启了检查点功能,并同时在使用累加器和广播变量,那么你最好是使用懒惰实例化的单例模式,因为这样累加器和广播变量才能在驱动器(driver)故障恢复后重新实例化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值