`

hadoop计算能力调度器配置

阅读更多
问题出现
hadoop默认调度器是FIFO,其原理就是先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。
比如有两个作业job1和job2,job1提交了一个优先级比较高的作业,而且独占资源时间特别长,这时候来了一个job2作业,就需要等待job1完成释放后才能执行。
解决方法
hadoop有facebook贡献的一个计算能力调度器(Capacity Scheduler), 支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略,为了防止同一个用户的作业独占队列中的资源,该调度器会对同一用户提交的作业所占资源量进行限定。调度时,首先按以下策略选择一个合适队列:计算每个队列中正在运行的任务数与其应该分得的计算资源之间的比值,选择一个该比值最小的队列;然后按以下策略选择该队列中一个作业:按照作业优先级和提交时间顺序选择,同时考虑用户资源量限制和内存限制。

修改hadoop的配置文件mapred-site.xml:
<property> 
  <name>mapred.jobtracker.taskScheduler</name> 
  <value>org.apache.hadoop.mapred.CapacityTaskScheduler</value> 
  <description>计算能力调度器实现类</description>
</property> 
<property> 
  <name>mapred.queue.names</name> 
  <value>default,hive,pig</value>
  <description>队列名称</description>
</property>


在capacity-scheduler.xml文件中填写如下内容:

<property>
    <name>mapred.capacity-scheduler.queue.hive.capacity</name>
    <value>40</value>
    <description>队列容量</description>    
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.hive.maximum-capacity</name>
    <value>-1</value>
    <description>队列的资源使用上限(百分比)</description>    
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.hive.supports-priority</name>
    <value>true</value>
    <description></description>
  </property>
  
    <property>
    <name>mapred.capacity-scheduler.queue.hive.minimum-user-limit-percent</name>
    <value>100</value>
    <description>t:每个用户最低资源保障(百分比)</description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.hive.user-limit-factor</name>
    <value>3</value>
    <description>设置queue中用户可占用queue容量的系数,默认为1</description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.hive.maximum-initialized-active-tasks</name>
    <value>200000</value>
    <description></description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.hive.maximum-initialized-active-tasks-per-user</name>
    <value>100000</value>
    <description></description>
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.hive.init-accept-jobs-factor</name>
    <value>10</value>
    <description></description>
  </property>
  
<!-- pig -->
<property>
    <name>mapred.capacity-scheduler.queue.pig.capacity</name>
    <value>30</value>
    <description></description>    
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.pig.maximum-capacity</name>
    <value>-1</value>
    <description></description>    
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.pig.supports-priority</name>
    <value>true</value>
    <description>If true, priorities of jobs will be taken into 
      account in scheduling decisions.
    </description>
  </property>
  
    <property>
    <name>mapred.capacity-scheduler.queue.pig.minimum-user-limit-percent</name>
    <value>100</value>
    <description></description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.pig.user-limit-factor</name>
    <value>4</value>
    <description>The multiple of the queue capacity which can be configured to
    allow a single user to acquire more slots.
    </description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.pig.maximum-initialized-active-tasks</name>
    <value>200000</value>
    <description></description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.pig.maximum-initialized-active-tasks-per-user</name>
    <value>100000</value>
    <description></description>
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.pig.init-accept-jobs-factor</name>
    <value>10</value>
    <description></description>
  </property>

<!-- default --> 
  <property>
    <name>mapred.capacity-scheduler.queue.default.capacity</name>
    <value>30</value>
    <description></description>    
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.default.maximum-capacity</name>
    <value>-1</value>
    <description></description>    
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.default.supports-priority</name>
    <value>true</value>
    <description></description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.default.minimum-user-limit-percent</name>
    <value>100</value>
    <description></description>
  </property>
  
  <property>
    <name>mapred.capacity-scheduler.queue.default.user-limit-factor</name>
    <value>4</value>
    <description></description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.default.maximum-initialized-active-tasks</name>
    <value>200000</value>
    <description></description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.default.maximum-initialized-active-tasks-per-user</name>
    <value>100000</value>
    <description></description>
  </property>

  <property>
    <name>mapred.capacity-scheduler.queue.default.init-accept-jobs-factor</name>
    <value>10</value>
    <description></description>
  </property>



mapred.capacity-scheduler.queue.<queue-name>.user-limit-factor:设置queue中用户可占用queue容量的系数,默认为1表示,queue中每个用户最多只能占有queue的容量(即mapred.capacity-scheduler.queue.<queue-name>.capacity),因此,需要注意的是,如果queue中只有一个用户提交job,且希望用户在集群不繁忙时候可扩展到mapred.capacity-scheduler.queue.<queue-name>.maximum-capacity指定的slots数,则必须相应调大user-limit-factor这个系数。

java中的使用
conf.setQueueName("hive");



动态更新集群队列和容量
生产环境中,队列及其容量的修改在现实中是不可避免的,而每次修改,需要重启集群,这个代价很高,如果修改队列及其容量的配置不重启呢:
1.在主节点上根据具体需求,修改好mapred-site.xml和capacity-scheduler.xml
2.把配置同步到所有节点上
3.使用hadoop用户执行命令:hadoop mradmin -refreshQueues
这样就可以动态修改集群的队列及其容量配置,不需要重启了,刷新mapreduce的web管理控制台可以看到结果。

注意:如果配置没有同步到所有的节点,一些队列会无法启用。
分享到:
评论

相关推荐

    Hadoop公平调度器指南.pdf

    与 Hadoop 默认调度器维护一个作业队列不同,这 个特性让小作业在合理的时间内完成的同时又不“饿”到消耗较长时间的大作业。它也是一 个在多用户间共享集群的简单方法。公平共享可以和作业优先权搭配使用——优先权...

    论文研究-基于LLF的Hadoop任务调度器 .pdf

    基于LLF的Hadoop任务调度器,荆超,吕玉琴,Hadoop是一个优秀的开源分布式计算平台。通过Hadoop可以将各种不同配置的计算机组建成低成本、高性能的分布式集群,并且具有高容错性

    23、hadoop集群中yarn运行mapreduce的内存、CPU分配调度计算与优化

    23、hadoop集群中yarn运行mapreduce的内存、CPU分配调度计算与优化 网址:https://blog.csdn.net/chenwewi520feng/article/details/130457270 本文介绍在hadoop集群中,不适用默认的参数情况下,yarn的cpu和内容配置...

    Hadoop与Spark 肖睿+PDF

    本书围绕Hadoop和Spark两个主流大数据技术进行讲解,主要内容包括Hadoop环境配置、Hadoop分布式文件系统(HDFS)、Hadoop分布式计算框架MapReduce、Hadoop资源调度框架YARN与Hadoop新特性、Hadoop分布式数据库HBase...

    JobTracker:为Hadoop1实现了实时调度器

    Hadoop1的默认调度器无法处理实时作业,因此我们在作业配置中添加实时属性并更改调度状态以确保实时作业。 应用了几种实时策略,每个都是一个调度器这里。 该策略实现如下: 将实时属性添加到作业 更改 ...

    hadoop安装与配置.pdf

    其核心组件包括HDFS(Hadoop分布式文件系统,用于存储)、MapReduce(分布式离线计算框架)和YARN(资源调度框架)。此外,Hadoop广义上指的是一个更广泛的概念,即Hadoop生态系统,其中还包括了Hive数据仓库工具、...

    Hadoop实战中文版

    8.11 多用户作业的调度 8.11.1 多个JobTracker 8.11.2 公平调度器 8.12 小结第三部分 Hadoop也疯狂 第9章 在云上运行Hadoop 9.1 Amazon Web Services 简介 9.2 安装AWS 9.2.1 获得AWS身份认证凭据 9.2.2 ...

    Hadoop权威指南 第二版(中文版)

     Hadoop配置  配置管理  环境设置  Hadoop守护进程的关键属性  Hadoop守护进程的地址和端口  Hadoop的其他属性  创建用户帐号  安全性  Kerberos和Hadoop  委托令牌  其他安全性改进  利用基准测试程序...

    Hadoop权威指南(中文版)2015上传.rar

    Hadoop配置 配置管理 环境设置 Hadoop守护进程的关键属性 Hadoop守护进程的地址和端口 Hadoop的其他属性 创建用户帐号 安全性 Kerberos和Hadoop 委托令牌 其他安全性改进 利用基准测试程序测试Hadoop集群 Hadoop基准...

    hadoop 1.2.1 api 最新chm 伪中文版

    然后,Hadoop的 job client提交作业(jar包/可执行程序等)和配置信息给JobTracker,后者负责分发这些软件和配置信息给slave、调度任务并监控它们的执行,同时提供状态和诊断信息给job-client。 虽然Hadoop框架是用...

    Hadoop实战中文版.PDF

    1568.11 多用户作业的调度 1578.11.1 多个JobTracker 1588.11.2 公平调度器 1588.12 小结 160第三部分 Hadoop也疯狂第9章 在云上运行Hadoop 1629.1 Amazon Web Services简介 1629.2 安装AWS 1639.2.1...

    Hadoop实战(第2版)

    技术点34 定位reduce 端数据倾斜问题技术点35 确定reduce 任务是否存在整体吞吐量过低技术点36 缓慢的洗牌(shuffle)和排序 .6.2.4 任务的一般性能问题技术点37 作业竞争和调度器限制技术点38 使用堆转储...

    大数据与Hadoop.doc

    2.1 Hadoop的核心模块 Hadoop Common:Hadoop的公用应用模块,是整个Hadoop项目的核心,为Hadoop各子项目提供各 种工具,如配置文件和日志操作等,其他Hadoop子项目都是在此基础上发展起来的。 Hadoop Distributed ...

    基于Hadoop的大数据处理系统.pdf

    该模式并没有充分发挥分布式计算的优势,因为集群中只有⼀台 主机,但是该模式下可以测试Hadoop及相关环境变量是否配置正常。 Pseudo-Distributed Mode Pseudo-Distributed Mode即伪分布模式,它是单机集群模式。...

    Hadoop实战

    1528.6 删减DataNode 1528.7 增加DataNode 1538.8 管理NameNode和SNN 1538.9 恢复失效的NameNode 1558.10 感知网络布局和机架的设计 1568.11 多用户作业的调度 1578.11.1 多个JobTracker 1588.11.2 公平调度器 ...

    Hadoop实战(陆嘉恒)译

    管理Hadoop8.1 为实际应用设置特定参数值8.2 系统体检8.3 权限设置8.4 配额管理8.5 启用回收站8.6 删减DataNode8.7 增加DataNode8.8 管理NameNode 和SNN8.9 恢复失效的NameNode8.10 感知网络布局和机架的设计8.11 多...

    Oozie大数据调度系统从入门到精通视频教程

    从零开始讲解大数据调度系统构成,集成大数据计算任务构建大数据工作流,基于Oozie构建实现企业级自动化任务开发 课程亮点 1,知识体系完备,从小白到大神各阶段读者均能学有所获。 2,生动形象,化繁为简,讲解...

    Fourinone分布式计算框架

    这样做的好处是,开发者有更大能力去深入控制并行计算的过程,去保持使用并行计算实现业务逻辑的完整性,而且对各种不同类型的并行计算场景也能灵活处理,不会因为某些特殊场景被map/reduce的框架限制住思维,并且...

    分布式集群、PB级别网站性能优化

    大数据高并发服务器实战教程 Linux LNMP部分 Memcached篇 Redis 项目开发准备工作 项目开发(前台UI) ...hadoop分布计算配置 redis安装实战 redis使用进阶 redis实用命令实战 redis实战案例及总回顾

Global site tag (gtag.js) - Google Analytics