如何停止火花流媒体工作?

Sak*_*ket 28 apache-spark spark-streaming

我有一个连续运行的Spark Streaming作业.我如何优雅地停止工作?我已经阅读了在作业监视中附加关闭钩子并将SIGTERM发送到作业的通常建议.

sys.ShutdownHookThread {
  logger.info("Gracefully stopping Application...")
  ssc.stop(stopSparkContext = true, stopGracefully = true)
  logger.info("Application stopped gracefully")
}
Run Code Online (Sandbox Code Playgroud)

它似乎工作,但看起来不是最简单的方法来阻止这项工作.我在这里错过了什么吗?

从代码的角度来看,它可能有意义,但您如何在群集环境中使用它?如果我们启动一个火花流工作(我们在集群中的所有节点上分配作业),我们将不得不跟踪作业的PID和运行它的节点.最后,当我们必须停止进程时,我们需要跟踪作业运行的节点以及该进程的PID.我只是希望流媒体作业有一种更简单的工作控制方式.

ud3*_*3sh 21

您可以通过运行以下命令在群集模式下停止流式上下文,而无需发送SIGTERM.这将停止流式上下文,而无需使用线程挂钩显式停止它.

$SPARK_HOME_DIR/bin/spark-submit --master $MASTER_REST_URL --kill $DRIVER_ID

- $ MASTER_REST_URL是火花驱动程序的其余URL,例如spark:// localhost:6066

- $ DRIVER_ID类似于driver-20150915145601-0000

如果您希望spark能够优雅地停止您的应用程序,您可以在最初提交spark应用程序时尝试设置以下系统属性(请参阅http://spark.apache.org/docs/latest/submitting-applications.html设置spark配置属性).

spark.streaming.stopGracefullyOnShutdown=true

这没有正式记录,我通过查看1.4源代码收集了这些内容.此标志在独立模式下受到尊重.我还没有在集群模式下测试它.

我正在使用spark 1.4.*

  • 'spark.streaming.stopGracefullyOnShutdown'现已正式记录在火花配置页面http://spark.apache.org/docs/latest/configuration.html#spark-streaming (4认同)