从kafka读取内容时,我对Spark结构化流中的容错有一些疑问。这来自《结构化流编程指南》:
万一发生故障或有意关闭时,您可以恢复上一个查询的先前进度和状态,并在中断的地方继续进行。这是使用检查点日志和预写日志完成的。
1)如何重新启动失败的查询?可以自动完成吗?
您可以使用查询点位置配置查询,该查询会将所有进度信息(即在每个触发器中处理的偏移量范围)和正在运行的聚合(例如快速示例中的字数)保存到检查点位置。此检查点位置必须是与HDFS兼容的文件系统中的路径,并且可以在启动查询时在DataStreamWriter中设置为选项。
2)如果您未指定检查点位置会怎样?是否选择默认位置或您没有容错保证?您可以指定单个节点的本地非hdfs文件系统的路径作为检查点位置吗?
答案 0 :(得分:1)
您可以从streamingcontext.java中找到问题的答案 https://spark.apache.org/docs/2.2.0/api/java/org/apache/spark/streaming/StreamingContext.html
无CheckPoint位置-
如果我们未指定检查点的位置,那么我们将无法恢复故障。
默认CheckPoint位置
没有默认的检查点位置。我们需要指定。
非hdfs检查点位置
HDFS兼容目录,将可靠地存储检查点数据。 请注意,这必须是像HDFS这样的容错文件系统。因此无需指定本地检查点位置。