gpt4 book ai didi

apache-spark - 如何停止 Spark 流作业?

转载 作者:行者123 更新时间:2023-12-03 07:26:51 34 4
gpt4 key购买 nike

我有一个一直在持续运行的 Spark Streaming 作业。如何优雅地停止工作?我已经阅读了在作业监控中附加关闭 Hook 并向作业发送 SIGTERM 的通常建议。

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

它似乎有效,但看起来并不是停止工作的最干净的方法。我在这里错过了什么吗?

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

最佳答案

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

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

-$MASTER_REST_URL 是 Spark 驱动程序的其余 URL,即类似于 Spark://localhost:6066

-$DRIVER_ID 类似于 driver-20150915145601-0000

如果您希望 Spark 正常停止您的应用,您可以尝试在初次提交 Spark 应用时设置以下系统属性(请参阅 http://spark.apache.org/docs/latest/submitting-applications.html 了解如何设置 Spark 配置属性)。

spark.streaming.stopGraceouslyOnShutdown=true

这没有正式记录,我是通过查看 1.4 源代码收集到的。该标志在独立模式下受到尊重。我还没有在集群模式下测试过它。

我正在使用 Spark 1.4.*

关于apache-spark - 如何停止 Spark 流作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32582730/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com