流应用程序重启后如何维护状态?

时间:2016-01-02 15:13:15

标签: scala apache-spark spark-streaming

我试图理解Spark Streaming中的状态管理是如何工作的。如果我运行这个示例程序两次,第二次运行会从第一次运行看到状态吗? https://github.com/apache/spark/blob/master/examples/src/main/scala/org/apache/spark/examples/streaming/StatefulNetworkWordCount.scala

有没有办法如何实现这一目标?我正在考虑重新部署应用程序,我不想放弃当前的状态。

1 个答案:

答案 0 :(得分:1)

tl; dr 这取决于您需要其他实例查看的内容。 Checkpointing 通常是解决方案。

ssc.checkpoint(".")the line 50 in StatefulNetworkWordCount)启用了检查点(引用official documentation):

  

Spark Streaming需要将足够的信息检查到容错存储系统,以便它可以从故障中恢复。

失败可被视为一种重新部署形式。 Upgrading Application Code下的官方文档中描述了两种情况:

  • 两个并行运行的实例
  • 一个优雅地被放下,另一个从检查点目录中读取状态。