【问题标题】:How to terminate a job in standalone and client mode?如何在独立和客户端模式下终止作业?
【发布时间】:2019-02-08 18:44:00
【问题描述】:

我使用 spark-submit 运行一个作业,它有一些异常,它被阻塞了,所以我尝试使用ctrl + c 来停止这个过程。

  1. 我想知道这个作业是否还在集群上运行?

  2. 如果杀死工作不是正确的方法,那么正确的方法是什么?

^C18/09/03 19:03:01 INFO SparkContext:从关闭挂钩调用 stop() 18/09/03 19:03:01 信息 SparkUI:在 http://x.x.x.x:4040 停止 Spark Web UI 18/09/03 19:03:01 信息 DAGScheduler:作业 2 失败:在 xxx.scala:155 计数,耗时 773.555554 秒 18/09/03 19:03:01 INFO DAGScheduler: ShuffleMapStage 2 (count at xxx.scala:155) 在 773.008 秒内失败 18/09/03 19:03:01 错误 LiveListenerBus:SparkListenerBus 已经停止!删除事件 SparkListenerStageCompleted(org.apache.spark.scheduler.StageInfo@7f6a32f) 18/09/03 19:03:01 错误 LiveListenerBus:SparkListenerBus 已经停止!删除事件 SparkListenerJobEnd(2,1535994181627,JobFailed(org.apache.spark.SparkException: Job 2 由于 SparkContext 已关闭而取消)) 18/09/03 19:03:01 错误 LiveListenerBus:SparkListenerBus 已经停止!删除事件 SparkListenerSQLExecutionEnd(0,1535994181630) 18/09/03 19:03:01 INFO StandaloneSchedulerBackend:关闭所有执行程序 线程“主”org.apache.spark.SparkException 中的异常:作业 2 取消,因为 SparkContext 已关闭 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$cleanUpAfterSchedulerStop$1.apply(DAGScheduler.scala:818) 在 org.apache.spark.scheduler.DAGScheduler$$anonfun$cleanUpAfterSchedulerStop$1.apply(DAGScheduler.scala:816) 在 scala.collection.mutable.HashSet.foreach(HashSet.scala:78) 在 org.apache.spark.scheduler.DAGScheduler.cleanUpAfterSchedulerStop(DAGScheduler.scala:816) 在 org.apache.spark.scheduler.DAGSchedulerEventProcessLoop.onStop(DAGScheduler.scala:1685) 在 org.apache.spark.util.EventLoop.stop(EventLoop.scala:83) 在 org.apache.spark.scheduler.DAGScheduler.stop(DAGScheduler.scala:1604) 在 org.apache.spark.SparkContext$$anonfun$stop$8.apply$mcV$sp(SparkContext.scala:1781) 在 org.apache.spark.util.Utils$.tryLogNonFatalError(Utils.scala:1290) 在 org.apache.spark.SparkContext.stop(SparkContext.scala:1780) 在 org.apache.spark.SparkContext$$anonfun$2.apply$mcV$sp(SparkContext.scala:559) 在 org.apache.spark.util.SparkShutdownHook.run(ShutdownHookManager.scala:215) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1$$anonfun$apply$mcV$sp$1.apply$mcV$sp(ShutdownHookManager.scala:187) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1$$anonfun$apply$mcV$sp$1.apply(ShutdownHookManager.scala:187) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1$$anonfun$apply$mcV$sp$1.apply(ShutdownHookManager.scala:187) 在 org.apache.spark.util.Utils$.logUncaughtExceptions(Utils.scala:1953) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1.apply$mcV$sp(ShutdownHookManager.scala:187) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1.apply(ShutdownHookManager.scala:187) 在 org.apache.spark.util.SparkShutdownHookManager$$anonfun$runAll$1.apply(ShutdownHookManager.scala:187) 在 scala.util.Try$.apply(Try.scala:192) 在 org.apache.spark.util.SparkShutdownHookManager.runAll(ShutdownHookManager.scala:187) 在 org.apache.spark.util.SparkShutdownHookManager$$anon$2.run(ShutdownHookManager.scala:177) 在 org.apache.hadoop.util.ShutdownHookManager$1.run(ShutdownHookManager.java:54) 在 org.apache.spark.scheduler.DAGScheduler.runJob(DAGScheduler.scala:632) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1873) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1886) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1899) 在 org.apache.spark.SparkContext.runJob(SparkContext.scala:1913) 在 org.apache.spark.rdd.RDD$$anonfun$collect$1.apply(RDD.scala:912) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:151) 在 org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:112) 在 org.apache.spark.rdd.RDD.withScope(RDD.scala:358) 在 org.apache.spark.rdd.RDD.collect(RDD.scala:911) 在 org.apache.spark.sql.execution.SparkPlan.executeCollect(SparkPlan.scala:290) 在 org.apache.spark.sql.Dataset$$anonfun$org$apache$spark$sql$Dataset$$execute$1$1.apply(Dataset.scala:2193) 在 org.apache.spark.sql.execution.SQLExecution$.withNewExecutionId(SQLExecution.scala:57) 在 org.apache.spark.sql.Dataset.withNewExecutionId(Dataset.scala:2546) 在 org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$execute$1(Dataset.scala:2192) 在 org.apache.spark.sql.Dataset.org$apache$spark$sql$Dataset$$collect(Dataset.scala:2199) 在 org.apache.spark.sql.Dataset$$anonfun$count$1.apply(Dataset.scala:2227) 在 org.apache.spark.sql.Dataset$$anonfun$count$1.apply(Dataset.scala:2226) 在 org.apache.spark.sql.Dataset.withCallback(Dataset.scala:2559) 在 org.apache.spark.sql.Dataset.count(Dataset.scala:2226) 在 xx.xx.xx.weekLyLoadingIDFA(xx.scala:155) 在 xx.xx.xx.retrieve(xx.scala:171) 在 xx.xx.xx.run(xx.scala:65) 在 xx.xx.xxRunner$.delayedEndpoint$io$xxx$CellRunner$1(xx.scala:12) 在 xx.xx.xxRunner$delayedInit$body.apply(xx.scala:11) 在 scala.Function0$class.apply$mcV$sp(Function0.scala:34) 在 scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 在 scala.App$$anonfun$main$1.apply(App.scala:76) 在 scala.App$$anonfun$main$1.apply(App.scala:76) 在 scala.collection.immutable.List.foreach(List.scala:381) 在 scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:35) 在 scala.App$class.main(App.scala:76) 在 xx.xx.xxRunner$.main(xx.scala:11) 在 xx.xx.xxRunner.main(xx.scala) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736) 在 org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185) 在 org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210) 在 org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124) 在 org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala) 18/09/03 19:03:01 INFO CoarseGrainedSchedulerBackend$DriverEndpoint: 要求每个执行器关闭 18/09/03 19:03:01 信息 MapOutputTrackerMasterEndpoint:MapOutputTrackerMasterEndpoint 已停止! 18/09/03 19:03:01 信息 MemoryStore:MemoryStore 已清除 18/09/03 19:03:01 信息块管理器:块管理器已停止 18/09/03 19:03:01 信息 BlockManagerMaster:BlockManagerMaster 停止 18/09/03 19:03:01 信息 OutputCommitCoordinator$OutputCommitCoordinatorEndpoint:OutputCommitCoordinator 停止! 18/09/03 19:03:01 错误 TransportResponseHandler:当来自 xxxxx/xxxx:7077 的连接关闭时,仍有 1 个请求未完成 18/09/03 19:03:01 INFO SparkContext:成功停止 SparkContext 18/09/03 19:03:01 信息 ShutdownHookManager:已调用关闭挂钩 18/09/03 19:03:01 INFO ShutdownHookManager: 删除目录 /tmp/spark/spark-xxxxxxxxxx

