当我在纱线簇上运行spark作业时,应用程序正在队列中运行。那么如何在并行数量的应用程序中运行?
答案 0 :(得分:0)
默认情况下,Spark启动作业时将获取所有可用资源。
您可以通过spark-submit命令限制每个作业消耗的资源量。
将选项“ --conf spark.cores.max = 1”添加到spark-submit。您可以更改内核数以适合您的环境。例如,如果您有100个核心,则可以将一个作业限制为25个核心或5个核心,等等。
您还可以限制消耗的内存量:--conf spark.executor.memory = 4g
您可以通过spark-submit或在文件conf / spark-defaults.conf中更改设置。这是文档的链接:
答案 1 :(得分:0)
我想您的YARN调度程序选项设置为FIFO。请将其更改为FAIR或容量调度程序。FairScheduler尝试分配资源,以便所有正在运行的应用程序获得相同的资源份额。
Capacity Scheduler允许共享Hadoop集群以及 组织线,从而为每个组织分配一定的 整个集群的容量。每个组织都设有一个 专用队列,配置为使用给定分数的 集群容量。队列可以进一步分层 方式,允许每个组织共享其群集配额 组织内不同用户组之间的关系。在一个 队列中,使用FIFO调度来调度应用程序。
如果您正在使用容量调度程序,则 在spark提交中提及您的队列--queue queueName
请尝试更改此容量调度程序属性
yarn.scheduler.capacity.maximum-applications =任何数量
它将决定将并行运行多少个应用程序