Repository: hadoop
Updated Branches:
  refs/heads/branch-2 12ccdd654 -> dac2021f8


YARN-4826. Document configuration of ReservationSystem for CapacityScheduler. 
(Subru Krishnan via wangda)

(cherry picked from commit fcb3fcd4c674d58e5f40b17eff7048e8ae45d151)

Conflicts:
        
hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/CapacityScheduler.md


Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/dac2021f
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/dac2021f
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/dac2021f

Branch: refs/heads/branch-2
Commit: dac2021f870af674ab1a64e937c4f2a388dcc692
Parents: 12ccdd6
Author: Wangda Tan <[email protected]>
Authored: Fri Apr 8 16:21:04 2016 -0700
Committer: Wangda Tan <[email protected]>
Committed: Fri Apr 8 16:28:14 2016 -0700

----------------------------------------------------------------------
 .../src/site/markdown/CapacityScheduler.md      | 40 ++++++++++++++++++++
 1 file changed, 40 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hadoop/blob/dac2021f/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/CapacityScheduler.md
----------------------------------------------------------------------
diff --git 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/CapacityScheduler.md
 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/CapacityScheduler.md
index 8b845c2..007842a 100644
--- 
a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/CapacityScheduler.md
+++ 
b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/CapacityScheduler.md
@@ -24,6 +24,7 @@ Hadoop: Capacity Scheduler
     * [Queue Properties](#Queue_Properties)
     * [Setup for application priority](#Setup_for_application_priority.)
     * [Capacity Scheduler container 
preemption](#Capacity_Scheduler_container_preemption)
+    * [Configuring `ReservationSystem` with 
`CapacityScheduler`](#Configuring_ReservationSystem_with_CapacityScheduler)
     * [Other Properties](#Other_Properties)
     * [Reviewing the configuration of the 
CapacityScheduler](#Reviewing_the_configuration_of_the_CapacityScheduler)
 * [Changing Queue Configuration](#Changing_Queue_Configuration)
@@ -229,6 +230,45 @@ The following configuration parameters can be configured 
in yarn-site.xml to con
 |:---- |:---- |
 | `yarn.scheduler.capacity.<queue-path>.disable_preemption` | This 
configuration can be set to `true` to selectively disable preemption of 
application containers submitted to a given queue. This property applies only 
when system wide preemption is enabled by configuring 
`yarn.resourcemanager.scheduler.monitor.enable` to *true* and 
`yarn.resourcemanager.scheduler.monitor.policies` to 
*ProportionalCapacityPreemptionPolicy*. If this property is not set for a 
queue, then the property value is inherited from the queue's parent. Default 
value is false.
 
+###Reservation Properties
+
+  * Reservation Administration & Permissions
+
+  The `CapacityScheduler` supports the following parameters to control the 
creation, deletion, update, and listing of reservations. Note that any user can 
update, delete, or list their own reservations. If reservation ACLs are enabled 
but not defined, everyone will have access. In the examples below, \<queue\> is 
the queue name. For example, to set the reservation ACL to administer 
reservations on the default queue, use the property 
`yarn.scheduler.capacity.root.default.acl_administer_reservations`
+
+| Property | Description |
+|:---- |:---- |
+| `yarn.scheduler.capacity.root.<queue>.acl_administer_reservations` | The ACL 
which controls who can *administer* reservations to the given queue. If the 
given user/group has necessary ACLs on the given queue or they can submit, 
delete, update and list all reservations. ACLs for this property *are not* 
inherited from the parent queue if not specified. |
+| `yarn.scheduler.capacity.root.<queue>.acl_list_reservations` | The ACL which 
controls who can *list* reservations to the given queue. If the given 
user/group has necessary ACLs on the given queue they can list all 
applications. ACLs for this property *are not* inherited from the parent queue 
if not specified. |
+| `yarn.scheduler.capacity.root.<queue>.acl_submit_reservations` | The ACL 
which controls who can *submit* reservations to the given queue. If the given 
user/group has necessary ACLs on the given queue they can submit reservations. 
ACLs for this property *are not* inherited from the parent queue if not 
specified. |
+
+### Configuring `ReservationSystem` with `CapacityScheduler`
+
+ The `CapacityScheduler` supports the **ReservationSystem** which allows users 
to reserve resources ahead of time. The application can request the reserved 
resources at runtime by specifying the `reservationId` during submission. The 
following configuration parameters can be configured in yarn-site.xml for 
`ReservationSystem`.
+
+| Property | Description |
+|:---- |:---- |
+| `yarn.resourcemanager.reservation-system.enable` | *Mandatory* parameter: to 
enable the `ReservationSystem` in the **ResourceManager**. Boolean value 
expected. The default value is *false*, i.e. `ReservationSystem` is not enabled 
by default. |
+| `yarn.resourcemanager.reservation-system.class` | *Optional* parameter: the 
class name of the `ReservationSystem`. The default value is picked based on the 
configured Scheduler, i.e. if `CapacityScheduler` is configured, then it is 
`CapacityReservationSystem`. |
+| `yarn.resourcemanager.reservation-system.plan.follower` | *Optional* 
parameter: the class name of the `PlanFollower` that runs on a timer, and 
synchronizes the `CapacityScheduler` with the `Plan` and viceversa. The default 
value is picked based on the configured Scheduler, i.e. if `CapacityScheduler` 
is configured, then it is `CapacitySchedulerPlanFollower`. |
+| `yarn.resourcemanager.reservation-system.planfollower.time-step` | 
*Optional* parameter: the frequency in milliseconds of the `PlanFollower` 
timer. Long value expected. The default value is *1000*. |
+
+
+The `ReservationSystem` is integrated with the `CapacityScheduler` queue 
hierachy and can be configured for any **LeafQueue** currently. The 
`CapacityScheduler` supports the following parameters to tune the 
`ReservationSystem`:
+
+| Property | Description |
+|:---- |:---- |
+| `yarn.scheduler.capacity.<queue-path>.reservable` | *Mandatory* parameter: 
indicates to the `ReservationSystem` that the queue's resources is available 
for users to reserve. Boolean value expected. The default value is *false*, 
i.e. reservations are not enabled in *LeafQueues* by default. |
+| `yarn.scheduler.capacity.<queue-path>.reservation-agent` | *Optional* 
parameter: the class name that will be used to determine the implementation of 
the `ReservationAgent`  which will attempt to place the user's reservation 
request in the `Plan`. The default value is 
*org.apache.hadoop.yarn.server.resourcemanager.reservation.planning.AlignedPlannerWithGreedy*.
 |
+| `yarn.scheduler.capacity.<queue-path>.reservation-move-on-expiry` | 
*Optional* parameter to specify to the `ReservationSystem` whether the 
applications should be moved or killed to the parent reservable queue 
(configured above) when the associated reservation expires. Boolean value 
expected. The default value is *true* indicating that the application will be 
moved to the reservable queue. |
+| `yarn.scheduler.capacity.<queue-path>.show-reservations-as-queues` | 
*Optional* parameter to show or hide the reservation queues in the Scheduler 
UI. Boolean value expected. The default value is *false*, i.e. reservation 
queues will be hidden. |
+| `yarn.scheduler.capacity.<queue-path>.reservation-policy` | *Optional* 
parameter: the class name that will be used to determine the implementation of 
the `SharingPolicy`  which will validate if the new reservation doesn't violate 
any invariants.. The default value is 
*org.apache.hadoop.yarn.server.resourcemanager.reservation.CapacityOverTimePolicy*.
 |
+| `yarn.scheduler.capacity.<queue-path>.reservation-window` | *Optional* 
parameter representing the time in milliseconds for which the `SharingPolicy` 
will validate if the constraints in the Plan are satisfied. Long value 
expected. The default value is one day. |
+| `yarn.scheduler.capacity.<queue-path>.instantaneous-max-capacity` | 
*Optional* parameter: maximum capacity at any time in percentage (%) as a float 
that the `SharingPolicy` allows a single user to reserve. The default value is 
1, i.e. 100%. |
+| `yarn.scheduler.capacity.<queue-path>.average-capacity` | *Optional* 
parameter: the average allowed capacity which will aggregated over the 
*ReservationWindow* in percentage (%) as a float that the `SharingPolicy` 
allows a single user to reserve. The default value is 1, i.e. 100%. |
+| `yarn.scheduler.capacity.<queue-path>.reservation-planner` | *Optional* 
parameter: the class name that will be used to determine the implementation of 
the *Planner*  which will be invoked if the `Plan` capacity fall below (due to 
scheduled maintenance or node failuers) the user reserved resources. The 
default value is 
*org.apache.hadoop.yarn.server.resourcemanager.reservation.planning.SimpleCapacityReplanner*
 which scans the `Plan` and greedily removes reservations in reversed order of 
acceptance (LIFO) till the reserved resources are within the `Plan` capacity |
+| `yarn.scheduler.capacity.<queue-path>.reservation-enforcement-window` | 
*Optional* parameter representing the time in milliseconds for which the 
`Planner` will validate if the constraints in the Plan are satisfied. Long 
value expected. The default value is one hour. |
+
 ###Other Properties
 
   * Resource Calculator

Reply via email to