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.*
| 归档时间: |
|
| 查看次数: |
12580 次 |
| 最近记录: |