如何在集群模式下向YARN提交Spark应用程序?

时间:2016-12-14 06:25:25

标签: apache-spark yarn

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

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

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

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

  

application_1480577073003_0019的应用报告(状态:已接受)

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

2 个答案:

答案 0 :(得分:0)

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

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

可能的原因:

  1. 您的群集没有足够内存/核心的执行程序(默认1GB,1核心)
  2. 您的群集的执行程序具有足够的内存/核心,但它们已分配给其他一些作业。
  3. <强>解决方案:

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

答案 1 :(得分:0)

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

来自Spark's official documentation

  

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

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

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

  

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