spark 终止 运行_如何优雅地终止正在运行的Spark Streaming程序

  • Post author:
  • Post category:其他


一直运行的

等作业运行完再关闭

我们都知道,

如果想及时了解Spark、Hadoop或者Hbase相关的文章,欢迎关注微信公共帐号:iteblog_hadoop

通过Spark内置机制关闭

其实Spark内置就为我们提供了一种优雅的方法来关闭长期运行的Streaming作业,我们来看看 StreamingContext 类中定义的一个 stop 方法: def stop(stopSparkContext: Boolean, stopGracefully: Boolean)

官方文档对其解释是:Stop the execution of the streams, with option of ensuring all received data has been processed. 控制所有接收的数据是否被处理的参数就是 stopGracefully,如果我们将它设置为true,Spark则会等待所有接收的数据被处理完成,然后再关闭计算引擎,这样就可以避免数据的丢失。现在的问题是我们在哪里调用这个stop方法?

Spark 1.4版本之前

在Spark 1.4版本之前,我们需要手动调用这个 stop 方法,一种比较合适的方式是通过 Runtime.getRuntime().addShutdownHook 来添加一个钩子,其会在JVM关闭的之前执行传递给他的函数,如下: Runtime.getRuntime().addShutdownHook(new Thread() {

override def run() {

log(“Gracefully stop Spark Str



版权声明:本文为weixin_39614011原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。