• hadoop 2.0 yarn Capacity Scheduler 初探


    当前yarn(hadoop 2.0.2-alpha)上的调度器

    clip_image001

    ResourceManager初始化时创建scheduler, 默认使用FifoScheduler(现在默认调度器已经改为capacity scheduler)

    protected ResourceScheduler createScheduler() {
        return ReflectionUtils.newInstance(this.conf.getClass(
            YarnConfiguration.RM_SCHEDULER, FifoScheduler.class,
            ResourceScheduler.class), this.conf);
      }

    Capacity Scheduler

    官网的介绍:

    http://hadoop.apache.org/docs/r0.23.0/hadoop-yarn/hadoop-yarn-site/CapacityScheduler.html

    目的: 一个用在hadoop中插件试的调度器, 允许多种租户安全的共享一个大集群, 以此使他们的应用能在约束条件下及时到分配资源, 设计于共享, 多用户, 操作友好, 最大化集群吞吐量和利用率

    Capacity调度器的配置

    在 etc/hadoop/capacity-scheduler.xml增加配置.

    组分层信息解释: 顶层为root, 每个节点下的子节点和为100, 百分比的意思.

    配置a,b,c组, a组下有a1组和a2组:

            <property>
            <name>yarn.scheduler.capacity.root.capacity</name>
            <value>100</value>
            </property>
            <property>
            <name>yarn.scheduler.capacity.root.a.capacity</name>
            <value>30</value>
            </property>
            <property>
            <name>yarn.scheduler.capacity.root.a.a1.capacity</name>
            <value>30</value>
            </property>
            <property>
            <name>yarn.scheduler.capacity.root.a.a2.capacity</name>
            <value>70</value>
            </property>
            <property>
            <name>yarn.scheduler.capacity.root.b.capacity</name>
            <value>30</value>
            </property>
            <property>
            <name>yarn.scheduler.capacity.root.c.capacity</name>
            <value>40</value>
            </property>
            <property>
            <name>yarn.scheduler.capacity.root.queues</name>
            <value>a,b,c</value>
            <description>The queues at the this level (root is the root queue).
            </description>
            </property>
            <property>
            <name>yarn.scheduler.capacity.root.a.queues</name>
            <value>a1,a2</value>
            <description>The queues at the this level (root is the root queue).
            </description>
            </property>

    客户端配置在 etc/hadoop/mapred-site.xml中配置组信息:

            <property>
            <name>mapreduce.job.queuename</name>
            <value>a1</value>
            <source>mapred-default.xml</source>
            </property>

    默认组为default,

    提交作业: bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-0.23.3.jar teragen 100 /in. 作业会运行在a1下.

    下图是对配置文件的图形解释:

                                                clip_image001[5]

    ParentQueue: root, a

    LeafQueue: b,c,a1,a2

    下图RM网页上显示了组关系:

    image

    Capacity Scheduler包:

    clip_image007

    其中接口CSQueue(Capacity Scheduler Queue)接口, 定义了一个组结点(树形)应该提供的方法, 它的两个实现LeafQueue(叶子组)和ParentQueue(双亲组), 客户端提交的作业需要提交到叶子组.

    Capacity初始化期间读取配置组信息, 维护queue队列, 提交作业时运行handle方法, 状态为APP_ADDED, 在addApplication方法中通过配置的组名获取组信息,如果为null则报错. 然后判断是否能提交到该组(queue.submitApplication LeafQueue).

    判断流程:

    1. HasAccess, queue初始化的时候更新acl信息, 然后通过它判断某用户是否能使用该组资源

    2. 该组是否处于running状态

    3. Maxapplication, 组是否超过, 用户是否超过, 即支持设置每个组(用户)能运行的最多App数, 资源比例.

    转载请注明出处!(http://www.cnblogs.com/shenh062326/archive/2012/11/20/yarn_capacity_scheduler.html)

  • 相关阅读:
    结对-五子棋-测试过程
    结队-五子棋游戏-项目进度
    团队-象棋游戏-代码设计规范
    团队-象棋游戏-开发环境搭建过程
    课后作业-阅读任务-阅读提问-1
    20170914-构建之法:现代软件工程-阅读笔记
    结对-五子棋游戏-开发环境搭建过程
    团队-象棋-成员简介及分工
    结对-五子棋-需求分析
    个人-GIT使用方法
  • 原文地址:https://www.cnblogs.com/shenh062326/p/yarn_capacity_scheduler.html
Copyright © 2020-2023  润新知