我创建了一个Spark WordCount应用程序,我在本地模式下使用spark-submit
命令运行了该应用程序。
当我尝试使用命令以纱线上的cluster
模式运行它时:
spark-submit --class com.WordCount --master yarn --deploy-mode cluster WordCount-1.0.jar
它似乎没有运行,并显示状态为:
应用程序的应用报告_1480577073003_0019(状态:接受)
如何在集群模式下将火花应用到纱线?
此问题的原因是您的应用程序/驱动程序比当时的群集中的可用资源要求更多的资源。
由于您尚未指定任何资源参数,因此您的驱动程序将要求使用默认值的资源。这意味着您的集群无法提供资源。
可能的原因:
- 您的群集没有足够的内存/内核的执行者(默认1GB,1核)
- 您的集群具有足够的内存/内核的执行者,但它们已分配给其他一些工作。
解决方案:
- 降低执行程序内存/内核请求的默认值,或者增加每纱线范围内的内存/内核
- 通过添加更多执行者或等待其他作业完成[或在您不喜欢这些工作时杀死它们来增加集群资源;)]
spark-submit --deploy-mode cluster
CC_4 spark应用程序后,驱动程序和执行者在群集的节点上。
来自Spark的官方文件:
部署模式区分驱动程序进程在哪里运行。在"群集"模式下,该框架启动了集群内部的驱动程序。在"客户端"模式下,提交器将启动集群外部的驱动程序。
您将获得应用程序ID为您的应用程序。
您应该使用yarn application -status
命令检查Spark应用程序的状态。
-Status打印应用程序的状态。