Spark 作业继续运行

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

我已经在 ambari-server 中提交了我的 Spark 作业 使用以下命令..

  ./spark-submit --class  customer.core.classname --master yarn --numexecutors 2 --driver-memory 2g --executor-memory 2g --executor-cores 1 /home/hdfs/Test/classname-0.0.1-SNAPSHOT-SNAPSHOT.jar newdata host:6667

并且运行良好...

但是即使命令提示符关闭,如何才能让它在后台运行呢?

如有任何帮助,我们将不胜感激。

shell apache-spark
4个回答
9
投票

您可以通过多种方式实现这一目标

1)您可以使用

nohup
在后台运行 Spark 提交驱动程序进程 例如:

nohup  ./spark-submit --class  customer.core.classname \
  --master yarn --numexecutors 2 \
  --driver-memory 2g --executor-memory 2g --executor-cores 1 \
  /home/hdfs/Test/classname-0.0.1-SNAPSHOT-SNAPSHOT.jar \
  newdata host:6667 &

2)以集群部署模式运行,以便驱动进程在不同节点运行。


7
投票

我认为这个问题更多的是关于shell而不是spark,

要保持应用程序运行,即使在关闭 shell 时,也应该在命令末尾添加

&
。所以你的
spark-submit
命令将是(只需将
&
添加到末尾)

./spark-submit --class  customer.core.classname --master yarn --numexecutors 2 --driver-memory 2g --executor-memory 2g --executor-cores 1 /home/hdfs/Test/classname-0.0.1-SNAPSHOT-SNAPSHOT.jar newdata host:6667 &
[1] 28299

您仍然可以获得日志和输出消息,除非您重定向它们


0
投票

希望我理解这个问题。一般来说,如果您希望进程继续运行,您可以创建一个将在后台运行的进程文件。在您的情况下,该作业将继续运行,直到您使用yarn -kill专门终止它。因此,即使您终止 Spark 提交,它也会继续运行,因为提交后由 YARN 管理它。


0
投票

警告:我没有对此进行测试。但执行您所描述的操作的更好方法可能是使用以下设置:

--deploy-mode cluster \
--conf spark.yarn.submit.waitAppCompletion=false

在这里找到: 提交后如何退出spark-submit

© www.soinside.com 2019 - 2024. All rights reserved.