【发布时间】:2017-05-31 14:56:04
【问题描述】:
我们正在尝试构建一个容错的火花流作业,我们遇到了一个问题。这是我们的场景:
1) Start a spark streaming process that runs batches of 2 mins
2) We have checkpoint enabled. Also the streaming context is configured to either create a new context or build from checkpoint if one exists
3) After a particular batch completes, the spark streaming job is manually killed using yarn application -kill (basically mimicking a sudden failure)
4) The spark streaming job is then restarted from checkpoint
我们遇到的问题是,在重新启动 spark 流作业后,它会重播最后一个成功的批处理。它总是这样做,只是重播最后一个成功的批次,而不是之前的批次
这样做的副作用是该批次的数据部分是重复的。我们甚至尝试在最后一个成功的批处理之后等待超过一分钟,然后再终止进程(以防写入检查点需要时间),但这没有帮助
有什么见解吗?我没有在这里添加代码,希望有人也遇到过这个问题并可以提供一些想法或见解。如果有帮助,也可以发布相关代码。不应该在批处理成功后立即触发流检查点,以便在重新启动后不会重播?我将 ssc.checkpoint 命令放在哪里重要吗?
【问题讨论】:
标签: apache-spark spark-streaming