【问题标题】:How to submit Spark application to YARN in cluster mode?如何在集群模式下向 YARN 提交 Spark 应用程序?
【发布时间】:2016-12-14 06:25:24
【问题描述】:

我创建了一个 Spark WordCount 应用程序,我在本地模式下在 shell 中使用 spark-submit 命令运行该应用程序。

当我尝试使用以下命令在 YARN 上以 cluster 模式运行它时:

spark-submit --class com.WordCount --master yarn --deploy-mode cluster WordCount-1.0.jar

它似乎没有运行并显示为:

application_1480577073003_0019 的申请报告(状态:ACCEPTED)

如何在集群模式下spark-submit Spark 应用程序到 YARN?

【问题讨论】:

  • 检查作业的所有需求在纱线中是否可用,比如执行器的数量、核心数等等

标签: apache-spark hadoop-yarn


【解决方案1】:

此问题的原因是您的应用程序/驱动程序请求的资源比当时集群中的可用资源多。

由于您没有指定任何资源参数,您的驱动程序将使用默认值请求资源。这意味着您的集群无法提供资源。

可能的原因:

  1. 您的集群没有足够内存/内核的执行程序(默认 1GB,1 个内核)
  2. 您的集群有具有足够内存/内核的执行程序,但它们被分配给其他一些作业。

解决方案:

  1. 要么减少执行程序内存/核心请求的默认值,要么增加每个纱线容器的内存/核心
  2. 通过添加更多执行器或等待其他作业完成来增加集群资源[如果您不喜欢这些作业,则将其杀死;)]

【讨论】:

    【解决方案2】:

    在您spark-submit --deploy-mode cluster您的 Spark 应用程序之后,驱动程序和执行程序位于集群的节点上。

    来自Spark's official documentation

    部署模式 区分驱动程序运行的位置。在“集群”模式下,框架在集群内部启动驱动程序。在“客户端”模式下,提交者在集群外启动驱动程序。

    您将获得作为应用程序句柄的应用程序 ID。

    您应该使用yarn application -status 命令来检查 Spark 应用程序的状态。

    -status 打印应用程序的状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-20
      • 1970-01-01
      • 2018-02-25
      • 1970-01-01
      • 2016-10-15
      相关资源
      最近更新 更多