

# Capacity Scheduler

The [CapacityScheduler][capacity], a pluggable scheduler for Hadoop which allows for
multiple-tenants to securely share a large cluster such that their applications
are allocated resources in a timely manner under constraints of allocated
capacities

Note about the property "yarn.scheduler.capacity.resource-calculator": The
default i.e. "org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator"
only uses Memory while DominantResourceCalculator uses Dominant-resource to
compare multi-dimensional resources such as Memory, CPU etc. A Java
ResourceCalculator class name is expected.

    module.exports = header: 'YARN RM Sheduler', handler: ({options}) ->

## Register

      @registry.register 'hconfigure', '@rybajs/metal/lib/hconfigure'

## Write Configuration

      @hconfigure
        header: 'Capacity Scheduler'
        if: options.yarn_site['yarn.resourcemanager.scheduler.class'] is 'org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler'
        target: "#{options.conf_dir}/capacity-scheduler.xml"
        source: "#{__dirname}/../../resources/core_hadoop/capacity-scheduler.xml"
        local: true
        properties: options.capacity_scheduler
        merge: false
        backup: true

## Reload

      @system.execute
        header: 'Reload'
        if: -> @status -1
        cmd: mkcmd.hdfs options.hdfs_krb5_user, "service hadoop-yarn-resourcemanager status && yarn --config #{options.conf_dir} rmadmin -refreshQueues || exit 0"


## Dependencies

    mkcmd = require '../../lib/mkcmd'
