Spark-Streaming容错机制学习

2016-09-09  本文已影响0人  wpb

Driver容错


  1. 思想:
  1. 实现:
def createContext(checkpointDirectory: String): StreamingContext = {
    val ssc = ???
    ssc.checkpoint(checkpointDirectory)
    ssc
}
val ssc = StreamingContext.getOrCreate(checkpointDirectory, createContext(checkpointDirectory))

Executor通用容错


  1. 思路:
  1. 实现:

Receiver容错


  1. 思想:
  1. 实现:
ssc.setCheckpoint(checkpointDir)
  1. 对Receiver使用可靠性存储StoreageLevel.MEMORY_AND_DISK_SER or StoreageLevel.MEMORY_AND_DISK_SER2

  2. 效果:

Graceful Stop 优雅停止


  1. 思想:
  1. 实现: 有如下几种:
sys.ShutdownHookThread {
println("Gracefully stopping Spark Streaming Application at"+ new Date())
ssc.stop(true, true)
println("Application stopped at"+ new Date())
}

StreamingContext代码链接,graceful stop 逻辑见stop函数

TODO

  1. Kafka Direct如何保证 Exactly One
  2. 如何支持window容灾?(个人YY的一个场景和自我理解,不确定是否正确)

window为5分钟,slide为1分钟的任务,执行到第100分钟暂停后,checkpoint中的进度应该是[96,100], 10分钟后启动,此时需要的进度是[106,110],输出数据会出现丢失?

spark-streaming使用的是系统时间,而非数据时间。虽然数据本身是连续的,但是到达spark-streaming的时间相关较久导致无法存入同一window,无法正常计算?

参考文献

上一篇 下一篇

猜你喜欢

热点阅读