默认队列default
Yarn默认调度器为Capacity Scheduler(容量调度器),且默认只有一个队列——default。如果队列中执行第一个任务资源不够,就不会再执行第二个任务,一直等到第一个任务执行完毕。
解决办法一:增加ApplicationMaster资源比例,进而提高运行app数量。
解决办法二:创建多队列,比如增加一个hive队列。
// 由于未指定队列,初始化的 spark session 默认占用 defaul 队列,且会一直占用该队列,直到 hive 客户端退出
hive (default)> insert into table student values(1,'abc');
// 若再次提交任务,由于容量调度器单个队列并行度未1,故提交任务一直等待
增加ApplicationMaster资源比例
调整yarn.scheduler.capacity.maximum-am-resource-percent该参数。默认值是0.1,表示集群上AM最多可使用的资源比例,目的为限制过多的app数量。
// 修改 Hadoop 下配置文件capacity-scheduler.xml
[scorpion@warehouse102 ~]$ vim /opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml
<property>
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>0.5</value>
<description>
Maximum percent of resources in the cluster which can be used to run
application masters i.e. controls number of concurrent running
applications.
</description>
</property>
// 分发
[scorpion@warehouse102 ~]$ xsync /opt/module/hadoop-3.1.3/etc/hadoop/capacity-scheduler.xml
增加Yarn容量调度器队列
默认Yarn的配置下,容量调度器只有一条default队列。在capacity-scheduler.xml中可以配置多条队列,修改以下属性,增加hive队列。
// 修改 Hadoop 下配置文件capacity-scheduler.xml
[scorpion@warehouse102 ~