如何正常终止Spark应用程序

问题描述 投票:0回答:1

我有一个在Spark集群中运行的进程(在Scala中),该进程处理一些数据,上传结果并更新处理状态。我希望上载和处理状态更新是原子操作,因为状态对于恢复作业和避免重复处理至关重要。每当我们要更新jar时,都需要定期终止正在运行的作业并开始新的作业。在取消作业的同时,我要处理原子操作并在上载之前优雅地退出,或者等到上载和处理状态更新完成。怎样才能做到这一点?如果我们使用yarn API终止应用程序,则它可能会从不一致状态突然退出。解决该问题的最佳方法是什么?

scala apache-spark rdd yarn livy
1个回答
0
投票

网络上有些不错的blogs。基本上,您可以通过

在配置中启用正常关机
sparkConf.set(“spark.streaming.stopGracefullyOnShutdown","true") 

您可以设置此配置,然后像往常一样调用方法ssc.start()和ssc.awaitTermination()开始工作。

如博客文章中所述,信号可以通过此传递:

ps -ef | grep spark |  grep <DriverProgramName> | awk '{print $2}'   | xargs kill  -SIGTERM
e.g. ps -ef | grep spark |  grep DataPipelineStreamDriver | awk '{print $2}'   | xargs kill  -SIGTERM
© www.soinside.com 2019 - 2024. All rights reserved.