【问题标题】:Spark Shell stuck in YARN Accepted stateSpark Shell 卡在 YARN Accepted 状态
【发布时间】:2015-12-16 00:08:12
【问题描述】:

在 Yarn 和 EMR 上运行 Spark 1.3.1。当我运行 spark-shell 时,一切看起来都很正常,直到我开始看到像 INFO yarn.Client: Application report for application_1439330624449_1561 (state: ACCEPTED) 这样的消息。这些消息不断生成,每秒一次。同时,我无法使用 Spark shell。

我不明白为什么会这样。

【问题讨论】:

  • 您在为 Spark 添加应用程序时是否添加了 -x 参数(在亚马逊集群配置期间?)您是手动配置集群还是使用脚本来配置 AWS 集群?

标签: hadoop apache-spark hadoop-yarn emr


【解决方案1】:

从 YARN 看到(几乎)无穷无尽的 Accepted 消息一直是一个明确的信号,表明没有足够的集群资源来分配给我的 Spark 作业/shell。 YARN 将继续尝试安排您的 Spark 应用程序,但如果在一定时间内没有足够的资源可用,最终会超时。

您是否为 spark-shell 提供了任何命令行选项来覆盖所提供的默认值?当我要求太多的 executors/cores/memory 时,YARN 会接受我的请求,但永远不会转换为 Running ApplicationMaster。

尝试运行不带任何选项的 spark-shell(可能 --master yarn 除外),看看它是否超过了 Accepted。

【讨论】:

  • 其实只是运行spark-shell,没有任何命令行选项
  • @DJElbow 您使用的是什么机器实例,以便我们查看硬件规格?
  • 意识到我在终端中杀死了几个流媒体作业,但我猜它们仍在运行。我能够在显示 YARN 上所有正在运行的应用程序的 UI 中找到这些。我也无法执行 Hive 查询。一旦我使用yarn application -kill application_1428487296152_25597 杀死了这些工作,spark-shell 就会像往常一样启动。
  • @DJElbow 很高兴你知道了!从 YARN 看到无穷无尽的 Accepted 消息始终是一个明确的迹象,表明没有足够的集群资源来分配我请求的 Spark 作业。
【解决方案2】:

意识到我在终端中杀死了几个流媒体作业,但我猜它们仍在运行。我能够在显示 YARN 上所有正在运行的应用程序的 UI 中找到这些(我也无法执行 Hive 查询)。一旦我使用下面的命令终止作业,spark-shell 就会像往常一样启动。

yarn application -kill application_1428487296152_25597 

【讨论】:

    【解决方案3】:

    我猜 YARN 没有足够的资源来运行作业。

    请检查 https://www.cloudera.com/documentation/enterprise/5-3-x/topics/cdh_ig_yarn_tuning.html 用于计算您可以向 YARN 提供多少资源。

    请检查内核数量和RAM数量由以下变量控制:

    yarn.nodemanager.resource.cpu-vcores
    yarn.nodemanager.resource.memory-mb

    【讨论】:

    • 如果你把这些配置放在spark-submit,记得在每个命令前加上spark.。例如,第一个将变为spark.yarn.nodemanager.resource.cpu-vcores,第二个将变为spark.yarn.nodemanager.resource.memory-mb
    猜你喜欢
    • 2019-05-24
    • 2017-10-16
    • 2017-09-01
    • 2016-01-18
    • 2018-12-05
    • 2021-06-29
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多