spark动态资源分配和排队应用程序

a6b3iqyw  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(335)

根据cloudera文档:
启用spark动态资源分配后,将所有资源分配给第一个提交的可用作业,从而导致后续应用程序排队。要允许应用程序并行获取资源,请将资源分配给池并在这些池中运行应用程序,并使在池中运行的应用程序能够被抢占。
我自己也观察到了这种行为,但是我目前正在处理一个只有2个节点(emr上的m3.xlarge)和1个主节点(r3.xlarge)的小型集群。我看到的是,如果我提交多个spark应用程序(不同的调用 spark-submit ),当我在emr上查找我的资源管理器时,所有的应用程序都被接受,但一次只运行一个。
现在这可能是因为我正在读取大约2gb的文件,并且我的资源已经耗尽。我也试过做一些 spark-submit 调用现有的 pi.py spark的例子。在这种情况下,我可以看到多个作业处于运行状态。
有鉴于此,cloudera文档是正确的还是有误导性的?如果我有一个更大的集群,我会看到多个应用程序并行运行吗?

pftdvrlh

pftdvrlh1#

spark动态分配
动态分配的策略是上下扩展执行器,如下所示:
当存在挂起的任务时,按比例放大策略会请求新的执行者,并且执行者的数量会成倍增加,因为执行者启动缓慢,spark应用程序可能需要稍微多一些。
按比例缩小策略删除已空闲spark.DynamicLocation.executoridletimeout秒的执行器。
cloudera资源到池
所以cloudera所说的是,可能有一个作业可能会占用所有的资源,因为任务待定,请创建一个ques并为每个ques分配特定数量的资源。请按照链接如何创建Yarn。
https://discuss.pivotal.io/hc/en-us/articles/201623853-how-to-configure-queues-using-yarn-capacity-scheduler-xml
在上述情况下,场景1
在您的作业中,可能有更多的挂起任务,并且由于动态资源分配,大部分资源都分配给单个作业,即使您提交了下一个应用程序,但由于资源的原因,它将处于等待状态。
场景2
运行这些示例时,作业所需的资源可能是更少的任务和动态分配,而不是更多的执行者(因为没有挂起的任务)。由于集群中有额外的(未分配的)资源,接下来将运行多个应用程序,而不是等待状态。

相关问题