何时启用CheckPoint操作

1. 使用了有状态的transformation操作--比如updateStateByKey,或者reduceBykeyAndWindow操作,被使用了,那么checkpoint目录要求是必须提供的,也就是必须开启checkpoint机制,从而进行周期性的RDD checkpoint


2. 要保证可以从Driver失败中进行恢复--元数据checkpoint需要启用,来进行这种情况的恢复


要注意,并不是,所有的Spark Streaming应用程序,都要启动checkpoint机制,如果即不强制要求从Driver失败中自动进行恢复,又没有使用有状态的transformation操作,那么就不需要启用checkpoint。事实上,这么做反而是有助于提高性能的


将RDD checkpoint到可靠的存储系统上,会耗费很多性能,当rdd被checkpoint时,会导致这些batch的处理时间增加,因此,checkpoint的间隔,需要很好的设置,对于那些间隔很多的batch,比如1秒,如果还要执行checkpoint操作,则会大幅度削减吞吐量,而另外一个方面,如果checkpoint操作执行的太不频繁,那就会导致rdd的lineage变长,又会有失败恢复时间过长的风险。


对于那些哟啊球checkp的有状态的transformation操作,默认的checkpoint间隔通常是batch间隔的数倍,至少是10秒,使用DStream的checkpoint()方法,可以设置这个DStream的checkpoint的间隔时长,通常来说,将checkpoint间隔设置为窗口操作的滑动间隔的5-10倍是个不错的选择

你可能感兴趣的:(spark)