Apache spark 如何在集群模式下向纱线提交Spark应用程序?

Apache spark 如何在集群模式下向纱线提交Spark应用程序?,apache-spark,yarn,Apache Spark,Yarn,我已经创建了一个Spark WordCount应用程序,我在shell中以本地模式使用Spark submit命令运行该应用程序 当我尝试在集群模式下使用以下命令在纱线上运行它时: spark-submit --class com.WordCount --master yarn --deploy-mode cluster WordCount-1.0.jar 它似乎没有运行,并显示以下状态: 申请的申请报告(状态:已接受) 如何spark在集群模式下向纱线提交spark应用程序?出现此问题的原因

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

当我尝试在
集群
模式下使用以下命令在纱线上运行它时:

spark-submit --class com.WordCount --master yarn --deploy-mode cluster WordCount-1.0.jar
它似乎没有运行,并显示以下状态:

申请的申请报告(状态:已接受)


如何
spark在集群模式下向纱线提交
spark应用程序?

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

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

可能的原因:

  • 您的群集没有具有足够内存/内核的执行器(默认为1GB,1个内核)
  • 您的集群有具有足够内存/内核的执行器,但它们被分配给其他一些作业
  • 解决方案:

  • 减少执行器内存/芯请求的默认值或增加每个纱线容器的内存/芯数
  • 通过添加更多执行器或等待其他作业完成来增加群集资源[如果您不喜欢这些作业,请杀死它们;)]

  • 在您
    spark提交--deploy mode cluster
    您的spark应用程序之后,驱动程序和执行器位于集群的节点上

    发件人:

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

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

    应使用
    纱线应用程序-状态
    命令检查火花应用程序的状态

    -status打印应用程序的状态


    检查纱线是否符合作业的所有要求,如执行器数量、芯线等