Hadoop之CapacityScheduler队列管理的使用
2017-11-07 11:47
344 查看
关于在本地hadoop伪分布式环境下配置队列管理运算资源的问题记录
首先:照下面这个文章配置
Hadoop 设置队列计算能力调度器应用和配置
于是更改mapred.xml,配置capacity-scheduler.xml,配置完成后发现,在代码或者终端里加入队列名称,均显示找不到,后来看到该配置文件同级目录下有一个mapred-queues.xml文件,于是再抱有一丝希望的改了文件中的队列名测试下,发现还是没用,然后看到有说mapreduce取消了队列管理,代替以统一资源池什么的,
然后:继续搜索到下面一篇
关于YARN Node Labels的一点理解
还有这篇(主要参考):
hadoop 2.7.2 yarn中文文档—— Capacity Scheduler
capacityscheduler作为一个可插拔的hadoop调度器,允许多租户安全的共享一个大的集群,在资源分配有限的条件下适时的为应用程序分配资源,在操作友好的方式下最大化集群吞吐量和利用率。
最后:以下是经过测试的正确配置步骤
1、yarn-site.xml添加属性
2、capacity-scheduler.xml
添加root下两个子队列,默认只有default
参考default的配置,添加配置xm rp子队列
注意这三个参数的配置(如果有的话)minshare,maxshare,maxrunningapp
要特别注意下面这个配置
这个值一定要保证三个队列的值加起来等于100,否则会无法启动resourceManager,同时会报错Illegal capacity of 1.9000001 for children of queue root…
3、执行start-yarn.sh启动resourceManager,如果是修改了队列信息,可以执行刷新队列的命令:
4、为任务设置队列
第一种,通过conf设置:
第二种,通过-D命令:
添加了以后发现并没有效果,后来发现如果使用这种方式的话,那么hadoop的代码最好使用下面的格式,这种格式比较适用于shell脚本的运行方式,如果用hadoop jar命令行方式,那这个-D命令得加在jar包后面,如果使用ProgramDriver的话,还得加在类别名的后面才能正常拿到参数值。
5、web截图效果
以下是同时执行了三个任务,三个任务的区别只是队列名不同,之前在没做以上这样的配置的时候,只执行一个任务的时候,就会占满所有的资源,其他任务只能排队等待,现在经过队列配置后,资源有了最大利用限制,就不会出现只执行某一个耗时的任务就占满所有资源的情况,提高了资源利用率。
以下是只执行一个耗时任务的截图,可以看到子队列xm被使用了166.7%
首先:照下面这个文章配置
Hadoop 设置队列计算能力调度器应用和配置
于是更改mapred.xml,配置capacity-scheduler.xml,配置完成后发现,在代码或者终端里加入队列名称,均显示找不到,后来看到该配置文件同级目录下有一个mapred-queues.xml文件,于是再抱有一丝希望的改了文件中的队列名测试下,发现还是没用,然后看到有说mapreduce取消了队列管理,代替以统一资源池什么的,
然后:继续搜索到下面一篇
关于YARN Node Labels的一点理解
还有这篇(主要参考):
hadoop 2.7.2 yarn中文文档—— Capacity Scheduler
capacityscheduler作为一个可插拔的hadoop调度器,允许多租户安全的共享一个大的集群,在资源分配有限的条件下适时的为应用程序分配资源,在操作友好的方式下最大化集群吞吐量和利用率。
最后:以下是经过测试的正确配置步骤
1、yarn-site.xml添加属性
<!-- 配置ResouceManager使用CapacityScheduler --> <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> </property>
2、capacity-scheduler.xml
添加root下两个子队列,默认只有default
<property> <name>yarn.scheduler.capacity.root.queues</name> <value>default,xm,rp</value> <description> The queues at the this level (root is the root queue). </description> </property>
参考default的配置,添加配置xm rp子队列
注意这三个参数的配置(如果有的话)minshare,maxshare,maxrunningapp
要特别注意下面这个配置
<property> <name>yarn.scheduler.capacity.root.default.capacity</name> <value>40</value> <description>Default queue target capacity.</description> </property>
这个值一定要保证三个队列的值加起来等于100,否则会无法启动resourceManager,同时会报错Illegal capacity of 1.9000001 for children of queue root…
3、执行start-yarn.sh启动resourceManager,如果是修改了队列信息,可以执行刷新队列的命令:
yarn rmadmin -refreshQueues
4、为任务设置队列
第一种,通过conf设置:
configuration.set("mapreduce.job.queuename","xm");
第二种,通过-D命令:
-Dmapreduce.job.queuename=rp
添加了以后发现并没有效果,后来发现如果使用这种方式的话,那么hadoop的代码最好使用下面的格式,这种格式比较适用于shell脚本的运行方式,如果用hadoop jar命令行方式,那这个-D命令得加在jar包后面,如果使用ProgramDriver的话,还得加在类别名的后面才能正常拿到参数值。
public class Main extends Configured implements Tool { private final Logger logger = LoggerFactory.getLogger(Main.class); @Override public int run(String[] args) throws Exception { Configuration conf = getConf(); String queue = conf.get("mapreduce.job.queuename"); conf.set("mapreduce.job.queuename", queue); ...... } } public static void main(String[] args) throws Exception { if (args.length < 7) { System.exit(1); } int status = ToolRunner.run(new Configuration(), new Start(), args); System.exit(status); }
5、web截图效果
以下是同时执行了三个任务,三个任务的区别只是队列名不同,之前在没做以上这样的配置的时候,只执行一个任务的时候,就会占满所有的资源,其他任务只能排队等待,现在经过队列配置后,资源有了最大利用限制,就不会出现只执行某一个耗时的任务就占满所有资源的情况,提高了资源利用率。
以下是只执行一个耗时任务的截图,可以看到子队列xm被使用了166.7%
相关文章推荐
- Hadoop-Linux集群批量部署管理工具parallel-ssh(PSSH)的安装与使用
- Ubuntu上使用Hadoop 2.x 八 HDFS cluster管理命令
- hadoop学习之使用命令行以及javaAPI管理 hdfs中的数据
- hadoop中使用ACL管理HDFS权限
- 使用HUE来管理hadoop集群
- 第2章第2节练习题3 使用队列模拟渡口管理
- Gearman Server 使用 MySQL UDFs 来管理和保持队列
- 使用Supervisor来管理你的Laravel队列
- 我的Hadoop安装——使用Cloudera部署,管理Hadoop集群(离线安装CDH5.7.0)
- hadoop基础----hadoop实战(七)-----hadoop管理工具---使用Cloudera Manager安装Hadoop---Cloudera Manager和CDH5.8离线安装
- Windows RabbitMQ 镜像队列 (高可用性、一台宕机自动切换另一台) 使用 RabbitMQ 自带的Web 管理工具
- 使用supervisor管理laravel队列
- 使用Cloudera部署,管理Hadoop集群
- hadoop队列管理(指定queue跑程序)
- 使用Supervisor来管理你的Laravel队列
- 如何使用 Mmcv.exe 工具来管理群集消息队列资源[转]
- 使用expect命令实现远程管理集群和一键安装Hadoop集群
- hadoop基础----hadoop实战(七)-----hadoop管理工具---使用Cloudera Manager安装Hadoop---Cloudera Manager和CDH5.8离线安装
- [Hadoop] 使用Apache Ambari管理Hadoop
- 使用Apache Ambari管理Hadoop