【问题标题】:spark-submit continues to hang after job completion作业完成后 spark-submit 继续挂起
【发布时间】:2016-09-22 03:44:13
【问题描述】:

我正在尝试在 AWS 中使用 hdfs 测试 spark 1.6。我正在使用示例文件夹中提供的 wordcount python 示例。我使用 spark-submit 提交作业,作业成功完成,并在控制台上打印结果。 Web-UI 也表示已完成。然而,火花提交永远不会终止。我已经验证了上下文在字数统计示例代码中也停止了。

可能出了什么问题?

这是我在控制台上看到的。

6-05-24 14:58:04,749 INFO  [Thread-3] handler.ContextHandler (ContextHandler.java:doStop(843)) - stopped o.s.j.s.ServletContextHandler{/stages/stage,null}
2016-05-24 14:58:04,749 INFO  [Thread-3] handler.ContextHandler (ContextHandler.java:doStop(843)) - stopped o.s.j.s.ServletContextHandler{/stages/json,null}
2016-05-24 14:58:04,749 INFO  [Thread-3] handler.ContextHandler (ContextHandler.java:doStop(843)) - stopped o.s.j.s.ServletContextHandler{/stages,null}
2016-05-24 14:58:04,749 INFO  [Thread-3] handler.ContextHandler (ContextHandler.java:doStop(843)) - stopped o.s.j.s.ServletContextHandler{/jobs/job/json,null}
2016-05-24 14:58:04,750 INFO  [Thread-3] handler.ContextHandler (ContextHandler.java:doStop(843)) - stopped o.s.j.s.ServletContextHandler{/jobs/job,null}
2016-05-24 14:58:04,750 INFO  [Thread-3] handler.ContextHandler (ContextHandler.java:doStop(843)) - stopped o.s.j.s.ServletContextHandler{/jobs/json,null}
2016-05-24 14:58:04,750 INFO  [Thread-3] handler.ContextHandler (ContextHandler.java:doStop(843)) - stopped o.s.j.s.ServletContextHandler{/jobs,null}
2016-05-24 14:58:04,802 INFO  [Thread-3] ui.SparkUI (Logging.scala:logInfo(58)) - Stopped Spark web UI at http://172.30.2.239:4040
2016-05-24 14:58:04,805 INFO  [Thread-3] cluster.SparkDeploySchedulerBackend (Logging.scala:logInfo(58)) - Shutting down all executors
2016-05-24 14:58:04,805 INFO  [dispatcher-event-loop-2] cluster.SparkDeploySchedulerBackend (Logging.scala:logInfo(58)) - Asking each executor to shut down
2016-05-24 14:58:04,814 INFO  [dispatcher-event-loop-5] spark.MapOutputTrackerMasterEndpoint (Logging.scala:logInfo(58)) - MapOutputTrackerMasterEndpoint stopped!
2016-05-24 14:58:04,818 INFO  [Thread-3] storage.MemoryStore (Logging.scala:logInfo(58)) - MemoryStore cleared
2016-05-24 14:58:04,818 INFO  [Thread-3] storage.BlockManager (Logging.scala:logInfo(58)) - BlockManager stopped
2016-05-24 14:58:04,820 INFO  [Thread-3] storage.BlockManagerMaster (Logging.scala:logInfo(58)) - BlockManagerMaster stopped
2016-05-24 14:58:04,821 INFO  [dispatcher-event-loop-3] scheduler.OutputCommitCoordinator$OutputCommitCoordinatorEndpoint (Logging.scala:logInfo(58)) - OutputCommitCoordinator stopped!
2016-05-24 14:58:04,824 INFO  [Thread-3] spark.SparkContext (Logging.scala:logInfo(58)) - Successfully stopped SparkContext
2016-05-24 14:58:04,827 INFO  [sparkDriverActorSystem-akka.actor.default-dispatcher-2] remote.RemoteActorRefProvider$RemotingTerminator (Slf4jLogger.scala:apply$mcV$sp(74)) - Shutting down remote daemon.
2016-05-24 14:58:04,828 INFO  [sparkDriverActorSystem-akka.actor.default-dispatcher-2] remote.RemoteActorRefProvider$RemotingTerminator (Slf4jLogger.scala:apply$mcV$sp(74)) - Remote daemon shut down; proceeding with flushing remote transports.
2016-05-24 14:58:04,843 INFO  [sparkDriverActorSystem-akka.actor.default-dispatcher-2] remote.RemoteActorRefProvider$RemotingTerminator (Slf4jLogger.scala:apply$mcV$sp(74)) - Remoting shut down.

我必须执行 ctrl-c 来终止 spark-submit 过程。这真的是一个奇怪的问题,我不知道如何解决这个问题。请让我知道是否有任何我应该查看的日志,或者在这里做一些不同的事情。

这里是 spark-submit 过程的 jstack 输出的 pastebin 链接: http://pastebin.com/Nfnt4XmT

【问题讨论】:

  • 我不知道 python,但即使 Spark 上下文关闭,我也会检查哪个线程处于活动状态。检查stackoverflow.com/questions/4046986/…
  • 您可能需要通过 sc.stop() 在应用程序结束时停止 spark 上下文
  • 我已经停止了 spark 上下文。这是那个帖子。
  • 你用什么做“主人”? “火花提交--master ???”
  • 我尝试了 master=yarn-cluster 和 local

标签: python hadoop amazon-web-services apache-spark pyspark


【解决方案1】:

我的 spark 作业代码中的自定义线程池也有同样的问题。我发现 spark-submit 与在您的代码中使用自定义 non 守护线程池有关。 您可以查看ThreadUtils.newDaemonCachedThreadPool() 以了解 spark 开发人员如何创建线程池,或者您可以使用此实用程序,但要小心,因为它们是包私有的。

【讨论】:

    【解决方案2】:

    对我来说: 在本地它停止但在集群上执行时继续发送日志。我认为这是预期的行为。 从另一个答案中得到这个并为我工作。

    val sc=new SparkContext(conf)
    try{
          //code goes here
    }
    finally{
          sc.stop()
    }
    

    这项技术在 Spark 和 PySpark 中都有效。 sample shot

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-31
      • 1970-01-01
      相关资源
      最近更新 更多