【问题讨论】:

  • 您在 Spark-local/standalone/yarn 等中使用什么集群管理器?还是客户端模式还是集群模式?
  • 对part2的回答(如果不是杀死作业的正确方法,那么正确的方法是什么?)取决于集群管理器。
  • @prakharjain 独立和客户端模式
  • 在客户端模式下,ctrl+c 应该终止作业并且不退出 spark-shell

标签: apache-spark


【解决方案1】:

当您启动 Spark StandAlone Cluster 时,它的 master 在 8080 端口上有一个 UI。 在主 UI 上,您将在正在运行的应用程序选项卡中看到您的应用程序。 对应于每个应用程序,都有一个与之关联的(KILL)选项按钮。 只需按下该按钮,它就会要求您确认。确认关闭。 In the Image, you can see a running application & there is a kill option associated with it.

快乐火花....

【讨论】:

    【解决方案2】:

    以上日志显示 SparkContext 已关闭。这意味着 Spark 作业不再在集群上运行。

    由于您在客户端模式下运行应用程序,因此 ctrl+c 通常应该终止应用程序。

    【讨论】:

      【解决方案3】:

      如果你在 yarn 上运行,你可以通过下面的命令杀死 spark 应用

      yarn application -kill applicationId
      

      在独立模式下使用 spark

      spark-submit — kill applicationId — master masterurl
      

      【讨论】:

        【解决方案4】:

        这取决于资源管理器。在我的情况下, ctrl+c 在纱线上工作得很好,工作被杀死了,你仍然留在 spark-shell 中。您也可以从 Spark WEB UI 或 YARN 中终止作业。

        【讨论】:

        • 如果用集群模式提交,不能Ctrl+C
        • 这取决于部署模式是集群还是客户端。使用客户端模式和运行例如纱线的作业,您可以。他没有具体说明司机的问题所在。
        猜你喜欢
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 2018-10-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-25
        相关资源
        最近更新 更多