一段时间后停止 Spark Streaming 作业
Posted
技术标签:
【中文标题】一段时间后停止 Spark Streaming 作业【英文标题】:Stopping the Spark Streaming job after some time 【发布时间】:2017-07-03 06:51:48 【问题描述】:是否有某种方法可以在一段时间后终止火花流作业,这样驱动程序就不会丢失,其余 API 显示作业已完成。
【问题讨论】:
如果需要停止,可能不适合 Spark Streaming 我知道这不是一个好习惯,但我需要内存使用指标,而 Dr Elephant 需要一份完整的工作 【参考方案1】:awaitTerminationOrTimeout(timeout: Long)
中的超时功能以及您选择的timeout
值将在超时到期后恢复您的主程序的执行。
之后我们需要有一些其他的等待函数来保持 spark 上下文处于活动状态以供检查。
类似:
// create streaming context
// do dstream stuff
streamingContext.awaitTerminationOrTimeout(streamingTimeout)
streamingContext.stop(stopSparkContext = false)
Thread.sleep(afterStreamingTimeout) // keep alive for some time.
// the end
作为替代方案,您可以使用笔记本等交互式环境进行此类实验。在那里,您可以通过发出streamingContext.stop(stopSparkContext = false)
手动停止上下文,只要笔记本处于活动状态,spark 上下文将仍然存在。 (这是我用来做原型的)
【讨论】:
@JSR29 PS:交互式探索示例:youtube.com/watch?v=q3TjGjffs3g&t=99s(不是流式传输,但概念类似) @JSR29 这可能是使用 Spark Streaming 进行交互式探索的更好示例:youtu.be/qxsOjJnwcKQ?t=526以上是关于一段时间后停止 Spark Streaming 作业的主要内容,如果未能解决你的问题,请参考以下文章
为啥当我发送两个输入流时 Spark Streaming 停止工作?
详解Spark Streaming的Graceful Shutdown
详解Spark Streaming的Graceful Shutdown