<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>
<!-- Generated by the JDiff Javadoc doclet -->
<!-- (http://www.jdiff.org) -->
<!-- on Wed Aug 24 13:54:38 PDT 2016 -->

<api
  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
  xsi:noNamespaceSchemaLocation='api.xsd'
  name="hadoop-yarn-api 2.7.2"
  jdversion="1.0.9">

<!--  Command line arguments =  -doclet org.apache.hadoop.classification.tools.IncludePublicAnnotationsJDiffDoclet -docletpath /Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/target/hadoop-annotations.jar:/Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/target/jdiff.jar -verbose -classpath /Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/target/classes:/Users/vinodkv/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar:/Users/vinodkv/.m2/repository/com/google/guava/guava/11.0.2/guava-11.0.2.jar:/Users/vinodkv/.m2/repository/com/google/code/findbugs/jsr305/3.0.0/jsr305-3.0.0.jar:/Users/vinodkv/.m2/repository/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar:/Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-common-project/hadoop-common/target/hadoop-common-2.7.2.jar:/Users/vinodkv/.m2/repository/commons-cli/commons-cli/1.2/commons-cli-1.2.jar:/Users/vinodkv/.m2/repository/org/apache/commons/commons-math3/3.1.1/commons-math3-3.1.1.jar:/Users/vinodkv/.m2/repository/xmlenc/xmlenc/0.52/xmlenc-0.52.jar:/Users/vinodkv/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar:/Users/vinodkv/.m2/repository/commons-codec/commons-codec/1.4/commons-codec-1.4.jar:/Users/vinodkv/.m2/repository/commons-io/commons-io/2.4/commons-io-2.4.jar:/Users/vinodkv/.m2/repository/commons-net/commons-net/3.1/commons-net-3.1.jar:/Users/vinodkv/.m2/repository/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar:/Users/vinodkv/.m2/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar:/Users/vinodkv/.m2/repository/org/mortbay/jetty/jetty/6.1.26/jetty-6.1.26.jar:/Users/vinodkv/.m2/repository/org/mortbay/jetty/jetty-util/6.1.26/jetty-util-6.1.26.jar:/Users/vinodkv/.m2/repository/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar:/Users/vinodkv/.m2/repository/com/sun/jersey/jersey-core/1.9/jersey-core-1.9.jar:/Users/vinodkv/.m2/repository/com/sun/jersey/jersey-json/1.9/jersey-json-1.9.jar:/Users/vinodkv/.m2/repository/org/codehaus/jettison/jettison/1.1/jettison-1.1.jar:/Users/vinodkv/.m2/repository/com/sun/xml/bind/jaxb-impl/2.2.3-1/jaxb-impl-2.2.3-1.jar:/Users/vinodkv/.m2/repository/javax/xml/bind/jaxb-api/2.2.2/jaxb-api-2.2.2.jar:/Users/vinodkv/.m2/repository/javax/xml/stream/stax-api/1.0-2/stax-api-1.0-2.jar:/Users/vinodkv/.m2/repository/javax/activation/activation/1.1/activation-1.1.jar:/Users/vinodkv/.m2/repository/org/codehaus/jackson/jackson-jaxrs/1.9.13/jackson-jaxrs-1.9.13.jar:/Users/vinodkv/.m2/repository/org/codehaus/jackson/jackson-xc/1.9.13/jackson-xc-1.9.13.jar:/Users/vinodkv/.m2/repository/com/sun/jersey/jersey-server/1.9/jersey-server-1.9.jar:/Users/vinodkv/.m2/repository/asm/asm/3.2/asm-3.2.jar:/Users/vinodkv/.m2/repository/log4j/log4j/1.2.17/log4j-1.2.17.jar:/Users/vinodkv/.m2/repository/net/java/dev/jets3t/jets3t/0.9.0/jets3t-0.9.0.jar:/Users/vinodkv/.m2/repository/org/apache/httpcomponents/httpclient/4.2.5/httpclient-4.2.5.jar:/Users/vinodkv/.m2/repository/org/apache/httpcomponents/httpcore/4.2.5/httpcore-4.2.5.jar:/Users/vinodkv/.m2/repository/com/jamesmurty/utils/java-xmlbuilder/0.4/java-xmlbuilder-0.4.jar:/Users/vinodkv/.m2/repository/commons-configuration/commons-configuration/1.6/commons-configuration-1.6.jar:/Users/vinodkv/.m2/repository/commons-digester/commons-digester/1.8/commons-digester-1.8.jar:/Users/vinodkv/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar:/Users/vinodkv/.m2/repository/commons-beanutils/commons-beanutils-core/1.8.0/commons-beanutils-core-1.8.0.jar:/Users/vinodkv/.m2/repository/org/slf4j/slf4j-api/1.7.10/slf4j-api-1.7.10.jar:/Users/vinodkv/.m2/repository/org/slf4j/slf4j-log4j12/1.7.10/slf4j-log4j12-1.7.10.jar:/Users/vinodkv/.m2/repository/org/codehaus/jackson/jackson-core-asl/1.9.13/jackson-core-asl-1.9.13.jar:/Users/vinodkv/.m2/repository/org/codehaus/jackson/jackson-mapper-asl/1.9.13/jackson-mapper-asl-1.9.13.jar:/Users/vinodkv/.m2/repository/org/apache/avro/avro/1.7.4/avro-1.7.4.jar:/Users/vinodkv/.m2/repository/com/thoughtworks/paranamer/paranamer/2.3/paranamer-2.3.jar:/Users/vinodkv/.m2/repository/org/xerial/snappy/snappy-java/1.0.4.1/snappy-java-1.0.4.1.jar:/Users/vinodkv/.m2/repository/com/google/code/gson/gson/2.2.4/gson-2.2.4.jar:/Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-common-project/hadoop-auth/target/hadoop-auth-2.7.2.jar:/Users/vinodkv/.m2/repository/org/apache/directory/server/apacheds-kerberos-codec/2.0.0-M15/apacheds-kerberos-codec-2.0.0-M15.jar:/Users/vinodkv/.m2/repository/org/apache/directory/server/apacheds-i18n/2.0.0-M15/apacheds-i18n-2.0.0-M15.jar:/Users/vinodkv/.m2/repository/org/apache/directory/api/api-asn1-api/1.0.0-M20/api-asn1-api-1.0.0-M20.jar:/Users/vinodkv/.m2/repository/org/apache/directory/api/api-util/1.0.0-M20/api-util-1.0.0-M20.jar:/Users/vinodkv/.m2/repository/org/apache/curator/curator-framework/2.7.1/curator-framework-2.7.1.jar:/Users/vinodkv/.m2/repository/com/jcraft/jsch/0.1.42/jsch-0.1.42.jar:/Users/vinodkv/.m2/repository/org/apache/curator/curator-client/2.7.1/curator-client-2.7.1.jar:/Users/vinodkv/.m2/repository/org/apache/curator/curator-recipes/2.7.1/curator-recipes-2.7.1.jar:/Users/vinodkv/.m2/repository/org/apache/htrace/htrace-core/3.1.0-incubating/htrace-core-3.1.0-incubating.jar:/Users/vinodkv/.m2/repository/org/apache/zookeeper/zookeeper/3.4.6/zookeeper-3.4.6.jar:/Users/vinodkv/.m2/repository/io/netty/netty/3.6.2.Final/netty-3.6.2.Final.jar:/Users/vinodkv/.m2/repository/org/apache/commons/commons-compress/1.4.1/commons-compress-1.4.1.jar:/Users/vinodkv/.m2/repository/org/tukaani/xz/1.0/xz-1.0.jar:/Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-common-project/hadoop-annotations/target/hadoop-annotations-2.7.2.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home/lib/tools.jar:/Users/vinodkv/.m2/repository/com/google/protobuf/protobuf-java/2.5.0/protobuf-java-2.5.0.jar -sourcepath /Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/src/main/java -doclet org.apache.hadoop.classification.tools.IncludePublicAnnotationsJDiffDoclet -docletpath /Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/target/hadoop-annotations.jar:/Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/target/jdiff.jar -apidir /Users/vinodkv/Workspace/eclipse-workspace/apache-git/hadoop/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-api/target/site/jdiff/xml -apiname hadoop-yarn-api 2.7.2 -->
<package name="org.apache.hadoop.yarn.api">
  <!-- start interface org.apache.hadoop.yarn.api.ApplicationClientProtocol -->
  <interface name="ApplicationClientProtocol"    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="org.apache.hadoop.yarn.api.ApplicationBaseProtocol"/>
    <method name="getNewApplication" return="org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>The interface used by clients to obtain a new {@link ApplicationId} for
 submitting new applications.</p>

 <p>The <code>ResourceManager</code> responds with a new, monotonically
 increasing, {@link ApplicationId} which is used by the client to submit
 a new application.</p>

 <p>The <code>ResourceManager</code> also responds with details such
 as maximum resource capabilities in the cluster as specified in
 {@link GetNewApplicationResponse}.</p>

 @param request request to get a new <code>ApplicationId</code>
 @return response containing the new <code>ApplicationId</code> to be used
 to submit an application
 @throws YarnException
 @throws IOException
 @see #submitApplication(SubmitApplicationRequest)]]>
      </doc>
    </method>
    <method name="submitApplication" return="org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>The interface used by clients to submit a new application to the
 <code>ResourceManager.</code></p>

 <p>The client is required to provide details such as queue,
 {@link Resource} required to run the <code>ApplicationMaster</code>,
 the equivalent of {@link ContainerLaunchContext} for launching
 the <code>ApplicationMaster</code> etc. via the
 {@link SubmitApplicationRequest}.</p>

 <p>Currently the <code>ResourceManager</code> sends an immediate (empty)
 {@link SubmitApplicationResponse} on accepting the submission and throws
 an exception if it rejects the submission. However, this call needs to be
 followed by {@link #getApplicationReport(GetApplicationReportRequest)}
 to make sure that the application gets properly submitted - obtaining a
 {@link SubmitApplicationResponse} from ResourceManager doesn't guarantee
 that RM 'remembers' this application beyond failover or restart. If RM
 failover or RM restart happens before ResourceManager saves the
 application's state successfully, the subsequent
 {@link #getApplicationReport(GetApplicationReportRequest)} will throw
 a {@link ApplicationNotFoundException}. The Clients need to re-submit
 the application with the same {@link ApplicationSubmissionContext} when
 it encounters the {@link ApplicationNotFoundException} on the
 {@link #getApplicationReport(GetApplicationReportRequest)} call.</p>

 <p>During the submission process, it checks whether the application
 already exists. If the application exists, it will simply return
 SubmitApplicationResponse</p>

 <p> In secure mode,the <code>ResourceManager</code> verifies access to
 queues etc. before accepting the application submission.</p>

 @param request request to submit a new application
 @return (empty) response on accepting the submission
 @throws YarnException
 @throws IOException
 @see #getNewApplication(GetNewApplicationRequest)]]>
      </doc>
    </method>
    <method name="forceKillApplication" return="org.apache.hadoop.yarn.api.protocolrecords.KillApplicationResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.KillApplicationRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>The interface used by clients to request the
 <code>ResourceManager</code> to abort submitted application.</p>

 <p>The client, via {@link KillApplicationRequest} provides the
 {@link ApplicationId} of the application to be aborted.</p>

 <p> In secure mode,the <code>ResourceManager</code> verifies access to the
 application, queue etc. before terminating the application.</p>

 <p>Currently, the <code>ResourceManager</code> returns an empty response
 on success and throws an exception on rejecting the request.</p>

 @param request request to abort a submitted application
 @return <code>ResourceManager</code> returns an empty response
         on success and throws an exception on rejecting the request
 @throws YarnException
 @throws IOException
 @see #getQueueUserAcls(GetQueueUserAclsInfoRequest)]]>
      </doc>
    </method>
    <method name="getClusterMetrics" return="org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>The interface used by clients to get metrics about the cluster from
 the <code>ResourceManager</code>.</p>

 <p>The <code>ResourceManager</code> responds with a
 {@link GetClusterMetricsResponse} which includes the
 {@link YarnClusterMetrics} with details such as number of current
 nodes in the cluster.</p>

 @param request request for cluster metrics
 @return cluster metrics
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="getClusterNodes" return="org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>The interface used by clients to get a report of all nodes
 in the cluster from the <code>ResourceManager</code>.</p>

 <p>The <code>ResourceManager</code> responds with a
 {@link GetClusterNodesResponse} which includes the
 {@link NodeReport} for all the nodes in the cluster.</p>

 @param request request for report on all nodes
 @return report on all nodes
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="getQueueInfo" return="org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>The interface used by clients to get information about <em>queues</em>
 from the <code>ResourceManager</code>.</p>

 <p>The client, via {@link GetQueueInfoRequest}, can ask for details such
 as used/total resources, child queues, running applications etc.</p>

 <p> In secure mode,the <code>ResourceManager</code> verifies access before
 providing the information.</p>

 @param request request to get queue information
 @return queue information
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="getQueueUserAcls" return="org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>The interface used by clients to get information about <em>queue
 acls</em> for <em>current user</em> from the <code>ResourceManager</code>.
 </p>

 <p>The <code>ResourceManager</code> responds with queue acls for all
 existing queues.</p>

 @param request request to get queue acls for <em>current user</em>
 @return queue acls for <em>current user</em>
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="moveApplicationAcrossQueues" return="org.apache.hadoop.yarn.api.protocolrecords.MoveApplicationAcrossQueuesResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.MoveApplicationAcrossQueuesRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[Move an application to a new queue.

 @param request the application ID and the target queue
 @return an empty response
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="submitReservation" return="org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by clients to submit a new reservation to the
 {@code ResourceManager}.
 </p>

 <p>
 The client packages all details of its request in a
 {@link ReservationSubmissionRequest} object. This contains information
 about the amount of capacity, temporal constraints, and concurrency needs.
 Furthermore, the reservation might be composed of multiple stages, with
 ordering dependencies among them.
 </p>

 <p>
 In order to respond, a new admission control component in the
 {@code ResourceManager} performs an analysis of the resources that have
 been committed over the period of time the user is requesting, verify that
 the user requests can be fulfilled, and that it respect a sharing policy
 (e.g., {@code CapacityOverTimePolicy}). Once it has positively determined
 that the ReservationSubmissionRequest is satisfiable the
 {@code ResourceManager} answers with a
 {@link ReservationSubmissionResponse} that include a non-null
 {@link ReservationId}. Upon failure to find a valid allocation the response
 is an exception with the reason.

 On application submission the client can use this {@link ReservationId} to
 obtain access to the reserved resources.
 </p>

 <p>
 The system guarantees that during the time-range specified by the user, the
 reservationID will be corresponding to a valid reservation. The amount of
 capacity dedicated to such queue can vary overtime, depending of the
 allocation that has been determined. But it is guaranteed to satisfy all
 the constraint expressed by the user in the
 {@link ReservationSubmissionRequest}.
 </p>

 @param request the request to submit a new Reservation
 @return response the {@link ReservationId} on accepting the submission
 @throws YarnException if the request is invalid or reservation cannot be
           created successfully
 @throws IOException]]>
      </doc>
    </method>
    <method name="updateReservation" return="org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by clients to update an existing Reservation. This is
 referred to as a re-negotiation process, in which a user that has
 previously submitted a Reservation.
 </p>

 <p>
 The allocation is attempted by virtually substituting all previous
 allocations related to this Reservation with new ones, that satisfy the new
 {@link ReservationUpdateRequest}. Upon success the previous allocation is
 substituted by the new one, and on failure (i.e., if the system cannot find
 a valid allocation for the updated request), the previous allocation
 remains valid.

 The {@link ReservationId} is not changed, and applications currently
 running within this reservation will automatically receive the resources
 based on the new allocation.
 </p>

 @param request to update an existing Reservation (the ReservationRequest
          should refer to an existing valid {@link ReservationId})
 @return response empty on successfully updating the existing reservation
 @throws YarnException if the request is invalid or reservation cannot be
           updated successfully
 @throws IOException]]>
      </doc>
    </method>
    <method name="deleteReservation" return="org.apache.hadoop.yarn.api.protocolrecords.ReservationDeleteResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.ReservationDeleteRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by clients to remove an existing Reservation.

 Upon deletion of a reservation applications running with this reservation,
 are automatically downgraded to normal jobs running without any dedicated
 reservation.
 </p>

 @param request to remove an existing Reservation (the ReservationRequest
          should refer to an existing valid {@link ReservationId})
 @return response empty on successfully deleting the existing reservation
 @throws YarnException if the request is invalid or reservation cannot be
           deleted successfully
 @throws IOException]]>
      </doc>
    </method>
    <method name="getNodeToLabels" return="org.apache.hadoop.yarn.api.protocolrecords.GetNodesToLabelsResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetNodesToLabelsRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by client to get node to labels mappings in existing cluster
 </p>

 @param request
 @return node to labels mappings
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="getLabelsToNodes" return="org.apache.hadoop.yarn.api.protocolrecords.GetLabelsToNodesResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetLabelsToNodesRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by client to get labels to nodes mappings
 in existing cluster
 </p>

 @param request
 @return labels to nodes mappings
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="getClusterNodeLabels" return="org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by client to get node labels in the cluster
 </p>

 @param request to get node labels collection of this cluster
 @return node labels collection of this cluster
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The protocol between clients and the <code>ResourceManager</code>
 to submit/abort jobs and to get information on applications, cluster metrics,
 nodes, queues and ACLs.</p>]]>
    </doc>
  </interface>
  <!-- end interface org.apache.hadoop.yarn.api.ApplicationClientProtocol -->
  <!-- start interface org.apache.hadoop.yarn.api.ApplicationConstants -->
  <interface name="ApplicationConstants"    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <field name="APP_SUBMIT_TIME_ENV" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The environment variable for APP_SUBMIT_TIME. Set in AppMaster environment
 only]]>
      </doc>
    </field>
    <field name="CONTAINER_TOKEN_FILE_ENV_NAME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The cache file into which container token is written]]>
      </doc>
    </field>
    <field name="APPLICATION_WEB_PROXY_BASE_ENV" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The environmental variable for APPLICATION_WEB_PROXY_BASE. Set in
 ApplicationMaster's environment only. This states that for all non-relative
 web URLs in the app masters web UI what base should they have.]]>
      </doc>
    </field>
    <field name="LOG_DIR_EXPANSION_VAR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The temporary environmental variable for container log directory. This
 should be replaced by real container log directory on container launch.]]>
      </doc>
    </field>
    <field name="CLASS_PATH_SEPARATOR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[This constant is used to construct class path and it will be replaced with
 real class path separator(':' for Linux and ';' for Windows) by
 NodeManager on container launch. User has to use this constant to construct
 class path if user wants cross-platform practice i.e. submit an application
 from a Windows client to a Linux/Unix server or vice versa.]]>
      </doc>
    </field>
    <field name="PARAMETER_EXPANSION_LEFT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The following two constants are used to expand parameter and it will be
 replaced with real parameter expansion marker ('%' for Windows and '$' for
 Linux) by NodeManager on container launch. For example: {{VAR}} will be
 replaced as $VAR on Linux, and %VAR% on Windows. User has to use this
 constant to construct class path if user wants cross-platform practice i.e.
 submit an application from a Windows client to a Linux/Unix server or vice
 versa.]]>
      </doc>
    </field>
    <field name="PARAMETER_EXPANSION_RIGHT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[User has to use this constant to construct class path if user wants
 cross-platform practice i.e. submit an application from a Windows client to
 a Linux/Unix server or vice versa.]]>
      </doc>
    </field>
    <field name="STDERR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="STDOUT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="MAX_APP_ATTEMPTS_ENV" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The environment variable for MAX_APP_ATTEMPTS. Set in AppMaster environment
 only]]>
      </doc>
    </field>
    <doc>
    <![CDATA[This is the API for the applications comprising of constants that YARN sets
 up for the applications and the containers.

 TODO: Investigate the semantics and security of each cross-boundary refs.]]>
    </doc>
  </interface>
  <!-- end interface org.apache.hadoop.yarn.api.ApplicationConstants -->
  <!-- start interface org.apache.hadoop.yarn.api.ApplicationHistoryProtocol -->
  <interface name="ApplicationHistoryProtocol"    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="org.apache.hadoop.yarn.api.ApplicationBaseProtocol"/>
    <doc>
    <![CDATA[<p>
 The protocol between clients and the <code>ApplicationHistoryServer</code> to
 get the information of completed applications etc.
 </p>]]>
    </doc>
  </interface>
  <!-- end interface org.apache.hadoop.yarn.api.ApplicationHistoryProtocol -->
  <!-- start interface org.apache.hadoop.yarn.api.ApplicationMasterProtocol -->
  <interface name="ApplicationMasterProtocol"    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <method name="registerApplicationMaster" return="org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by a new <code>ApplicationMaster</code> to register with
 the <code>ResourceManager</code>.
 </p>

 <p>
 The <code>ApplicationMaster</code> needs to provide details such as RPC
 Port, HTTP tracking url etc. as specified in
 {@link RegisterApplicationMasterRequest}.
 </p>

 <p>
 The <code>ResourceManager</code> responds with critical details such as
 maximum resource capabilities in the cluster as specified in
 {@link RegisterApplicationMasterResponse}.
 </p>

 @param request
          registration request
 @return registration respose
 @throws YarnException
 @throws IOException
 @throws InvalidApplicationMasterRequestException
           The exception is thrown when an ApplicationMaster tries to
           register more then once.
 @see RegisterApplicationMasterRequest
 @see RegisterApplicationMasterResponse]]>
      </doc>
    </method>
    <method name="finishApplicationMaster" return="org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>The interface used by an <code>ApplicationMaster</code> to notify the
 <code>ResourceManager</code> about its completion (success or failed).</p>

 <p>The <code>ApplicationMaster</code> has to provide details such as
 final state, diagnostics (in case of failures) etc. as specified in
 {@link FinishApplicationMasterRequest}.</p>

 <p>The <code>ResourceManager</code> responds with
 {@link FinishApplicationMasterResponse}.</p>

 @param request completion request
 @return completion response
 @throws YarnException
 @throws IOException
 @see FinishApplicationMasterRequest
 @see FinishApplicationMasterResponse]]>
      </doc>
    </method>
    <method name="allocate" return="org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The main interface between an <code>ApplicationMaster</code> and the
 <code>ResourceManager</code>.
 </p>

 <p>
 The <code>ApplicationMaster</code> uses this interface to provide a list of
 {@link ResourceRequest} and returns unused {@link Container} allocated to
 it via {@link AllocateRequest}. Optionally, the
 <code>ApplicationMaster</code> can also <em>blacklist</em> resources which
 it doesn't want to use.
 </p>

 <p>
 This also doubles up as a <em>heartbeat</em> to let the
 <code>ResourceManager</code> know that the <code>ApplicationMaster</code>
 is alive. Thus, applications should periodically make this call to be kept
 alive. The frequency depends on
 {@link YarnConfiguration#RM_AM_EXPIRY_INTERVAL_MS} which defaults to
 {@link YarnConfiguration#DEFAULT_RM_AM_EXPIRY_INTERVAL_MS}.
 </p>

 <p>
 The <code>ResourceManager</code> responds with list of allocated
 {@link Container}, status of completed containers and headroom information
 for the application.
 </p>

 <p>
 The <code>ApplicationMaster</code> can use the available headroom
 (resources) to decide how to utilized allocated resources and make informed
 decisions about future resource requests.
 </p>

 @param request
          allocation request
 @return allocation response
 @throws YarnException
 @throws IOException
 @throws InvalidApplicationMasterRequestException
           This exception is thrown when an ApplicationMaster calls allocate
           without registering first.
 @throws InvalidResourceBlacklistRequestException
           This exception is thrown when an application provides an invalid
           specification for blacklist of resources.
 @throws InvalidResourceRequestException
           This exception is thrown when a {@link ResourceRequest} is out of
           the range of the configured lower and upper limits on the
           resources.
 @see AllocateRequest
 @see AllocateResponse]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The protocol between a live instance of <code>ApplicationMaster</code>
 and the <code>ResourceManager</code>.</p>

 <p>This is used by the <code>ApplicationMaster</code> to register/unregister
 and to request and obtain resources in the cluster from the
 <code>ResourceManager</code>.</p>]]>
    </doc>
  </interface>
  <!-- end interface org.apache.hadoop.yarn.api.ApplicationMasterProtocol -->
  <!-- start interface org.apache.hadoop.yarn.api.ClientSCMProtocol -->
  <interface name="ClientSCMProtocol"    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <method name="use" return="org.apache.hadoop.yarn.api.protocolrecords.UseSharedCacheResourceResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.UseSharedCacheResourceRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by clients to claim a resource with the
 <code>SharedCacheManager.</code> The client uses a checksum to identify the
 resource and an {@link ApplicationId} to identify which application will be
 using the resource.
 </p>

 <p>
 The <code>SharedCacheManager</code> responds with whether or not the
 resource exists in the cache. If the resource exists, a <code>Path</code>
 to the resource in the shared cache is returned. If the resource does not
 exist, the response is empty.
 </p>

 @param request request to claim a resource in the shared cache
 @return response indicating if the resource is already in the cache
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="release" return="org.apache.hadoop.yarn.api.protocolrecords.ReleaseSharedCacheResourceResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.ReleaseSharedCacheResourceRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The interface used by clients to release a resource with the
 <code>SharedCacheManager.</code> This method is called once an application
 is no longer using a claimed resource in the shared cache. The client uses
 a checksum to identify the resource and an {@link ApplicationId} to
 identify which application is releasing the resource.
 </p>

 <p>
 Note: This method is an optimization and the client is not required to call
 it for correctness.
 </p>

 <p>
 Currently the <code>SharedCacheManager</code> sends an empty response.
 </p>

 @param request request to release a resource in the shared cache
 @return (empty) response on releasing the resource
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The protocol between clients and the <code>SharedCacheManager</code> to claim
 and release resources in the shared cache.
 </p>]]>
    </doc>
  </interface>
  <!-- end interface org.apache.hadoop.yarn.api.ClientSCMProtocol -->
  <!-- start interface org.apache.hadoop.yarn.api.ContainerManagementProtocol -->
  <interface name="ContainerManagementProtocol"    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <method name="startContainers" return="org.apache.hadoop.yarn.api.protocolrecords.StartContainersResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The <code>ApplicationMaster</code> provides a list of
 {@link StartContainerRequest}s to a <code>NodeManager</code> to
 <em>start</em> {@link Container}s allocated to it using this interface.
 </p>

 <p>
 The <code>ApplicationMaster</code> has to provide details such as allocated
 resource capability, security tokens (if enabled), command to be executed
 to start the container, environment for the process, necessary
 binaries/jar/shared-objects etc. via the {@link ContainerLaunchContext} in
 the {@link StartContainerRequest}.
 </p>

 <p>
 The <code>NodeManager</code> sends a response via
 {@link StartContainersResponse} which includes a list of
 {@link Container}s of successfully launched {@link Container}s, a
 containerId-to-exception map for each failed {@link StartContainerRequest} in
 which the exception indicates errors from per container and a
 allServicesMetaData map between the names of auxiliary services and their
 corresponding meta-data. Note: None-container-specific exceptions will
 still be thrown by the API method itself.
 </p>
 <p>
 The <code>ApplicationMaster</code> can use
 {@link #getContainerStatuses(GetContainerStatusesRequest)} to get updated
 statuses of the to-be-launched or launched containers.
 </p>

 @param request
          request to start a list of containers
 @return response including conatinerIds of all successfully launched
         containers, a containerId-to-exception map for failed requests and
         a allServicesMetaData map.
 @throws YarnException
 @throws IOException
 @throws NMNotYetReadyException
           This exception is thrown when NM starts from scratch but has not
           yet connected with RM.]]>
      </doc>
    </method>
    <method name="stopContainers" return="org.apache.hadoop.yarn.api.protocolrecords.StopContainersResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.StopContainersRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The <code>ApplicationMaster</code> requests a <code>NodeManager</code> to
 <em>stop</em> a list of {@link Container}s allocated to it using this
 interface.
 </p>

 <p>
 The <code>ApplicationMaster</code> sends a {@link StopContainersRequest}
 which includes the {@link ContainerId}s of the containers to be stopped.
 </p>

 <p>
 The <code>NodeManager</code> sends a response via
 {@link StopContainersResponse} which includes a list of {@link ContainerId}
 s of successfully stopped containers, a containerId-to-exception map for
 each failed request in which the exception indicates errors from per
 container. Note: None-container-specific exceptions will still be thrown by
 the API method itself. <code>ApplicationMaster</code> can use
 {@link #getContainerStatuses(GetContainerStatusesRequest)} to get updated
 statuses of the containers.
 </p>

 @param request
          request to stop a list of containers
 @return response which includes a list of containerIds of successfully
         stopped containers, a containerId-to-exception map for failed
         requests.
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <method name="getContainerStatuses" return="org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The API used by the <code>ApplicationMaster</code> to request for current
 statuses of <code>Container</code>s from the <code>NodeManager</code>.
 </p>

 <p>
 The <code>ApplicationMaster</code> sends a
 {@link GetContainerStatusesRequest} which includes the {@link ContainerId}s
 of all containers whose statuses are needed.
 </p>

 <p>
 The <code>NodeManager</code> responds with
 {@link GetContainerStatusesResponse} which includes a list of
 {@link ContainerStatus} of the successfully queried containers and a
 containerId-to-exception map for each failed request in which the exception
 indicates errors from per container. Note: None-container-specific
 exceptions will still be thrown by the API method itself.
 </p>

 @param request
          request to get <code>ContainerStatus</code>es of containers with
          the specified <code>ContainerId</code>s
 @return response containing the list of <code>ContainerStatus</code> of the
         successfully queried containers and a containerId-to-exception map
         for failed requests.

 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The protocol between an <code>ApplicationMaster</code> and a
 <code>NodeManager</code> to start/stop containers and to get status
 of running containers.</p>

 <p>If security is enabled the <code>NodeManager</code> verifies that the
 <code>ApplicationMaster</code> has truly been allocated the container
 by the <code>ResourceManager</code> and also verifies all interactions such
 as stopping the container or obtaining status information for the container.
 </p>]]>
    </doc>
  </interface>
  <!-- end interface org.apache.hadoop.yarn.api.ContainerManagementProtocol -->
</package>
<package name="org.apache.hadoop.yarn.api.protocolrecords">
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest -->
  <class name="AllocateRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="AllocateRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="responseID" type="int"/>
      <param name="appProgress" type="float"/>
      <param name="resourceAsk" type="java.util.List"/>
      <param name="containersToBeReleased" type="java.util.List"/>
      <param name="resourceBlacklistRequest" type="org.apache.hadoop.yarn.api.records.ResourceBlacklistRequest"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="responseID" type="int"/>
      <param name="appProgress" type="float"/>
      <param name="resourceAsk" type="java.util.List"/>
      <param name="containersToBeReleased" type="java.util.List"/>
      <param name="resourceBlacklistRequest" type="org.apache.hadoop.yarn.api.records.ResourceBlacklistRequest"/>
      <param name="increaseRequests" type="java.util.List"/>
    </method>
    <method name="getResponseId" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>response id</em> used to track duplicate responses.
 @return <em>response id</em>]]>
      </doc>
    </method>
    <method name="setResponseId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="id" type="int"/>
      <doc>
      <![CDATA[Set the <em>response id</em> used to track duplicate responses.
 @param id <em>response id</em>]]>
      </doc>
    </method>
    <method name="getProgress" return="float"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>current progress</em> of application.
 @return <em>current progress</em> of application]]>
      </doc>
    </method>
    <method name="setProgress"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="progress" type="float"/>
      <doc>
      <![CDATA[Set the <em>current progress</em> of application
 @param progress <em>current progress</em> of application]]>
      </doc>
    </method>
    <method name="getAskList" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <code>ResourceRequest</code> to update the
 <code>ResourceManager</code> about the application's resource requirements.
 @return the list of <code>ResourceRequest</code>
 @see ResourceRequest]]>
      </doc>
    </method>
    <method name="setAskList"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resourceRequests" type="java.util.List"/>
      <doc>
      <![CDATA[Set list of <code>ResourceRequest</code> to update the
 <code>ResourceManager</code> about the application's resource requirements.
 @param resourceRequests list of <code>ResourceRequest</code> to update the
                        <code>ResourceManager</code> about the application's
                        resource requirements
 @see ResourceRequest]]>
      </doc>
    </method>
    <method name="getReleaseList" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <code>ContainerId</code> of containers being
 released by the <code>ApplicationMaster</code>.
 @return list of <code>ContainerId</code> of containers being
         released by the <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="setReleaseList"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="releaseContainers" type="java.util.List"/>
      <doc>
      <![CDATA[Set the list of <code>ContainerId</code> of containers being
 released by the <code>ApplicationMaster</code>
 @param releaseContainers list of <code>ContainerId</code> of
                          containers being released by the
                          <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="getResourceBlacklistRequest" return="org.apache.hadoop.yarn.api.records.ResourceBlacklistRequest"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ResourceBlacklistRequest</code> being sent by the
 <code>ApplicationMaster</code>.
 @return the <code>ResourceBlacklistRequest</code> being sent by the
         <code>ApplicationMaster</code>
 @see ResourceBlacklistRequest]]>
      </doc>
    </method>
    <method name="setResourceBlacklistRequest"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resourceBlacklistRequest" type="org.apache.hadoop.yarn.api.records.ResourceBlacklistRequest"/>
      <doc>
      <![CDATA[Set the <code>ResourceBlacklistRequest</code> to inform the
 <code>ResourceManager</code> about the blacklist additions and removals
 per the <code>ApplicationMaster</code>.

 @param resourceBlacklistRequest the <code>ResourceBlacklistRequest</code>
                         to inform the <code>ResourceManager</code> about
                         the blacklist additions and removals
                         per the <code>ApplicationMaster</code>
 @see ResourceBlacklistRequest]]>
      </doc>
    </method>
    <method name="getIncreaseRequests" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerResourceIncreaseRequest</code> being sent by the
 <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="setIncreaseRequests"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="increaseRequests" type="java.util.List"/>
      <doc>
      <![CDATA[Set the <code>ContainerResourceIncreaseRequest</code> to inform the
 <code>ResourceManager</code> about some container's resources need to be
 increased]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The core request sent by the <code>ApplicationMaster</code> to the
 <code>ResourceManager</code> to obtain resources in the cluster.</p>

 <p>The request includes:
 <ul>
   <li>A response id to track duplicate responses.</li>
   <li>Progress information.</li>
   <li>
     A list of {@link ResourceRequest} to inform the
     <code>ResourceManager</code> about the application's
     resource requirements.
   </li>
   <li>
     A list of unused {@link Container} which are being returned.
   </li>
 </ul>

 @see ApplicationMasterProtocol#allocate(AllocateRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse -->
  <class name="AllocateResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="AllocateResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="responseId" type="int"/>
      <param name="completedContainers" type="java.util.List"/>
      <param name="allocatedContainers" type="java.util.List"/>
      <param name="updatedNodes" type="java.util.List"/>
      <param name="availResources" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="command" type="org.apache.hadoop.yarn.api.records.AMCommand"/>
      <param name="numClusterNodes" type="int"/>
      <param name="preempt" type="org.apache.hadoop.yarn.api.records.PreemptionMessage"/>
      <param name="nmTokens" type="java.util.List"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="responseId" type="int"/>
      <param name="completedContainers" type="java.util.List"/>
      <param name="allocatedContainers" type="java.util.List"/>
      <param name="updatedNodes" type="java.util.List"/>
      <param name="availResources" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="command" type="org.apache.hadoop.yarn.api.records.AMCommand"/>
      <param name="numClusterNodes" type="int"/>
      <param name="preempt" type="org.apache.hadoop.yarn.api.records.PreemptionMessage"/>
      <param name="nmTokens" type="java.util.List"/>
      <param name="increasedContainers" type="java.util.List"/>
      <param name="decreasedContainers" type="java.util.List"/>
    </method>
    <method name="getAMCommand" return="org.apache.hadoop.yarn.api.records.AMCommand"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[If the <code>ResourceManager</code> needs the
 <code>ApplicationMaster</code> to take some action then it will send an
 AMCommand to the <code>ApplicationMaster</code>. See <code>AMCommand</code>
 for details on commands and actions for them.
 @return <code>AMCommand</code> if the <code>ApplicationMaster</code> should
         take action, <code>null</code> otherwise
 @see AMCommand]]>
      </doc>
    </method>
    <method name="getResponseId" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>last response id</em>.
 @return <em>last response id</em>]]>
      </doc>
    </method>
    <method name="getAllocatedContainers" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <em>newly allocated</em> <code>Container</code> by the
 <code>ResourceManager</code>.
 @return list of <em>newly allocated</em> <code>Container</code>]]>
      </doc>
    </method>
    <method name="getAvailableResources" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>available headroom</em> for resources in the cluster for the
 application.
 @return limit of available headroom for resources in the cluster for the
 application]]>
      </doc>
    </method>
    <method name="getCompletedContainersStatuses" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <em>completed containers' statuses</em>.
 @return the list of <em>completed containers' statuses</em>]]>
      </doc>
    </method>
    <method name="getUpdatedNodes" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <em>updated <code>NodeReport</code>s</em>. Updates could
 be changes in health, availability etc of the nodes.
 @return The delta of updated nodes since the last response]]>
      </doc>
    </method>
    <method name="getNumClusterNodes" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the number of hosts available on the cluster.
 @return the available host count.]]>
      </doc>
    </method>
    <method name="getPreemptionMessage" return="org.apache.hadoop.yarn.api.records.PreemptionMessage"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the description of containers owned by the AM, but requested back by
 the cluster. Note that the RM may have an inconsistent view of the
 resources owned by the AM. These messages are advisory, and the AM may
 elect to ignore them.
 <p>
 The message is a snapshot of the resources the RM wants back from the AM.
 While demand persists, the RM will repeat its request; applications should
 not interpret each message as a request for <em>additional</em>
 resources on top of previous messages. Resources requested consistently
 over some duration may be forcibly killed by the RM.

 @return A specification of the resources to reclaim from this AM.]]>
      </doc>
    </method>
    <method name="getNMTokens" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of NMTokens required for communicating with NM. New NMTokens
 issued only if
 <p>
 1) AM is receiving first container on underlying NodeManager.<br>
 OR<br>
 2) NMToken master key rolled over in ResourceManager and AM is getting new
 container on the same underlying NodeManager.
 <p>
 AM will receive one NMToken per NM irrespective of the number of containers
 issued on same NM. AM is expected to store these tokens until issued a
 new token for the same NM.]]>
      </doc>
    </method>
    <method name="getIncreasedContainers" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of newly increased containers by <code>ResourceManager</code>]]>
      </doc>
    </method>
    <method name="getDecreasedContainers" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of newly decreased containers by <code>NodeManager</code>]]>
      </doc>
    </method>
    <method name="getAMRMToken" return="org.apache.hadoop.yarn.api.records.Token"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The AMRMToken that belong to this attempt

 @return The AMRMToken that belong to this attempt]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The response sent by the <code>ResourceManager</code> the
 <code>ApplicationMaster</code> during resource negotiation.
 <p>
 The response, includes:
 <ul>
   <li>Response ID to track duplicate responses.</li>
   <li>
     An AMCommand sent by ResourceManager to let the
     {@code ApplicationMaster} take some actions (resync, shutdown etc.).
   </li>
   <li>A list of newly allocated {@link Container}.</li>
   <li>A list of completed {@link Container}s' statuses.</li>
   <li>
     The available headroom for resources in the cluster for the
     application.
   </li>
   <li>A list of nodes whose status has been updated.</li>
   <li>The number of available nodes in a cluster.</li>
   <li>A description of resources requested back by the cluster</li>
   <li>AMRMToken, if AMRMToken has been rolled over</li>
 </ul>

 @see ApplicationMasterProtocol#allocate(AllocateRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.AllocateResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ApplicationsRequestScope -->
  <class name="ApplicationsRequestScope" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.protocolrecords.ApplicationsRequestScope[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.protocolrecords.ApplicationsRequestScope"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[Enumeration that controls the scope of applications fetched]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ApplicationsRequestScope -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest -->
  <class name="FinishApplicationMasterRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="FinishApplicationMasterRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="finalAppStatus" type="org.apache.hadoop.yarn.api.records.FinalApplicationStatus"/>
      <param name="diagnostics" type="java.lang.String"/>
      <param name="url" type="java.lang.String"/>
    </method>
    <method name="getFinalApplicationStatus" return="org.apache.hadoop.yarn.api.records.FinalApplicationStatus"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <em>final state</em> of the <code>ApplicationMaster</code>.
 @return <em>final state</em> of the <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="setFinalApplicationStatus"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="finalState" type="org.apache.hadoop.yarn.api.records.FinalApplicationStatus"/>
      <doc>
      <![CDATA[Set the <em>final state</em> of the <code>ApplicationMaster</code>
 @param finalState <em>final state</em> of the <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="getDiagnostics" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <em>diagnostic information</em> on application failure.
 @return <em>diagnostic information</em> on application failure]]>
      </doc>
    </method>
    <method name="setDiagnostics"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="diagnostics" type="java.lang.String"/>
      <doc>
      <![CDATA[Set <em>diagnostic information</em> on application failure.
 @param diagnostics <em>diagnostic information</em> on application failure]]>
      </doc>
    </method>
    <method name="getTrackingUrl" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>tracking URL</em> for the <code>ApplicationMaster</code>.
 This url if contains scheme then that will be used by resource manager
 web application proxy otherwise it will default to http.
 @return <em>tracking URL</em>for the <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="setTrackingUrl"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="url" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <em>final tracking URL</em>for the <code>ApplicationMaster</code>.
 This is the web-URL to which ResourceManager or web-application proxy will
 redirect client/users once the application is finished and the
 <code>ApplicationMaster</code> is gone.
 <p>
 If the passed url has a scheme then that will be used by the
 ResourceManager and web-application proxy, otherwise the scheme will
 default to http.
 </p>
 <p>
 Empty, null, "N/A" strings are all valid besides a real URL. In case an url
 isn't explicitly passed, it defaults to "N/A" on the ResourceManager.
 <p>

 @param url
          <em>tracking URL</em>for the <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The finalization request sent by the {@code ApplicationMaster} to
 inform the {@code ResourceManager} about its completion.
 <p>
 The final request includes details such:
 <ul>
   <li>Final state of the {@code ApplicationMaster}</li>
   <li>
     Diagnostic information in case of failure of the
     {@code ApplicationMaster}
   </li>
   <li>Tracking URL</li>
 </ul>

 @see ApplicationMasterProtocol#finishApplicationMaster(FinishApplicationMasterRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse -->
  <class name="FinishApplicationMasterResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="FinishApplicationMasterResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getIsUnregistered" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the flag which indicates that the application has successfully
 unregistered with the RM and the application can safely stop.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The response sent by the <code>ResourceManager</code> to a
 <code>ApplicationMaster</code> on it's completion.
 <p>
 The response, includes:
 <ul>
 <li>A flag which indicates that the application has successfully unregistered
 with the RM and the application can safely stop.</li>
 </ul>
 <p>
 Note: The flag indicates whether the application has successfully
 unregistered and is safe to stop. The application may stop after the flag is
 true. If the application stops before the flag is true then the RM may retry
 the application.

 @see ApplicationMasterProtocol#finishApplicationMaster(FinishApplicationMasterRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.FinishApplicationMasterResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptReportRequest -->
  <class name="GetApplicationAttemptReportRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetApplicationAttemptReportRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptReportRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationAttemptId" type="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"/>
    </method>
    <method name="getApplicationAttemptId" return="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationAttemptId</code> of an application attempt.

 @return <code>ApplicationAttemptId</code> of an application attempt]]>
      </doc>
    </method>
    <method name="setApplicationAttemptId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationAttemptId" type="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"/>
      <doc>
      <![CDATA[Set the <code>ApplicationAttemptId</code> of an application attempt

 @param applicationAttemptId
          <code>ApplicationAttemptId</code> of an application attempt]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The request sent by a client to the <code>ResourceManager</code> to get an
 {@link ApplicationAttemptReport} for an application attempt.
 </p>

 <p>
 The request should include the {@link ApplicationAttemptId} of the
 application attempt.
 </p>

 @see ApplicationAttemptReport
 @see ApplicationHistoryProtocol#getApplicationAttemptReport(GetApplicationAttemptReportRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptReportRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptReportResponse -->
  <class name="GetApplicationAttemptReportResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetApplicationAttemptReportResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptReportResponse"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="ApplicationAttemptReport" type="org.apache.hadoop.yarn.api.records.ApplicationAttemptReport"/>
    </method>
    <method name="getApplicationAttemptReport" return="org.apache.hadoop.yarn.api.records.ApplicationAttemptReport"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationAttemptReport</code> for the application attempt.

 @return <code>ApplicationAttemptReport</code> for the application attempt]]>
      </doc>
    </method>
    <method name="setApplicationAttemptReport"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationAttemptReport" type="org.apache.hadoop.yarn.api.records.ApplicationAttemptReport"/>
      <doc>
      <![CDATA[Get the <code>ApplicationAttemptReport</code> for the application attempt.

 @param applicationAttemptReport
          <code>ApplicationAttemptReport</code> for the application attempt]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The response sent by the <code>ResourceManager</code> to a client requesting
 an application attempt report.
 </p>

 <p>
 The response includes an {@link ApplicationAttemptReport} which has the
 details about the particular application attempt
 </p>

 @see ApplicationAttemptReport
 @see ApplicationHistoryProtocol#getApplicationAttemptReport(GetApplicationAttemptReportRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptReportResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptsRequest -->
  <class name="GetApplicationAttemptsRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetApplicationAttemptsRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
    </method>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of an application

 @return <code>ApplicationId</code> of an application]]>
      </doc>
    </method>
    <method name="setApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <doc>
      <![CDATA[Set the <code>ApplicationId</code> of an application

 @param applicationId
          <code>ApplicationId</code> of an application]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The request from clients to get a list of application attempt reports of an
 application from the <code>ResourceManager</code>.
 </p>

 @see ApplicationHistoryProtocol#getApplicationAttempts(GetApplicationAttemptsRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptsRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptsResponse -->
  <class name="GetApplicationAttemptsResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetApplicationAttemptsResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptsResponse"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationAttempts" type="java.util.List"/>
    </method>
    <method name="getApplicationAttemptList" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of <code>ApplicationReport</code> of an application.

 @return a list of <code>ApplicationReport</code> of an application]]>
      </doc>
    </method>
    <method name="setApplicationAttemptList"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationAttempts" type="java.util.List"/>
      <doc>
      <![CDATA[Get a list of <code>ApplicationReport</code> of an application.

 @param applicationAttempts
          a list of <code>ApplicationReport</code> of an application]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The response sent by the <code>ResourceManager</code> to a client requesting
 a list of {@link ApplicationAttemptReport} for application attempts.
 </p>

 <p>
 The <code>ApplicationAttemptReport</code> for each application includes the
 details of an application attempt.
 </p>

 @see ApplicationAttemptReport
 @see ApplicationHistoryProtocol#getApplicationAttempts(GetApplicationAttemptsRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationAttemptsResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportRequest -->
  <class name="GetApplicationReportRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetApplicationReportRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
    </method>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of the application.
 @return <code>ApplicationId</code> of the application]]>
      </doc>
    </method>
    <method name="setApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <doc>
      <![CDATA[Set the <code>ApplicationId</code> of the application
 @param applicationId <code>ApplicationId</code> of the application]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The request sent by a client to the <code>ResourceManager</code> to
 get an {@link ApplicationReport} for an application.</p>

 <p>The request should include the {@link ApplicationId} of the
 application.</p>

 @see ApplicationClientProtocol#getApplicationReport(GetApplicationReportRequest)
 @see ApplicationReport]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportResponse -->
  <class name="GetApplicationReportResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetApplicationReportResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getApplicationReport" return="org.apache.hadoop.yarn.api.records.ApplicationReport"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationReport</code> for the application.
 @return <code>ApplicationReport</code> for the application]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The response sent by the <code>ResourceManager</code> to a client
 requesting an application report.</p>

 <p>The response includes an {@link ApplicationReport} which has details such
 as user, queue, name, host on which the <code>ApplicationMaster</code> is
 running, RPC port, tracking URL, diagnostics, start time etc.</p>

 @see ApplicationClientProtocol#getApplicationReport(GetApplicationReportRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest -->
  <class name="GetApplicationsRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetApplicationsRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="scope" type="org.apache.hadoop.yarn.api.protocolrecords.ApplicationsRequestScope"/>
      <param name="users" type="java.util.Set"/>
      <param name="queues" type="java.util.Set"/>
      <param name="applicationTypes" type="java.util.Set"/>
      <param name="applicationTags" type="java.util.Set"/>
      <param name="applicationStates" type="java.util.EnumSet"/>
      <param name="startRange" type="org.apache.commons.lang.math.LongRange"/>
      <param name="finishRange" type="org.apache.commons.lang.math.LongRange"/>
      <param name="limit" type="java.lang.Long"/>
      <doc>
      <![CDATA[<p>
 The request from clients to get a report of Applications matching the
 giving application types in the cluster from the
 <code>ResourceManager</code>.
 </p>

 @see ApplicationClientProtocol#getApplications(GetApplicationsRequest)

 <p>Setting any of the parameters to null, would just disable that
 filter</p>

 @param scope {@link ApplicationsRequestScope} to filter by
 @param users list of users to filter by
 @param queues list of scheduler queues to filter by
 @param applicationTypes types of applications
 @param applicationTags application tags to filter by
 @param applicationStates application states to filter by
 @param startRange range of application start times to filter by
 @param finishRange range of application finish times to filter by
 @param limit number of applications to limit to
 @return {@link GetApplicationsRequest} to be used with
 {@link ApplicationClientProtocol#getApplications(GetApplicationsRequest)}]]>
      </doc>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="scope" type="org.apache.hadoop.yarn.api.protocolrecords.ApplicationsRequestScope"/>
      <doc>
      <![CDATA[<p>
 The request from clients to get a report of Applications matching the
 giving application types in the cluster from the
 <code>ResourceManager</code>.
 </p>

 @param scope {@link ApplicationsRequestScope} to filter by
 @see ApplicationClientProtocol#getApplications(GetApplicationsRequest)]]>
      </doc>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationTypes" type="java.util.Set"/>
      <doc>
      <![CDATA[<p>
 The request from clients to get a report of Applications matching the
 giving application types in the cluster from the
 <code>ResourceManager</code>.
 </p>


 @see ApplicationClientProtocol#getApplications(GetApplicationsRequest)]]>
      </doc>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationStates" type="java.util.EnumSet"/>
      <doc>
      <![CDATA[<p>
 The request from clients to get a report of Applications matching the
 giving application states in the cluster from the
 <code>ResourceManager</code>.
 </p>


 @see ApplicationClientProtocol#getApplications(GetApplicationsRequest)]]>
      </doc>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationTypes" type="java.util.Set"/>
      <param name="applicationStates" type="java.util.EnumSet"/>
      <doc>
      <![CDATA[<p>
 The request from clients to get a report of Applications matching the
 giving and application types and application types in the cluster from the
 <code>ResourceManager</code>.
 </p>


 @see ApplicationClientProtocol#getApplications(GetApplicationsRequest)]]>
      </doc>
    </method>
    <method name="getApplicationTypes" return="java.util.Set"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the application types to filter applications on

 @return Set of Application Types to filter on]]>
      </doc>
    </method>
    <method name="getApplicationStates" return="java.util.EnumSet"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the application states to filter applications on

 @return Set of Application states to filter on]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The request from clients to get a report of Applications
 in the cluster from the <code>ResourceManager</code>.</p>

 @see ApplicationClientProtocol#getApplications(GetApplicationsRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsResponse -->
  <class name="GetApplicationsResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetApplicationsResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getApplicationList" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <code>ApplicationReport</code> for applications.
 @return <code>ApplicationReport</code> for applications]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The response sent by the <code>ResourceManager</code> to a client
 requesting an {@link ApplicationReport} for applications.</p>

 <p>The <code>ApplicationReport</code> for each application includes details
 such as user, queue, name, host on which the <code>ApplicationMaster</code>
 is running, RPC port, tracking URL, diagnostics, start time etc.</p>

 @see ApplicationReport
 @see ApplicationClientProtocol#getApplications(GetApplicationsRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetApplicationsResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest -->
  <class name="GetClusterMetricsRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetClusterMetricsRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <doc>
    <![CDATA[<p>The request sent by clients to get cluster metrics from the
 <code>ResourceManager</code>.</p>

 <p>Currently, this is empty.</p>

 @see ApplicationClientProtocol#getClusterMetrics(GetClusterMetricsRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsResponse -->
  <class name="GetClusterMetricsResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetClusterMetricsResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getClusterMetrics" return="org.apache.hadoop.yarn.api.records.YarnClusterMetrics"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>YarnClusterMetrics</code> for the cluster.
 @return <code>YarnClusterMetrics</code> for the cluster]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The response sent by the <code>ResourceManager</code> to a client
 requesting cluster metrics.

 @see YarnClusterMetrics
 @see ApplicationClientProtocol#getClusterMetrics(GetClusterMetricsRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetClusterMetricsResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsRequest -->
  <class name="GetClusterNodeLabelsRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetClusterNodeLabelsRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsResponse -->
  <class name="GetClusterNodeLabelsResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetClusterNodeLabelsResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsResponse"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="labels" type="java.util.Set"/>
    </method>
    <method name="setNodeLabels"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="labels" type="java.util.Set"/>
    </method>
    <method name="getNodeLabels" return="java.util.Set"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesRequest -->
  <class name="GetClusterNodesRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetClusterNodesRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="states" type="java.util.EnumSet"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="getNodeStates" return="java.util.EnumSet"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The state to filter the cluster nodes with.]]>
      </doc>
    </method>
    <method name="setNodeStates"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="states" type="java.util.EnumSet"/>
      <doc>
      <![CDATA[The state to filter the cluster nodes with.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The request from clients to get a report of all nodes
 in the cluster from the <code>ResourceManager</code>.</p>

 The request will ask for all nodes in the given {@link NodeState}s.

 @see ApplicationClientProtocol#getClusterNodes(GetClusterNodesRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesResponse -->
  <class name="GetClusterNodesResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetClusterNodesResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getNodeReports" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <code>NodeReport</code> for all nodes in the cluster.
 @return <code>NodeReport</code> for all nodes in the cluster]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The response sent by the <code>ResourceManager</code> to a client
 requesting a {@link NodeReport} for all nodes.</p>

 <p>The <code>NodeReport</code> contains per-node information such as
 available resources, number of containers, tracking url, rack name, health
 status etc.

 @see NodeReport
 @see ApplicationClientProtocol#getClusterNodes(GetClusterNodesRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetContainerReportRequest -->
  <class name="GetContainerReportRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetContainerReportRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetContainerReportRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerId" type="org.apache.hadoop.yarn.api.records.ContainerId"/>
    </method>
    <method name="getContainerId" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerId</code> of the Container.

 @return <code>ContainerId</code> of the Container]]>
      </doc>
    </method>
    <method name="setContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerId" type="org.apache.hadoop.yarn.api.records.ContainerId"/>
      <doc>
      <![CDATA[Set the <code>ContainerId</code> of the container

 @param containerId
          <code>ContainerId</code> of the container]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The request sent by a client to the <code>ResourceManager</code> to get an
 {@link ContainerReport} for a container.
 </p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetContainerReportRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetContainerReportResponse -->
  <class name="GetContainerReportResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetContainerReportResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetContainerReportResponse"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerReport" type="org.apache.hadoop.yarn.api.records.ContainerReport"/>
    </method>
    <method name="getContainerReport" return="org.apache.hadoop.yarn.api.records.ContainerReport"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerReport</code> for the container.

 @return <code>ContainerReport</code> for the container]]>
      </doc>
    </method>
    <method name="setContainerReport"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerReport" type="org.apache.hadoop.yarn.api.records.ContainerReport"/>
    </method>
    <doc>
    <![CDATA[<p>
 The response sent by the <code>ResourceManager</code> to a client requesting
 a container report.
 </p>

 <p>
 The response includes a {@link ContainerReport} which has details of a
 container.
 </p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetContainerReportResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetContainersRequest -->
  <class name="GetContainersRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetContainersRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetContainersRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationAttemptId" type="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"/>
    </method>
    <method name="getApplicationAttemptId" return="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationAttemptId</code> of an application attempt.

 @return <code>ApplicationAttemptId</code> of an application attempt]]>
      </doc>
    </method>
    <method name="setApplicationAttemptId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationAttemptId" type="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"/>
      <doc>
      <![CDATA[Set the <code>ApplicationAttemptId</code> of an application attempt

 @param applicationAttemptId
          <code>ApplicationAttemptId</code> of an application attempt]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The request from clients to get a list of container reports, which belong to
 an application attempt from the <code>ResourceManager</code>.
 </p>

 @see ApplicationHistoryProtocol#getContainers(GetContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetContainersRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetContainersResponse -->
  <class name="GetContainersResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetContainersResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetContainersResponse"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containers" type="java.util.List"/>
    </method>
    <method name="getContainerList" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of <code>ContainerReport</code> for all the containers of an
 application attempt.

 @return a list of <code>ContainerReport</code> for all the containers of an
         application attempt]]>
      </doc>
    </method>
    <method name="setContainerList"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containers" type="java.util.List"/>
      <doc>
      <![CDATA[Set a list of <code>ContainerReport</code> for all the containers of an
 application attempt.

 @param containers
          a list of <code>ContainerReport</code> for all the containers of
          an application attempt]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The response sent by the <code>ResourceManager</code> to a client requesting
 a list of {@link ContainerReport} for containers.
 </p>

 <p>
 The <code>ContainerReport</code> for each container includes the container
 details.
 </p>

 @see ContainerReport
 @see ApplicationHistoryProtocol#getContainers(GetContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetContainersResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesRequest -->
  <class name="GetContainerStatusesRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetContainerStatusesRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerIds" type="java.util.List"/>
    </method>
    <method name="getContainerIds" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <code>ContainerId</code>s of containers for which to obtain
 the <code>ContainerStatus</code>.

 @return the list of <code>ContainerId</code>s of containers for which to
         obtain the <code>ContainerStatus</code>.]]>
      </doc>
    </method>
    <method name="setContainerIds"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerIds" type="java.util.List"/>
      <doc>
      <![CDATA[Set a list of <code>ContainerId</code>s of containers for which to obtain
 the <code>ContainerStatus</code>

 @param containerIds
          a list of <code>ContainerId</code>s of containers for which to
          obtain the <code>ContainerStatus</code>]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The request sent by the <code>ApplicationMaster</code> to the
 <code>NodeManager</code> to get {@link ContainerStatus} of requested
 containers.

 @see ContainerManagementProtocol#getContainerStatuses(GetContainerStatusesRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesResponse -->
  <class name="GetContainerStatusesResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetContainerStatusesResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getContainerStatuses" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerStatus</code>es of the requested containers.

 @return <code>ContainerStatus</code>es of the requested containers.]]>
      </doc>
    </method>
    <method name="getFailedRequests" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the containerId-to-exception map in which the exception indicates error
 from per container for failed requests]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The response sent by the <code>NodeManager</code> to the
 <code>ApplicationMaster</code> when asked to obtain the
 <code>ContainerStatus</code> of requested containers.

 @see ContainerManagementProtocol#getContainerStatuses(GetContainerStatusesRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetContainerStatusesResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest -->
  <class name="GetDelegationTokenRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetDelegationTokenRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="renewer" type="java.lang.String"/>
    </method>
    <method name="getRenewer" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="setRenewer"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="renewer" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[The request issued by the client to get a delegation token from
 the {@code ResourceManager}.
 for more information.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse -->
  <class name="GetDelegationTokenResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetDelegationTokenResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getRMDelegationToken" return="org.apache.hadoop.yarn.api.records.Token"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The Delegation tokens have a identifier which maps to
 {@link AbstractDelegationTokenIdentifier}.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Response to a {@link GetDelegationTokenRequest} request
 from the client. The response contains the token that
 can be used by the containers to talk to  ClientRMService.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetDelegationTokenResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationRequest -->
  <class name="GetNewApplicationRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetNewApplicationRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <doc>
    <![CDATA[<p>The request sent by clients to get a new {@link ApplicationId} for
 submitting an application.</p>

 <p>Currently, this is empty.</p>

 @see ApplicationClientProtocol#getNewApplication(GetNewApplicationRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationResponse -->
  <class name="GetNewApplicationResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetNewApplicationResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>new</em> <code>ApplicationId</code> allocated by the
 <code>ResourceManager</code>.
 @return <em>new</em> <code>ApplicationId</code> allocated by the
          <code>ResourceManager</code>]]>
      </doc>
    </method>
    <method name="getMaximumResourceCapability" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the maximum capability for any {@link Resource} allocated by the
 <code>ResourceManager</code> in the cluster.
 @return maximum capability of allocated resources in the cluster]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The response sent by the <code>ResourceManager</code> to the client for
 a request to get a new {@link ApplicationId} for submitting applications.</p>

 <p>Clients can submit an application with the returned
 {@link ApplicationId}.</p>

 @see ApplicationClientProtocol#getNewApplication(GetNewApplicationRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetNewApplicationResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoRequest -->
  <class name="GetQueueInfoRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetQueueInfoRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="queueName" type="java.lang.String"/>
      <param name="includeApplications" type="boolean"/>
      <param name="includeChildQueues" type="boolean"/>
      <param name="recursive" type="boolean"/>
    </method>
    <method name="getQueueName" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>queue name</em> for which to get queue information.
 @return <em>queue name</em> for which to get queue information]]>
      </doc>
    </method>
    <method name="setQueueName"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="queueName" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <em>queue name</em> for which to get queue information
 @param queueName <em>queue name</em> for which to get queue information]]>
      </doc>
    </method>
    <method name="getIncludeApplications" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Is information about <em>active applications</em> required?
 @return <code>true</code> if applications' information is to be included,
         else <code>false</code>]]>
      </doc>
    </method>
    <method name="setIncludeApplications"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="includeApplications" type="boolean"/>
      <doc>
      <![CDATA[Should we get fetch information about <em>active applications</em>?
 @param includeApplications fetch information about <em>active
                            applications</em>?]]>
      </doc>
    </method>
    <method name="getIncludeChildQueues" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Is information about <em>child queues</em> required?
 @return <code>true</code> if information about child queues is required,
         else <code>false</code>]]>
      </doc>
    </method>
    <method name="setIncludeChildQueues"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="includeChildQueues" type="boolean"/>
      <doc>
      <![CDATA[Should we fetch information about <em>child queues</em>?
 @param includeChildQueues fetch information about <em>child queues</em>?]]>
      </doc>
    </method>
    <method name="getRecursive" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Is information on the entire <em>child queue hierarchy</em> required?
 @return <code>true</code> if information about entire hierarchy is
         required, <code>false</code> otherwise]]>
      </doc>
    </method>
    <method name="setRecursive"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="recursive" type="boolean"/>
      <doc>
      <![CDATA[Should we fetch information on the entire <em>child queue hierarchy</em>?
 @param recursive fetch information on the entire <em>child queue
                  hierarchy</em>?]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The request sent by clients to get <em>queue information</em>
 from the <code>ResourceManager</code>.</p>

 @see ApplicationClientProtocol#getQueueInfo(GetQueueInfoRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoResponse -->
  <class name="GetQueueInfoResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetQueueInfoResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getQueueInfo" return="org.apache.hadoop.yarn.api.records.QueueInfo"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>QueueInfo</code> for the specified queue.
 @return <code>QueueInfo</code> for the specified queue]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The response sent by the {@code ResourceManager} to a client
 requesting information about queues in the system.
 <p>
 The response includes a {@link QueueInfo} which has details such as
 queue name, used/total capacities, running applications, child queues etc.

 @see QueueInfo
 @see ApplicationClientProtocol#getQueueInfo(GetQueueInfoRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoRequest -->
  <class name="GetQueueUserAclsInfoRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetQueueUserAclsInfoRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <doc>
    <![CDATA[<p>The request sent by clients to the <code>ResourceManager</code> to
 get queue acls for the <em>current user</em>.</p>

 <p>Currently, this is empty.</p>

 @see ApplicationClientProtocol#getQueueUserAcls(GetQueueUserAclsInfoRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoResponse -->
  <class name="GetQueueUserAclsInfoResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="GetQueueUserAclsInfoResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getUserAclsInfoList" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>QueueUserACLInfo</code> per queue for the user.
 @return <code>QueueUserACLInfo</code> per queue for the user]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The response sent by the <code>ResourceManager</code> to clients
 seeking queue acls for the user.</p>

 <p>The response contains a list of {@link QueueUserACLInfo} which
 provides information about {@link QueueACL} per queue.</p>

 @see QueueACL
 @see QueueUserACLInfo
 @see ApplicationClientProtocol#getQueueUserAcls(GetQueueUserAclsInfoRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.KillApplicationRequest -->
  <class name="KillApplicationRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="KillApplicationRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.KillApplicationRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
    </method>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of the application to be aborted.
 @return <code>ApplicationId</code> of the application to be aborted]]>
      </doc>
    </method>
    <method name="setApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
    </method>
    <doc>
    <![CDATA[<p>The request sent by the client to the <code>ResourceManager</code>
 to abort a submitted application.</p>

 <p>The request includes the {@link ApplicationId} of the application to be
 aborted.</p>

 @see ApplicationClientProtocol#forceKillApplication(KillApplicationRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.KillApplicationRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.KillApplicationResponse -->
  <class name="KillApplicationResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="KillApplicationResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getIsKillCompleted" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the flag which indicates that the process of killing application is completed or not.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The response sent by the <code>ResourceManager</code> to the client aborting
 a submitted application.
 <p>
 The response, includes:
 <ul>
   <li>
     A flag which indicates that the process of killing the application is
     completed or not.
   </li>
 </ul>
 Note: user is recommended to wait until this flag becomes true, otherwise if
 the <code>ResourceManager</code> crashes before the process of killing the
 application is completed, the <code>ResourceManager</code> may retry this
 application on recovery.

 @see ApplicationClientProtocol#forceKillApplication(KillApplicationRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.KillApplicationResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.MoveApplicationAcrossQueuesRequest -->
  <class name="MoveApplicationAcrossQueuesRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="MoveApplicationAcrossQueuesRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.MoveApplicationAcrossQueuesRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="appId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <param name="queue" type="java.lang.String"/>
    </method>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of the application to be moved.
 @return <code>ApplicationId</code> of the application to be moved]]>
      </doc>
    </method>
    <method name="setApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="appId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <doc>
      <![CDATA[Set the <code>ApplicationId</code> of the application to be moved.
 @param appId <code>ApplicationId</code> of the application to be moved]]>
      </doc>
    </method>
    <method name="getTargetQueue" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the queue to place the application in.
 @return the name of the queue to place the application in]]>
      </doc>
    </method>
    <method name="setTargetQueue"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="queue" type="java.lang.String"/>
      <doc>
      <![CDATA[Get the queue to place the application in.
 @param queue the name of the queue to place the application in]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The request sent by the client to the <code>ResourceManager</code>
 to move a submitted application to a different queue.</p>

 <p>The request includes the {@link ApplicationId} of the application to be
 moved and the queue to place it in.</p>

 @see ApplicationClientProtocol#moveApplicationAcrossQueues(MoveApplicationAcrossQueuesRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.MoveApplicationAcrossQueuesRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.MoveApplicationAcrossQueuesResponse -->
  <class name="MoveApplicationAcrossQueuesResponse" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="MoveApplicationAcrossQueuesResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[<p>
 The response sent by the <code>ResourceManager</code> to the client moving
 a submitted application to a different queue.
 </p>
 <p>
 A response without exception means that the move has completed successfully.
 </p>

 @see ApplicationClientProtocol#moveApplicationAcrossQueues(MoveApplicationAcrossQueuesRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.MoveApplicationAcrossQueuesResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest -->
  <class name="RegisterApplicationMasterRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="RegisterApplicationMasterRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="host" type="java.lang.String"/>
      <param name="port" type="int"/>
      <param name="trackingUrl" type="java.lang.String"/>
      <doc>
      <![CDATA[Create a new instance of <code>RegisterApplicationMasterRequest</code>.
 If <em>port, trackingUrl</em> is not used, use the following default value:
 <ul>
  <li>port: -1</li>
  <li>trackingUrl: null</li>
 </ul>
 The port is allowed to be any integer larger than or equal to -1.
 @return the new instance of <code>RegisterApplicationMasterRequest</code>]]>
      </doc>
    </method>
    <method name="getHost" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>host</em> on which the <code>ApplicationMaster</code> is
 running.
 @return <em>host</em> on which the <code>ApplicationMaster</code> is running]]>
      </doc>
    </method>
    <method name="setHost"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="host" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <em>host</em> on which the <code>ApplicationMaster</code> is
 running.
 @param host <em>host</em> on which the <code>ApplicationMaster</code>
             is running]]>
      </doc>
    </method>
    <method name="getRpcPort" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>RPC port</em> on which the {@code ApplicationMaster} is
 responding.
 @return the <em>RPC port</em> on which the {@code ApplicationMaster}
         is responding]]>
      </doc>
    </method>
    <method name="setRpcPort"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="port" type="int"/>
      <doc>
      <![CDATA[Set the <em>RPC port</em> on which the {@code ApplicationMaster} is
 responding.
 @param port <em>RPC port</em> on which the {@code ApplicationMaster}
             is responding]]>
      </doc>
    </method>
    <method name="getTrackingUrl" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>tracking URL</em> for the <code>ApplicationMaster</code>.
 This url if contains scheme then that will be used by resource manager
 web application proxy otherwise it will default to http.
 @return <em>tracking URL</em> for the <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="setTrackingUrl"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="trackingUrl" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <em>tracking URL</em>for the <code>ApplicationMaster</code> while
 it is running. This is the web-URL to which ResourceManager or
 web-application proxy will redirect client/users while the application and
 the <code>ApplicationMaster</code> are still running.
 <p>
 If the passed url has a scheme then that will be used by the
 ResourceManager and web-application proxy, otherwise the scheme will
 default to http.
 </p>
 <p>
 Empty, null, "N/A" strings are all valid besides a real URL. In case an url
 isn't explicitly passed, it defaults to "N/A" on the ResourceManager.
 <p>

 @param trackingUrl
          <em>tracking URL</em>for the <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The request sent by the {@code ApplicationMaster} to {@code ResourceManager}
 on registration.
 <p>
 The registration includes details such as:
 <ul>
   <li>Hostname on which the AM is running.</li>
   <li>RPC Port</li>
   <li>Tracking URL</li>
 </ul>

 @see ApplicationMasterProtocol#registerApplicationMaster(RegisterApplicationMasterRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse -->
  <class name="RegisterApplicationMasterResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="RegisterApplicationMasterResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getMaximumResourceCapability" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the maximum capability for any {@link Resource} allocated by the
 <code>ResourceManager</code> in the cluster.
 @return maximum capability of allocated resources in the cluster]]>
      </doc>
    </method>
    <method name="getApplicationACLs" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationACL</code>s for the application.
 @return all the <code>ApplicationACL</code>s]]>
      </doc>
    </method>
    <method name="getClientToAMTokenMasterKey" return="java.nio.ByteBuffer"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[<p>Get ClientToAMToken master key.</p>
 <p>The ClientToAMToken master key is sent to <code>ApplicationMaster</code>
 by <code>ResourceManager</code> via {@link RegisterApplicationMasterResponse}
 , used to verify corresponding ClientToAMToken.</p>]]>
      </doc>
    </method>
    <method name="setClientToAMTokenMasterKey"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="key" type="java.nio.ByteBuffer"/>
      <doc>
      <![CDATA[Set ClientToAMToken master key.]]>
      </doc>
    </method>
    <method name="getQueue" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[<p>Get the queue that the application was placed in.<p>]]>
      </doc>
    </method>
    <method name="setQueue"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="queue" type="java.lang.String"/>
      <doc>
      <![CDATA[<p>Set the queue that the application was placed in.<p>]]>
      </doc>
    </method>
    <method name="getContainersFromPreviousAttempts" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[<p>
 Get the list of running containers as viewed by
 <code>ResourceManager</code> from previous application attempts.
 </p>

 @return the list of running containers as viewed by
         <code>ResourceManager</code> from previous application attempts
 @see RegisterApplicationMasterResponse#getNMTokensFromPreviousAttempts()]]>
      </doc>
    </method>
    <method name="getNMTokensFromPreviousAttempts" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of NMTokens for communicating with the NMs where the
 containers of previous application attempts are running.

 @return the list of NMTokens for communicating with the NMs where the
         containers of previous application attempts are running.

 @see RegisterApplicationMasterResponse#getContainersFromPreviousAttempts()]]>
      </doc>
    </method>
    <method name="getSchedulerResourceTypes" return="java.util.EnumSet"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a set of the resource types considered by the scheduler.

 @return a Map of RM settings]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The response sent by the {@code ResourceManager} to a new
 {@code ApplicationMaster} on registration.
 <p>
 The response contains critical details such as:
 <ul>
   <li>Maximum capability for allocated resources in the cluster.</li>
   <li>{@code ApplicationACL}s for the application.</li>
   <li>ClientToAMToken master key.</li>
 </ul>

 @see ApplicationMasterProtocol#registerApplicationMaster(RegisterApplicationMasterRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ReleaseSharedCacheResourceRequest -->
  <class name="ReleaseSharedCacheResourceRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReleaseSharedCacheResourceRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getAppId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of the resource to be released.

 @return <code>ApplicationId</code>]]>
      </doc>
    </method>
    <method name="setAppId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="id" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <doc>
      <![CDATA[Set the <code>ApplicationId</code> of the resource to be released.

 @param id <code>ApplicationId</code>]]>
      </doc>
    </method>
    <method name="getResourceKey" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>key</code> of the resource to be released.

 @return <code>key</code>]]>
      </doc>
    </method>
    <method name="setResourceKey"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="key" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <code>key</code> of the resource to be released.

 @param key unique identifier for the resource]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The request from clients to release a resource in the shared cache.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ReleaseSharedCacheResourceRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ReleaseSharedCacheResourceResponse -->
  <class name="ReleaseSharedCacheResourceResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReleaseSharedCacheResourceResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[<p>
 The response to clients from the <code>SharedCacheManager</code> when
 releasing a resource in the shared cache.
 </p>

 <p>
 Currently, this is empty.
 </p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ReleaseSharedCacheResourceResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ReservationDeleteRequest -->
  <class name="ReservationDeleteRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReservationDeleteRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.ReservationDeleteRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationId" type="org.apache.hadoop.yarn.api.records.ReservationId"/>
    </method>
    <method name="getReservationId" return="org.apache.hadoop.yarn.api.records.ReservationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link ReservationId}, that corresponds to a valid resource
 allocation in the scheduler (between start and end time of this
 reservation)

 @return the {@link ReservationId} representing the unique id of the
         corresponding reserved resource allocation in the scheduler]]>
      </doc>
    </method>
    <method name="setReservationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationId" type="org.apache.hadoop.yarn.api.records.ReservationId"/>
      <doc>
      <![CDATA[Set the {@link ReservationId}, that correspond to a valid resource
 allocation in the scheduler (between start and end time of this
 reservation)

 @param reservationId the {@link ReservationId} representing the the unique
          id of the corresponding reserved resource allocation in the
          scheduler]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@link ReservationDeleteRequest} captures the set of requirements the user
 has to delete an existing reservation.

 @see ReservationDefinition]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ReservationDeleteRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ReservationDeleteResponse -->
  <class name="ReservationDeleteResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReservationDeleteResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[{@link ReservationDeleteResponse} contains the answer of the admission
 control system in the {@code ResourceManager} to a reservation delete
 operation. Currently response is empty if the operation was successful, if
 not an exception reporting reason for a failure.

 @see ReservationDefinition]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ReservationDeleteResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionRequest -->
  <class name="ReservationSubmissionRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReservationSubmissionRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationDefinition" type="org.apache.hadoop.yarn.api.records.ReservationDefinition"/>
      <param name="queueName" type="java.lang.String"/>
    </method>
    <method name="getReservationDefinition" return="org.apache.hadoop.yarn.api.records.ReservationDefinition"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link ReservationDefinition} representing the user constraints for
 this reservation

 @return the reservation definition representing user constraints]]>
      </doc>
    </method>
    <method name="setReservationDefinition"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationDefinition" type="org.apache.hadoop.yarn.api.records.ReservationDefinition"/>
      <doc>
      <![CDATA[Set the {@link ReservationDefinition} representing the user constraints for
 this reservation

 @param reservationDefinition the reservation request representing the
          reservation]]>
      </doc>
    </method>
    <method name="getQueue" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the name of the {@code Plan} that corresponds to the name of the
 {@link QueueInfo} in the scheduler to which the reservation will be
 submitted to.

 @return the name of the {@code Plan} that corresponds to the name of the
         {@link QueueInfo} in the scheduler to which the reservation will be
         submitted to]]>
      </doc>
    </method>
    <method name="setQueue"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="queueName" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the name of the {@code Plan} that corresponds to the name of the
 {@link QueueInfo} in the scheduler to which the reservation will be
 submitted to

 @param queueName the name of the parent {@code Plan} that corresponds to
          the name of the {@link QueueInfo} in the scheduler to which the
          reservation will be submitted to]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@link ReservationSubmissionRequest} captures the set of requirements the
 user has to create a reservation.

 @see ReservationDefinition]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionResponse -->
  <class name="ReservationSubmissionResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReservationSubmissionResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getReservationId" return="org.apache.hadoop.yarn.api.records.ReservationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link ReservationId}, that corresponds to a valid resource
 allocation in the scheduler (between start and end time of this
 reservation)

 @return the {@link ReservationId} representing the unique id of the
         corresponding reserved resource allocation in the scheduler]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@link ReservationSubmissionResponse} contains the answer of the admission
 control system in the {@code ResourceManager} to a reservation create
 operation. Response contains a {@link ReservationId} if the operation was
 successful, if not an exception reporting reason for a failure.

 @see ReservationDefinition]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ReservationSubmissionResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateRequest -->
  <class name="ReservationUpdateRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReservationUpdateRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationDefinition" type="org.apache.hadoop.yarn.api.records.ReservationDefinition"/>
      <param name="reservationId" type="org.apache.hadoop.yarn.api.records.ReservationId"/>
    </method>
    <method name="getReservationDefinition" return="org.apache.hadoop.yarn.api.records.ReservationDefinition"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link ReservationDefinition} representing the updated user
 constraints for this reservation

 @return the reservation definition representing user constraints]]>
      </doc>
    </method>
    <method name="setReservationDefinition"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationDefinition" type="org.apache.hadoop.yarn.api.records.ReservationDefinition"/>
      <doc>
      <![CDATA[Set the {@link ReservationDefinition} representing the updated user
 constraints for this reservation

 @param reservationDefinition the reservation request representing the
          reservation]]>
      </doc>
    </method>
    <method name="getReservationId" return="org.apache.hadoop.yarn.api.records.ReservationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link ReservationId}, that corresponds to a valid resource
 allocation in the scheduler (between start and end time of this
 reservation)

 @return the {@link ReservationId} representing the unique id of the
         corresponding reserved resource allocation in the scheduler]]>
      </doc>
    </method>
    <method name="setReservationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationId" type="org.apache.hadoop.yarn.api.records.ReservationId"/>
      <doc>
      <![CDATA[Set the {@link ReservationId}, that correspond to a valid resource
 allocation in the scheduler (between start and end time of this
 reservation)

 @param reservationId the {@link ReservationId} representing the the unique
          id of the corresponding reserved resource allocation in the
          scheduler]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@link ReservationUpdateRequest} captures the set of requirements the user
 has to update an existing reservation.

 @see ReservationDefinition]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateResponse -->
  <class name="ReservationUpdateResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReservationUpdateResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[{@link ReservationUpdateResponse} contains the answer of the admission
 control system in the {@code ResourceManager} to a reservation update
 operation. Currently response is empty if the operation was successful, if
 not an exception reporting reason for a failure.

 @see ReservationDefinition]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.ReservationUpdateResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest -->
  <class name="StartContainerRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="StartContainerRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="context" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <param name="container" type="org.apache.hadoop.yarn.api.records.Token"/>
    </method>
    <method name="getContainerLaunchContext" return="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerLaunchContext</code> for the container to be started
 by the <code>NodeManager</code>.

 @return <code>ContainerLaunchContext</code> for the container to be started
         by the <code>NodeManager</code>]]>
      </doc>
    </method>
    <method name="setContainerLaunchContext"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="context" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <doc>
      <![CDATA[Set the <code>ContainerLaunchContext</code> for the container to be started
 by the <code>NodeManager</code>
 @param context <code>ContainerLaunchContext</code> for the container to be
                started by the <code>NodeManager</code>]]>
      </doc>
    </method>
    <method name="getContainerToken" return="org.apache.hadoop.yarn.api.records.Token"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the container token to be used for authorization during starting
 container.
 <p>
 Note: {@link NMToken} will be used for authenticating communication with
 {@code NodeManager}.
 @return the container token to be used for authorization during starting
 container.
 @see NMToken
 @see ContainerManagementProtocol#startContainers(StartContainersRequest)]]>
      </doc>
    </method>
    <method name="setContainerToken"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="container" type="org.apache.hadoop.yarn.api.records.Token"/>
    </method>
    <doc>
    <![CDATA[<p>The request sent by the <code>ApplicationMaster</code> to the
 <code>NodeManager</code> to <em>start</em> a container.</p>

 <p>The <code>ApplicationMaster</code> has to provide details such as
 allocated resource capability, security tokens (if enabled), command
 to be executed to start the container, environment for the process,
 necessary binaries/jar/shared-objects etc. via the
 {@link ContainerLaunchContext}.</p>

 @see ContainerManagementProtocol#startContainers(StartContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.StartContainerRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest -->
  <class name="StartContainersRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="StartContainersRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="requests" type="java.util.List"/>
    </method>
    <method name="getStartContainerRequests" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of {@link StartContainerRequest} to start containers.
 @return a list of {@link StartContainerRequest} to start containers.]]>
      </doc>
    </method>
    <method name="setStartContainerRequests"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="java.util.List"/>
      <doc>
      <![CDATA[Set a list of {@link StartContainerRequest} to start containers.
 @param request a list of {@link StartContainerRequest} to start containers]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The request which contains a list of {@link StartContainerRequest} sent by
 the <code>ApplicationMaster</code> to the <code>NodeManager</code> to
 <em>start</em> containers.
 </p>

 <p>
 In each {@link StartContainerRequest}, the <code>ApplicationMaster</code> has
 to provide details such as allocated resource capability, security tokens (if
 enabled), command to be executed to start the container, environment for the
 process, necessary binaries/jar/shared-objects etc. via the
 {@link ContainerLaunchContext}.
 </p>

 @see ContainerManagementProtocol#startContainers(StartContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.StartContainersResponse -->
  <class name="StartContainersResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="StartContainersResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getSuccessfullyStartedContainers" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <code>ContainerId</code> s of the containers that are
 started successfully.

 @return the list of <code>ContainerId</code> s of the containers that are
         started successfully.
 @see ContainerManagementProtocol#startContainers(StartContainersRequest)]]>
      </doc>
    </method>
    <method name="getFailedRequests" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the containerId-to-exception map in which the exception indicates error
 from per container for failed requests]]>
      </doc>
    </method>
    <method name="getAllServicesMetaData" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[<p>
 Get the meta-data from all auxiliary services running on the
 <code>NodeManager</code>.
 </p>
 <p>
 The meta-data is returned as a Map between the auxiliary service names and
 their corresponding per service meta-data as an opaque blob
 <code>ByteBuffer</code>
 </p>

 <p>
 To be able to interpret the per-service meta-data, you should consult the
 documentation for the Auxiliary-service configured on the NodeManager
 </p>

 @return a Map between the names of auxiliary services and their
         corresponding meta-data]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The response sent by the <code>NodeManager</code> to the
 <code>ApplicationMaster</code> when asked to <em>start</em> an allocated
 container.
 </p>

 @see ContainerManagementProtocol#startContainers(StartContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.StartContainersResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.StopContainersRequest -->
  <class name="StopContainersRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="StopContainersRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.StopContainersRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerIds" type="java.util.List"/>
    </method>
    <method name="getContainerIds" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerId</code>s of the containers to be stopped.
 @return <code>ContainerId</code>s of containers to be stopped]]>
      </doc>
    </method>
    <method name="setContainerIds"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerIds" type="java.util.List"/>
      <doc>
      <![CDATA[Set the <code>ContainerId</code>s of the containers to be stopped.
 @param containerIds <code>ContainerId</code>s of the containers to be stopped]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The request sent by the <code>ApplicationMaster</code> to the
 <code>NodeManager</code> to <em>stop</em> containers.</p>

 @see ContainerManagementProtocol#stopContainers(StopContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.StopContainersRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.StopContainersResponse -->
  <class name="StopContainersResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="StopContainersResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getSuccessfullyStoppedContainers" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of containerIds of successfully stopped containers.

 @return the list of containerIds of successfully stopped containers.]]>
      </doc>
    </method>
    <method name="getFailedRequests" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the containerId-to-exception map in which the exception indicates error
 from per container for failed requests]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The response sent by the <code>NodeManager</code> to the
 <code>ApplicationMaster</code> when asked to <em>stop</em> allocated
 containers.
 </p>

 @see ContainerManagementProtocol#stopContainers(StopContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.StopContainersResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest -->
  <class name="SubmitApplicationRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="SubmitApplicationRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="context" type="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"/>
    </method>
    <method name="getApplicationSubmissionContext" return="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationSubmissionContext</code> for the application.
 @return <code>ApplicationSubmissionContext</code> for the application]]>
      </doc>
    </method>
    <method name="setApplicationSubmissionContext"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="context" type="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"/>
      <doc>
      <![CDATA[Set the <code>ApplicationSubmissionContext</code> for the application.
 @param context <code>ApplicationSubmissionContext</code> for the
                application]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>The request sent by a client to <em>submit an application</em> to the
 <code>ResourceManager</code>.</p>

 <p>The request, via {@link ApplicationSubmissionContext}, contains
 details such as queue, {@link Resource} required to run the
 <code>ApplicationMaster</code>, the equivalent of
 {@link ContainerLaunchContext} for launching the
 <code>ApplicationMaster</code> etc.

 @see ApplicationClientProtocol#submitApplication(SubmitApplicationRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationResponse -->
  <class name="SubmitApplicationResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="SubmitApplicationResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[<p>The response sent by the <code>ResourceManager</code> to a client on
 application submission.</p>

 <p>Currently, this is empty.</p>

 @see ApplicationClientProtocol#submitApplication(SubmitApplicationRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationResponse -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.UseSharedCacheResourceRequest -->
  <class name="UseSharedCacheResourceRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="UseSharedCacheResourceRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getAppId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of the resource to be used.

 @return <code>ApplicationId</code>]]>
      </doc>
    </method>
    <method name="setAppId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="id" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <doc>
      <![CDATA[Set the <code>ApplicationId</code> of the resource to be used.

 @param id <code>ApplicationId</code>]]>
      </doc>
    </method>
    <method name="getResourceKey" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>key</code> of the resource to be used.

 @return <code>key</code>]]>
      </doc>
    </method>
    <method name="setResourceKey"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="key" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <code>key</code> of the resource to be used.

 @param key unique identifier for the resource]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The request from clients to the <code>SharedCacheManager</code> that claims a
 resource in the shared cache.
 </p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.UseSharedCacheResourceRequest -->
  <!-- start class org.apache.hadoop.yarn.api.protocolrecords.UseSharedCacheResourceResponse -->
  <class name="UseSharedCacheResourceResponse" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="UseSharedCacheResourceResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getPath" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>Path</code> corresponding to the requested resource in the
 shared cache.

 @return String A <code>Path</code> if the resource exists in the shared
         cache, <code>null</code> otherwise]]>
      </doc>
    </method>
    <method name="setPath"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="p" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <code>Path</code> corresponding to a resource in the shared cache.

 @param p A <code>Path</code> corresponding to a resource in the shared
          cache]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The response from the SharedCacheManager to the client that indicates whether
 a requested resource exists in the cache.
 </p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.protocolrecords.UseSharedCacheResourceResponse -->
</package>
<package name="org.apache.hadoop.yarn.api.records">
  <!-- start class org.apache.hadoop.yarn.api.records.AMCommand -->
  <class name="AMCommand" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.AMCommand[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.AMCommand"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[Command sent by the Resource Manager to the Application Master in the
 AllocateResponse
 @see AllocateResponse]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.AMCommand -->
  <!-- start class org.apache.hadoop.yarn.api.records.ApplicationAccessType -->
  <class name="ApplicationAccessType" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.ApplicationAccessType[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.ApplicationAccessType"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[Application access types.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ApplicationAccessType -->
  <!-- start class org.apache.hadoop.yarn.api.records.ApplicationAttemptId -->
  <class name="ApplicationAttemptId" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="ApplicationAttemptId"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of the <code>ApplicationAttempId</code>.
 @return <code>ApplicationId</code> of the <code>ApplicationAttempId</code>]]>
      </doc>
    </method>
    <method name="getAttemptId" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>attempt id</code> of the <code>Application</code>.
 @return <code>attempt id</code> of the <code>Application</code>]]>
      </doc>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"/>
    </method>
    <method name="toString" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="build"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
    </method>
    <field name="appAttemptIdStrPrefix" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <doc>
    <![CDATA[<p><code>ApplicationAttemptId</code> denotes the particular <em>attempt</em>
 of an <code>ApplicationMaster</code> for a given {@link ApplicationId}.</p>

 <p>Multiple attempts might be needed to run an application to completion due
 to temporal failures of the <code>ApplicationMaster</code> such as hardware
 failures, connectivity issues etc. on the node on which it was scheduled.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ApplicationAttemptId -->
  <!-- start class org.apache.hadoop.yarn.api.records.ApplicationAttemptReport -->
  <class name="ApplicationAttemptReport" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationAttemptReport"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getYarnApplicationAttemptState" return="org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>YarnApplicationAttemptState</em> of the application attempt.

 @return <em>YarnApplicationAttemptState</em> of the application attempt]]>
      </doc>
    </method>
    <method name="getRpcPort" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>RPC port</em> of this attempt <code>ApplicationMaster</code>.

 @return <em>RPC port</em> of this attempt <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="getHost" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>host</em> on which this attempt of
 <code>ApplicationMaster</code> is running.

 @return <em>host</em> on which this attempt of
         <code>ApplicationMaster</code> is running]]>
      </doc>
    </method>
    <method name="getDiagnostics" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>diagnositic information</em> of the application attempt in case
 of errors.

 @return <em>diagnositic information</em> of the application attempt in case
         of errors]]>
      </doc>
    </method>
    <method name="getTrackingUrl" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>tracking url</em> for the application attempt.

 @return <em>tracking url</em> for the application attempt]]>
      </doc>
    </method>
    <method name="getOriginalTrackingUrl" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>original tracking url</em> for the application attempt.

 @return <em>original tracking url</em> for the application attempt]]>
      </doc>
    </method>
    <method name="getApplicationAttemptId" return="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationAttemptId</code> of this attempt of the
 application

 @return <code>ApplicationAttemptId</code> of the attempt]]>
      </doc>
    </method>
    <method name="getAMContainerId" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerId</code> of AMContainer for this attempt

 @return <code>ContainerId</code> of the attempt]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code ApplicationAttemptReport} is a report of an application attempt.
 <p>
 It includes details such as:
 <ul>
   <li>{@link ApplicationAttemptId} of the application.</li>
   <li>Host on which the <code>ApplicationMaster</code> of this attempt is
   running.</li>
   <li>RPC port of the <code>ApplicationMaster</code> of this attempt.</li>
   <li>Tracking URL.</li>
   <li>Diagnostic information in case of errors.</li>
   <li>{@link YarnApplicationAttemptState} of the application attempt.</li>
   <li>{@link ContainerId} of the master Container.</li>
 </ul>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ApplicationAttemptReport -->
  <!-- start class org.apache.hadoop.yarn.api.records.ApplicationId -->
  <class name="ApplicationId" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="ApplicationId"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getId" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the short integer identifier of the <code>ApplicationId</code>
 which is unique for all applications started by a particular instance
 of the <code>ResourceManager</code>.
 @return short integer identifier of the <code>ApplicationId</code>]]>
      </doc>
    </method>
    <method name="getClusterTimestamp" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>start time</em> of the <code>ResourceManager</code> which is
 used to generate globally unique <code>ApplicationId</code>.
 @return <em>start time</em> of the <code>ResourceManager</code>]]>
      </doc>
    </method>
    <method name="build"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
    </method>
    <method name="toString" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <field name="appIdStrPrefix" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <doc>
    <![CDATA[<p><code>ApplicationId</code> represents the <em>globally unique</em>
 identifier for an application.</p>

 <p>The globally unique nature of the identifier is achieved by using the
 <em>cluster timestamp</em> i.e. start-time of the
 <code>ResourceManager</code> along with a monotonically increasing counter
 for the application.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ApplicationId -->
  <!-- start class org.apache.hadoop.yarn.api.records.ApplicationReport -->
  <class name="ApplicationReport" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationReport"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of the application.
 @return <code>ApplicationId</code> of the application]]>
      </doc>
    </method>
    <method name="getCurrentApplicationAttemptId" return="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationAttemptId</code> of the current
 attempt of the application
 @return <code>ApplicationAttemptId</code> of the attempt]]>
      </doc>
    </method>
    <method name="getUser" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>user</em> who submitted the application.
 @return <em>user</em> who submitted the application]]>
      </doc>
    </method>
    <method name="getQueue" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>queue</em> to which the application was submitted.
 @return <em>queue</em> to which the application was submitted]]>
      </doc>
    </method>
    <method name="getName" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the user-defined <em>name</em> of the application.
 @return <em>name</em> of the application]]>
      </doc>
    </method>
    <method name="getHost" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>host</em> on which the <code>ApplicationMaster</code>
 is running.
 @return <em>host</em> on which the <code>ApplicationMaster</code>
         is running]]>
      </doc>
    </method>
    <method name="getRpcPort" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>RPC port</em> of the <code>ApplicationMaster</code>.
 @return <em>RPC port</em> of the <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="getClientToAMToken" return="org.apache.hadoop.yarn.api.records.Token"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>client token</em> for communicating with the
 <code>ApplicationMaster</code>.
 <p>
 <em>ClientToAMToken</em> is the security token used by the AMs to verify
 authenticity of any <code>client</code>.
 </p>

 <p>
 The <code>ResourceManager</code>, provides a secure token (via
 {@link ApplicationReport#getClientToAMToken()}) which is verified by the
 ApplicationMaster when the client directly talks to an AM.
 </p>
 @return <em>client token</em> for communicating with the
 <code>ApplicationMaster</code>]]>
      </doc>
    </method>
    <method name="getYarnApplicationState" return="org.apache.hadoop.yarn.api.records.YarnApplicationState"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>YarnApplicationState</code> of the application.
 @return <code>YarnApplicationState</code> of the application]]>
      </doc>
    </method>
    <method name="getDiagnostics" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get  the <em>diagnositic information</em> of the application in case of
 errors.
 @return <em>diagnositic information</em> of the application in case
         of errors]]>
      </doc>
    </method>
    <method name="getTrackingUrl" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>tracking url</em> for the application.
 @return <em>tracking url</em> for the application]]>
      </doc>
    </method>
    <method name="getStartTime" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>start time</em> of the application.
 @return <em>start time</em> of the application]]>
      </doc>
    </method>
    <method name="getFinishTime" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>finish time</em> of the application.
 @return <em>finish time</em> of the application]]>
      </doc>
    </method>
    <method name="getFinalApplicationStatus" return="org.apache.hadoop.yarn.api.records.FinalApplicationStatus"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>final finish status</em> of the application.
 @return <em>final finish status</em> of the application]]>
      </doc>
    </method>
    <method name="getApplicationResourceUsageReport" return="org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Retrieve the structure containing the job resources for this application
 @return the job resources structure for this application]]>
      </doc>
    </method>
    <method name="getProgress" return="float"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the application's progress ( range 0.0 to 1.0 )
 @return application's progress]]>
      </doc>
    </method>
    <method name="getApplicationType" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the application's Type
 @return application's Type]]>
      </doc>
    </method>
    <method name="getApplicationTags" return="java.util.Set"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get all tags corresponding to the application
 @return Application's tags]]>
      </doc>
    </method>
    <method name="getAMRMToken" return="org.apache.hadoop.yarn.api.records.Token"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the AMRM token of the application.
 <p>
 The AMRM token is required for AM to RM scheduling operations. For
 managed Application Masters Yarn takes care of injecting it. For unmanaged
 Applications Masters, the token must be obtained via this method and set
 in the {@link org.apache.hadoop.security.UserGroupInformation} of the
 current user.
 <p>
 The AMRM token will be returned only if all the following conditions are
 met:
 <ul>
   <li>the requester is the owner of the ApplicationMaster</li>
   <li>the application master is an unmanaged ApplicationMaster</li>
   <li>the application master is in ACCEPTED state</li>
 </ul>
 Else this method returns NULL.

 @return the AM to RM token if available.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code ApplicationReport} is a report of an application.
 <p>
 It includes details such as:
 <ul>
   <li>{@link ApplicationId} of the application.</li>
   <li>Applications user.</li>
   <li>Application queue.</li>
   <li>Application name.</li>
   <li>Host on which the <code>ApplicationMaster</code> is running.</li>
   <li>RPC port of the <code>ApplicationMaster</code>.</li>
   <li>Tracking URL.</li>
   <li>{@link YarnApplicationState} of the application.</li>
   <li>Diagnostic information in case of errors.</li>
   <li>Start time of the application.</li>
   <li>Client {@link Token} of the application (if security is enabled).</li>
 </ul>

 @see ApplicationClientProtocol#getApplicationReport(org.apache.hadoop.yarn.api.protocolrecords.GetApplicationReportRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ApplicationReport -->
  <!-- start class org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport -->
  <class name="ApplicationResourceUsageReport" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationResourceUsageReport"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getNumUsedContainers" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the number of used containers.  -1 for invalid/inaccessible reports.
 @return the number of used containers]]>
      </doc>
    </method>
    <method name="getUsedResources" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the used <code>Resource</code>.  -1 for invalid/inaccessible reports.
 @return the used <code>Resource</code>]]>
      </doc>
    </method>
    <method name="getReservedResources" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the reserved <code>Resource</code>.  -1 for invalid/inaccessible reports.
 @return the reserved <code>Resource</code>]]>
      </doc>
    </method>
    <method name="getNeededResources" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the needed <code>Resource</code>.  -1 for invalid/inaccessible reports.
 @return the needed <code>Resource</code>]]>
      </doc>
    </method>
    <method name="getMemorySeconds" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the aggregated amount of memory (in megabytes) the application has
 allocated times the number of seconds the application has been running.
 @return the aggregated amount of memory seconds]]>
      </doc>
    </method>
    <method name="getVcoreSeconds" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the aggregated number of vcores that the application has allocated
 times the number of seconds the application has been running.
 @return the aggregated number of vcore seconds]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Contains various scheduling metrics to be reported by UI and CLI.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ApplicationResourceUsageReport -->
  <!-- start class org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext -->
  <class name="ApplicationSubmissionContext" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationSubmissionContext"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <param name="applicationName" type="java.lang.String"/>
      <param name="queue" type="java.lang.String"/>
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="amContainer" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <param name="isUnmanagedAM" type="boolean"/>
      <param name="cancelTokensWhenComplete" type="boolean"/>
      <param name="maxAppAttempts" type="int"/>
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="applicationType" type="java.lang.String"/>
      <param name="keepContainers" type="boolean"/>
      <param name="appLabelExpression" type="java.lang.String"/>
      <param name="amContainerLabelExpression" type="java.lang.String"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <param name="applicationName" type="java.lang.String"/>
      <param name="queue" type="java.lang.String"/>
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="amContainer" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <param name="isUnmanagedAM" type="boolean"/>
      <param name="cancelTokensWhenComplete" type="boolean"/>
      <param name="maxAppAttempts" type="int"/>
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="applicationType" type="java.lang.String"/>
      <param name="keepContainers" type="boolean"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <param name="applicationName" type="java.lang.String"/>
      <param name="queue" type="java.lang.String"/>
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="amContainer" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <param name="isUnmanagedAM" type="boolean"/>
      <param name="cancelTokensWhenComplete" type="boolean"/>
      <param name="maxAppAttempts" type="int"/>
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="applicationType" type="java.lang.String"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <param name="applicationName" type="java.lang.String"/>
      <param name="queue" type="java.lang.String"/>
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="amContainer" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <param name="isUnmanagedAM" type="boolean"/>
      <param name="cancelTokensWhenComplete" type="boolean"/>
      <param name="maxAppAttempts" type="int"/>
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <param name="applicationName" type="java.lang.String"/>
      <param name="queue" type="java.lang.String"/>
      <param name="amContainer" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <param name="isUnmanagedAM" type="boolean"/>
      <param name="cancelTokensWhenComplete" type="boolean"/>
      <param name="maxAppAttempts" type="int"/>
      <param name="applicationType" type="java.lang.String"/>
      <param name="keepContainers" type="boolean"/>
      <param name="appLabelExpression" type="java.lang.String"/>
      <param name="resourceRequest" type="org.apache.hadoop.yarn.api.records.ResourceRequest"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <param name="applicationName" type="java.lang.String"/>
      <param name="queue" type="java.lang.String"/>
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="amContainer" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <param name="isUnmanagedAM" type="boolean"/>
      <param name="cancelTokensWhenComplete" type="boolean"/>
      <param name="maxAppAttempts" type="int"/>
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="applicationType" type="java.lang.String"/>
      <param name="keepContainers" type="boolean"/>
      <param name="attemptFailuresValidityInterval" type="long"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <param name="applicationName" type="java.lang.String"/>
      <param name="queue" type="java.lang.String"/>
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="amContainer" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <param name="isUnmanagedAM" type="boolean"/>
      <param name="cancelTokensWhenComplete" type="boolean"/>
      <param name="maxAppAttempts" type="int"/>
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="applicationType" type="java.lang.String"/>
      <param name="keepContainers" type="boolean"/>
      <param name="logAggregationContext" type="org.apache.hadoop.yarn.api.records.LogAggregationContext"/>
    </method>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationId</code> of the submitted application.
 @return <code>ApplicationId</code> of the submitted application]]>
      </doc>
    </method>
    <method name="setApplicationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationId" type="org.apache.hadoop.yarn.api.records.ApplicationId"/>
      <doc>
      <![CDATA[Set the <code>ApplicationId</code> of the submitted application.
 @param applicationId <code>ApplicationId</code> of the submitted
                      application]]>
      </doc>
    </method>
    <method name="getApplicationName" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the application <em>name</em>.
 @return application name]]>
      </doc>
    </method>
    <method name="setApplicationName"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationName" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the application <em>name</em>.
 @param applicationName application name]]>
      </doc>
    </method>
    <method name="getQueue" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>queue</em> to which the application is being submitted.
 @return <em>queue</em> to which the application is being submitted]]>
      </doc>
    </method>
    <method name="setQueue"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="queue" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <em>queue</em> to which the application is being submitted
 @param queue <em>queue</em> to which the application is being submitted]]>
      </doc>
    </method>
    <method name="getPriority" return="org.apache.hadoop.yarn.api.records.Priority"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>Priority</code> of the application.
 @return <code>Priority</code> of the application]]>
      </doc>
    </method>
    <method name="getAMContainerSpec" return="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerLaunchContext</code> to describe the
 <code>Container</code> with which the <code>ApplicationMaster</code> is
 launched.
 @return <code>ContainerLaunchContext</code> for the
         <code>ApplicationMaster</code> container]]>
      </doc>
    </method>
    <method name="setAMContainerSpec"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="amContainer" type="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"/>
      <doc>
      <![CDATA[Set the <code>ContainerLaunchContext</code> to describe the
 <code>Container</code> with which the <code>ApplicationMaster</code> is
 launched.
 @param amContainer <code>ContainerLaunchContext</code> for the
                    <code>ApplicationMaster</code> container]]>
      </doc>
    </method>
    <method name="getUnmanagedAM" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get if the RM should manage the execution of the AM.
 If true, then the RM
 will not allocate a container for the AM and start it. It will expect the
 AM to be launched and connect to the RM within the AM liveliness period and
 fail the app otherwise. The client should launch the AM only after the RM
 has ACCEPTED the application and changed the <code>YarnApplicationState</code>.
 Such apps will not be retried by the RM on app attempt failure.
 The default value is false.
 @return true if the AM is not managed by the RM]]>
      </doc>
    </method>
    <method name="setUnmanagedAM"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="value" type="boolean"/>
      <doc>
      <![CDATA[@param value true if RM should not manage the AM]]>
      </doc>
    </method>
    <method name="getMaxAppAttempts" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[@return the number of max attempts of the application to be submitted]]>
      </doc>
    </method>
    <method name="setMaxAppAttempts"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="maxAppAttempts" type="int"/>
      <doc>
      <![CDATA[Set the number of max attempts of the application to be submitted. WARNING:
 it should be no larger than the global number of max attempts in the Yarn
 configuration.
 @param maxAppAttempts the number of max attempts of the application
 to be submitted.]]>
      </doc>
    </method>
    <method name="getResource" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the resource required by the <code>ApplicationMaster</code> for this
 application. Please note this will be DEPRECATED, use <em>getResource</em>
 in <em>getAMContainerResourceRequest</em> instead.

 @return the resource required by the <code>ApplicationMaster</code> for
         this application.]]>
      </doc>
    </method>
    <method name="setResource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <doc>
      <![CDATA[Set the resource required by the <code>ApplicationMaster</code> for this
 application.

 @param resource the resource required by the <code>ApplicationMaster</code>
 for this application.]]>
      </doc>
    </method>
    <method name="getApplicationType" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the application type

 @return the application type]]>
      </doc>
    </method>
    <method name="setApplicationType"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="applicationType" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the application type

 @param applicationType the application type]]>
      </doc>
    </method>
    <method name="getKeepContainersAcrossApplicationAttempts" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the flag which indicates whether to keep containers across application
 attempts or not.

 @return the flag which indicates whether to keep containers across
         application attempts or not.]]>
      </doc>
    </method>
    <method name="setKeepContainersAcrossApplicationAttempts"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="keepContainers" type="boolean"/>
      <doc>
      <![CDATA[Set the flag which indicates whether to keep containers across application
 attempts.
 <p>
 If the flag is true, running containers will not be killed when application
 attempt fails and these containers will be retrieved by the new application
 attempt on registration via
 {@link ApplicationMasterProtocol#registerApplicationMaster(RegisterApplicationMasterRequest)}.
 </p>

 @param keepContainers
          the flag which indicates whether to keep containers across
          application attempts.]]>
      </doc>
    </method>
    <method name="getApplicationTags" return="java.util.Set"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get tags for the application

 @return the application tags]]>
      </doc>
    </method>
    <method name="setApplicationTags"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="tags" type="java.util.Set"/>
      <doc>
      <![CDATA[Set tags for the application. A maximum of
 {@link YarnConfiguration#APPLICATION_MAX_TAGS} are allowed
 per application. Each tag can be at most
 {@link YarnConfiguration#APPLICATION_MAX_TAG_LENGTH}
 characters, and can contain only ASCII characters.

 @param tags tags to set]]>
      </doc>
    </method>
    <method name="getNodeLabelExpression" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get node-label-expression for this app. If this is set, all containers of
 this application without setting node-label-expression in ResurceRequest
 will get allocated resources on only those nodes that satisfy this
 node-label-expression.

 If different node-label-expression of this app and ResourceRequest are set
 at the same time, the one set in ResourceRequest will be used when
 allocating container

 @return node-label-expression for this app]]>
      </doc>
    </method>
    <method name="setNodeLabelExpression"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="nodeLabelExpression" type="java.lang.String"/>
      <doc>
      <![CDATA[Set node-label-expression for this app
 @param nodeLabelExpression node-label-expression of this app]]>
      </doc>
    </method>
    <method name="getAMContainerResourceRequest" return="org.apache.hadoop.yarn.api.records.ResourceRequest"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get ResourceRequest of AM container, if this is not null, scheduler will
 use this to acquire resource for AM container.

 If this is null, scheduler will assemble a ResourceRequest by using
 <em>getResource</em> and <em>getPriority</em> of
 <em>ApplicationSubmissionContext</em>.

 Number of containers and Priority will be ignore.

 @return ResourceRequest of AM container]]>
      </doc>
    </method>
    <method name="setAMContainerResourceRequest"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.api.records.ResourceRequest"/>
      <doc>
      <![CDATA[Set ResourceRequest of AM container
 @param request of AM container]]>
      </doc>
    </method>
    <method name="getAttemptFailuresValidityInterval" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the attemptFailuresValidityInterval in milliseconds for the application

 @return the attemptFailuresValidityInterval]]>
      </doc>
    </method>
    <method name="setAttemptFailuresValidityInterval"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="attemptFailuresValidityInterval" type="long"/>
      <doc>
      <![CDATA[Set the attemptFailuresValidityInterval in milliseconds for the application
 @param attemptFailuresValidityInterval]]>
      </doc>
    </method>
    <method name="getLogAggregationContext" return="org.apache.hadoop.yarn.api.records.LogAggregationContext"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <code>LogAggregationContext</code> of the application

 @return <code>LogAggregationContext</code> of the application]]>
      </doc>
    </method>
    <method name="setLogAggregationContext"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="logAggregationContext" type="org.apache.hadoop.yarn.api.records.LogAggregationContext"/>
      <doc>
      <![CDATA[Set <code>LogAggregationContext</code> for the application

 @param logAggregationContext
          for the application]]>
      </doc>
    </method>
    <method name="getReservationID" return="org.apache.hadoop.yarn.api.records.ReservationId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the reservation id, that corresponds to a valid resource allocation in
 the scheduler (between start and end time of the corresponding reservation)

 @return the reservation id representing the unique id of the corresponding
         reserved resource allocation in the scheduler]]>
      </doc>
    </method>
    <method name="setReservationID"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationID" type="org.apache.hadoop.yarn.api.records.ReservationId"/>
      <doc>
      <![CDATA[Set the reservation id, that correspond to a valid resource allocation in
 the scheduler (between start and end time of the corresponding reservation)

 @param reservationID representing the unique id of the
          corresponding reserved resource allocation in the scheduler]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code ApplicationSubmissionContext} represents all of the
 information needed by the {@code ResourceManager} to launch
 the {@code ApplicationMaster} for an application.
 <p>
 It includes details such as:
 <ul>
   <li>{@link ApplicationId} of the application.</li>
   <li>Application user.</li>
   <li>Application name.</li>
   <li>{@link Priority} of the application.</li>
   <li>
     {@link ContainerLaunchContext} of the container in which the
     <code>ApplicationMaster</code> is executed.
   </li>
   <li>
     maxAppAttempts. The maximum number of application attempts.
     It should be no larger than the global number of max attempts in the
     Yarn configuration.
   </li>
   <li>
     attemptFailuresValidityInterval. The default value is -1.
     when attemptFailuresValidityInterval in milliseconds is set to
     {@literal >} 0, the failure number will no take failures which happen
     out of the validityInterval into failure count. If failure count
     reaches to maxAppAttempts, the application will be failed.
   </li>
   <li>Optional, application-specific {@link LogAggregationContext}</li>
 </ul>

 @see ContainerLaunchContext
 @see ApplicationClientProtocol#submitApplication(org.apache.hadoop.yarn.api.protocolrecords.SubmitApplicationRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext -->
  <!-- start class org.apache.hadoop.yarn.api.records.Container -->
  <class name="Container" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="Container"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getId" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the globally unique identifier for the container.
 @return globally unique identifier for the container]]>
      </doc>
    </method>
    <method name="getNodeId" return="org.apache.hadoop.yarn.api.records.NodeId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the identifier of the node on which the container is allocated.
 @return identifier of the node on which the container is allocated]]>
      </doc>
    </method>
    <method name="getNodeHttpAddress" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the http uri of the node on which the container is allocated.
 @return http uri of the node on which the container is allocated]]>
      </doc>
    </method>
    <method name="getResource" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>Resource</code> allocated to the container.
 @return <code>Resource</code> allocated to the container]]>
      </doc>
    </method>
    <method name="getPriority" return="org.apache.hadoop.yarn.api.records.Priority"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>Priority</code> at which the <code>Container</code> was
 allocated.
 @return <code>Priority</code> at which the <code>Container</code> was
         allocated]]>
      </doc>
    </method>
    <method name="getContainerToken" return="org.apache.hadoop.yarn.api.records.Token"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerToken</code> for the container.
 <p><code>ContainerToken</code> is the security token used by the framework
 to verify authenticity of any <code>Container</code>.</p>

 <p>The <code>ResourceManager</code>, on container allocation provides a
 secure token which is verified by the <code>NodeManager</code> on
 container launch.</p>

 <p>Applications do not need to care about <code>ContainerToken</code>, they
 are transparently handled by the framework - the allocated
 <code>Container</code> includes the <code>ContainerToken</code>.</p>

 @see ApplicationMasterProtocol#allocate(org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest)
 @see ContainerManagementProtocol#startContainers(org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest)

 @return <code>ContainerToken</code> for the container]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code Container} represents an allocated resource in the cluster.
 <p>
 The {@code ResourceManager} is the sole authority to allocate any
 {@code Container} to applications. The allocated {@code Container}
 is always on a single node and has a unique {@link ContainerId}. It has
 a specific amount of {@link Resource} allocated.
 <p>
 It includes details such as:
 <ul>
   <li>{@link ContainerId} for the container, which is globally unique.</li>
   <li>
     {@link NodeId} of the node on which it is allocated.
   </li>
   <li>HTTP uri of the node.</li>
   <li>{@link Resource} allocated to the container.</li>
   <li>{@link Priority} at which the container was allocated.</li>
   <li>
     Container {@link Token} of the container, used to securely verify
     authenticity of the allocation.
   </li>
 </ul>

 Typically, an {@code ApplicationMaster} receives the {@code Container}
 from the {@code ResourceManager} during resource-negotiation and then
 talks to the {@code NodeManager} to start/stop containers.

 @see ApplicationMasterProtocol#allocate(org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest)
 @see ContainerManagementProtocol#startContainers(org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest)
 @see ContainerManagementProtocol#stopContainers(org.apache.hadoop.yarn.api.protocolrecords.StopContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.Container -->
  <!-- start class org.apache.hadoop.yarn.api.records.ContainerExitStatus -->
  <class name="ContainerExitStatus" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerExitStatus"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <field name="SUCCESS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="INVALID" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="ABORTED" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Containers killed by the framework, either due to being released by
 the application or being 'lost' due to node failures etc.]]>
      </doc>
    </field>
    <field name="DISKS_FAILED" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[When threshold number of the nodemanager-local-directories or
 threshold number of the nodemanager-log-directories become bad.]]>
      </doc>
    </field>
    <field name="PREEMPTED" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Containers preempted by the framework.]]>
      </doc>
    </field>
    <field name="KILLED_EXCEEDED_VMEM" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Container terminated because of exceeding allocated virtual memory.]]>
      </doc>
    </field>
    <field name="KILLED_EXCEEDED_PMEM" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Container terminated because of exceeding allocated physical memory.]]>
      </doc>
    </field>
    <field name="KILLED_BY_APPMASTER" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Container was terminated by stop request by the app master.]]>
      </doc>
    </field>
    <field name="KILLED_BY_RESOURCEMANAGER" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Container was terminated by the resource manager.]]>
      </doc>
    </field>
    <field name="KILLED_AFTER_APP_COMPLETION" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Container was terminated after the application finished.]]>
      </doc>
    </field>
    <doc>
    <![CDATA[Container exit statuses indicating special exit circumstances.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ContainerExitStatus -->
  <!-- start class org.apache.hadoop.yarn.api.records.ContainerId -->
  <class name="ContainerId" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="ContainerId"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getApplicationAttemptId" return="org.apache.hadoop.yarn.api.records.ApplicationAttemptId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationAttemptId</code> of the application to which the
 <code>Container</code> was assigned.
 <p>
 Note: If containers are kept alive across application attempts via
 {@link ApplicationSubmissionContext#setKeepContainersAcrossApplicationAttempts(boolean)}
 the <code>ContainerId</code> does not necessarily contain the current
 running application attempt's <code>ApplicationAttemptId</code> This
 container can be allocated by previously exited application attempt and
 managed by the current running attempt thus have the previous application
 attempt's <code>ApplicationAttemptId</code>.
 </p>

 @return <code>ApplicationAttemptId</code> of the application to which the
         <code>Container</code> was assigned]]>
      </doc>
    </method>
    <method name="getId" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the lower 32 bits of identifier of the <code>ContainerId</code>,
 which doesn't include epoch. Note that this method will be marked as
 deprecated, so please use <code>getContainerId</code> instead.
 @return lower 32 bits of identifier of the <code>ContainerId</code>]]>
      </doc>
    </method>
    <method name="getContainerId" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the identifier of the <code>ContainerId</code>. Upper 24 bits are
 reserved as epoch of cluster, and lower 40 bits are reserved as
 sequential number of containers.
 @return identifier of the <code>ContainerId</code>]]>
      </doc>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.ContainerId"/>
    </method>
    <method name="toString" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[@return A string representation of containerId. The format is
 container_e*epoch*_*clusterTimestamp*_*appId*_*attemptId*_*containerId*
 when epoch is larger than 0
 (e.g. container_e17_1410901177871_0001_01_000005).
 *epoch* is increased when RM restarts or fails over.
 When epoch is 0, epoch is omitted
 (e.g. container_1410901177871_0001_01_000005).]]>
      </doc>
    </method>
    <method name="fromString" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerIdStr" type="java.lang.String"/>
    </method>
    <method name="build"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
    </method>
    <field name="CONTAINER_ID_BITMASK" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <doc>
    <![CDATA[<p><code>ContainerId</code> represents a globally unique identifier
 for a {@link Container} in the cluster.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ContainerId -->
  <!-- start class org.apache.hadoop.yarn.api.records.ContainerLaunchContext -->
  <class name="ContainerLaunchContext" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerLaunchContext"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ContainerLaunchContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="localResources" type="java.util.Map"/>
      <param name="environment" type="java.util.Map"/>
      <param name="commands" type="java.util.List"/>
      <param name="serviceData" type="java.util.Map"/>
      <param name="tokens" type="java.nio.ByteBuffer"/>
      <param name="acls" type="java.util.Map"/>
    </method>
    <method name="getTokens" return="java.nio.ByteBuffer"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get all the tokens needed by this container. It may include file-system
 tokens, ApplicationMaster related tokens if this container is an
 ApplicationMaster or framework level tokens needed by this container to
 communicate to various services in a secure manner.

 @return tokens needed by this container.]]>
      </doc>
    </method>
    <method name="setTokens"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="tokens" type="java.nio.ByteBuffer"/>
      <doc>
      <![CDATA[Set security tokens needed by this container.
 @param tokens security tokens]]>
      </doc>
    </method>
    <method name="getLocalResources" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <code>LocalResource</code> required by the container.
 @return all <code>LocalResource</code> required by the container]]>
      </doc>
    </method>
    <method name="setLocalResources"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="localResources" type="java.util.Map"/>
      <doc>
      <![CDATA[Set <code>LocalResource</code> required by the container. All pre-existing
 Map entries are cleared before adding the new Map
 @param localResources <code>LocalResource</code> required by the container]]>
      </doc>
    </method>
    <method name="getServiceData" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[<p>
 Get application-specific binary <em>service data</em>. This is a map keyed
 by the name of each {@link AuxiliaryService} that is configured on a
 NodeManager and value correspond to the application specific data targeted
 for the keyed {@link AuxiliaryService}.
 </p>

 <p>
 This will be used to initialize this application on the specific
 {@link AuxiliaryService} running on the NodeManager by calling
 {@link AuxiliaryService#initializeApplication(ApplicationInitializationContext)}
 </p>

 @return application-specific binary <em>service data</em>]]>
      </doc>
    </method>
    <method name="setServiceData"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="serviceData" type="java.util.Map"/>
      <doc>
      <![CDATA[<p>
 Set application-specific binary <em>service data</em>. This is a map keyed
 by the name of each {@link AuxiliaryService} that is configured on a
 NodeManager and value correspond to the application specific data targeted
 for the keyed {@link AuxiliaryService}. All pre-existing Map entries are
 preserved.
 </p>

 @param serviceData
          application-specific binary <em>service data</em>]]>
      </doc>
    </method>
    <method name="getEnvironment" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <em>environment variables</em> for the container.
 @return <em>environment variables</em> for the container]]>
      </doc>
    </method>
    <method name="setEnvironment"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="environment" type="java.util.Map"/>
      <doc>
      <![CDATA[Add <em>environment variables</em> for the container. All pre-existing Map
 entries are cleared before adding the new Map
 @param environment <em>environment variables</em> for the container]]>
      </doc>
    </method>
    <method name="getCommands" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <em>commands</em> for launching the container.
 @return the list of <em>commands</em> for launching the container]]>
      </doc>
    </method>
    <method name="setCommands"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="commands" type="java.util.List"/>
      <doc>
      <![CDATA[Add the list of <em>commands</em> for launching the container. All
 pre-existing List entries are cleared before adding the new List
 @param commands the list of <em>commands</em> for launching the container]]>
      </doc>
    </method>
    <method name="getApplicationACLs" return="java.util.Map"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ApplicationACL</code>s for the application.
 @return all the <code>ApplicationACL</code>s]]>
      </doc>
    </method>
    <method name="setApplicationACLs"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="acls" type="java.util.Map"/>
      <doc>
      <![CDATA[Set the <code>ApplicationACL</code>s for the application. All pre-existing
 Map entries are cleared before adding the new Map
 @param acls <code>ApplicationACL</code>s for the application]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code ContainerLaunchContext} represents all of the information
 needed by the {@code NodeManager} to launch a container.
 <p>
 It includes details such as:
 <ul>
   <li>{@link ContainerId} of the container.</li>
   <li>{@link Resource} allocated to the container.</li>
   <li>User to whom the container is allocated.</li>
   <li>Security tokens (if security is enabled).</li>
   <li>
     {@link LocalResource} necessary for running the container such
     as binaries, jar, shared-objects, side-files etc.
   </li>
   <li>Optional, application-specific binary service data.</li>
   <li>Environment variables for the launched process.</li>
   <li>Command to launch the container.</li>
 </ul>

 @see ContainerManagementProtocol#startContainers(org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ContainerLaunchContext -->
  <!-- start class org.apache.hadoop.yarn.api.records.ContainerReport -->
  <class name="ContainerReport" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerReport"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getContainerId" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerId</code> of the container.

 @return <code>ContainerId</code> of the container.]]>
      </doc>
    </method>
    <method name="setContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerId" type="org.apache.hadoop.yarn.api.records.ContainerId"/>
    </method>
    <method name="getAllocatedResource" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the allocated <code>Resource</code> of the container.

 @return allocated <code>Resource</code> of the container.]]>
      </doc>
    </method>
    <method name="setAllocatedResource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
    </method>
    <method name="getAssignedNode" return="org.apache.hadoop.yarn.api.records.NodeId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the allocated <code>NodeId</code> where container is running.

 @return allocated <code>NodeId</code> where container is running.]]>
      </doc>
    </method>
    <method name="setAssignedNode"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="nodeId" type="org.apache.hadoop.yarn.api.records.NodeId"/>
    </method>
    <method name="getPriority" return="org.apache.hadoop.yarn.api.records.Priority"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the allocated <code>Priority</code> of the container.

 @return allocated <code>Priority</code> of the container.]]>
      </doc>
    </method>
    <method name="setPriority"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
    </method>
    <method name="getCreationTime" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the creation time of the container.

 @return creation time of the container]]>
      </doc>
    </method>
    <method name="setCreationTime"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="creationTime" type="long"/>
    </method>
    <method name="getFinishTime" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the Finish time of the container.

 @return Finish time of the container]]>
      </doc>
    </method>
    <method name="setFinishTime"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="finishTime" type="long"/>
    </method>
    <method name="getDiagnosticsInfo" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the DiagnosticsInfo of the container.

 @return DiagnosticsInfo of the container]]>
      </doc>
    </method>
    <method name="setDiagnosticsInfo"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="diagnosticsInfo" type="java.lang.String"/>
    </method>
    <method name="getLogUrl" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the LogURL of the container.

 @return LogURL of the container]]>
      </doc>
    </method>
    <method name="setLogUrl"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="logUrl" type="java.lang.String"/>
    </method>
    <method name="getContainerState" return="org.apache.hadoop.yarn.api.records.ContainerState"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the final <code>ContainerState</code> of the container.

 @return final <code>ContainerState</code> of the container.]]>
      </doc>
    </method>
    <method name="setContainerState"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerState" type="org.apache.hadoop.yarn.api.records.ContainerState"/>
    </method>
    <method name="getContainerExitStatus" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the final <code>exit status</code> of the container.

 @return final <code>exit status</code> of the container.]]>
      </doc>
    </method>
    <method name="setContainerExitStatus"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerExitStatus" type="int"/>
    </method>
    <method name="getNodeHttpAddress" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the Node Http address of the container

 @return the node http address of the container]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code ContainerReport} is a report of an container.
 <p>
 It includes details such as:
 <ul>
   <li>{@link ContainerId} of the container.</li>
   <li>Allocated Resources to the container.</li>
   <li>Assigned Node id.</li>
   <li>Assigned Priority.</li>
   <li>Creation Time.</li>
   <li>Finish Time.</li>
   <li>Container Exit Status.</li>
   <li>{@link ContainerState} of the container.</li>
   <li>Diagnostic information in case of errors.</li>
   <li>Log URL.</li>
   <li>nodeHttpAddress</li>
 </ul>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ContainerReport -->
  <!-- start class org.apache.hadoop.yarn.api.records.ContainerResourceIncreaseRequest -->
  <class name="ContainerResourceIncreaseRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerResourceIncreaseRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ContainerResourceIncreaseRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="existingContainerId" type="org.apache.hadoop.yarn.api.records.ContainerId"/>
      <param name="targetCapability" type="org.apache.hadoop.yarn.api.records.Resource"/>
    </method>
    <method name="getContainerId" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="setContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="containerId" type="org.apache.hadoop.yarn.api.records.ContainerId"/>
    </method>
    <method name="getCapability" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="setCapability"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="capability" type="org.apache.hadoop.yarn.api.records.Resource"/>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="java.lang.Object"/>
    </method>
    <doc>
    <![CDATA[Used by Application Master, send a container resource increase request to
 Resource Manager]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ContainerResourceIncreaseRequest -->
  <!-- start class org.apache.hadoop.yarn.api.records.ContainerState -->
  <class name="ContainerState" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.ContainerState[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.ContainerState"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[<p>State of a <code>Container</code>.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ContainerState -->
  <!-- start class org.apache.hadoop.yarn.api.records.ContainerStatus -->
  <class name="ContainerStatus" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerStatus"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getContainerId" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerId</code> of the container.
 @return <code>ContainerId</code> of the container]]>
      </doc>
    </method>
    <method name="getState" return="org.apache.hadoop.yarn.api.records.ContainerState"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>ContainerState</code> of the container.
 @return <code>ContainerState</code> of the container]]>
      </doc>
    </method>
    <method name="getExitStatus" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[<p>Get the <em>exit status</em> for the container.</p>

 <p>Note: This is valid only for completed containers i.e. containers
 with state {@link ContainerState#COMPLETE}.
 Otherwise, it returns an ContainerExitStatus.INVALID.
 </p>

 <p>Containers killed by the framework, either due to being released by
 the application or being 'lost' due to node failures etc. have a special
 exit code of ContainerExitStatus.ABORTED.</p>

 <p>When threshold number of the nodemanager-local-directories or
 threshold number of the nodemanager-log-directories become bad, then
 container is not launched and is exited with ContainersExitStatus.DISKS_FAILED.
 </p>

 @return <em>exit status</em> for the container]]>
      </doc>
    </method>
    <method name="getDiagnostics" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <em>diagnostic messages</em> for failed containers.
 @return <em>diagnostic messages</em> for failed containers]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code ContainerStatus} represents the current status of a
 {@code Container}.
 <p>
 It provides details such as:
 <ul>
   <li>{@code ContainerId} of the container.</li>
   <li>{@code ContainerState} of the container.</li>
   <li><em>Exit status</em> of a completed container.</li>
   <li><em>Diagnostic</em> message for a failed container.</li>
 </ul>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ContainerStatus -->
  <!-- start class org.apache.hadoop.yarn.api.records.FinalApplicationStatus -->
  <class name="FinalApplicationStatus" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.FinalApplicationStatus[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.FinalApplicationStatus"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[Enumeration of various final states of an <code>Application</code>.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.FinalApplicationStatus -->
  <!-- start class org.apache.hadoop.yarn.api.records.LocalResource -->
  <class name="LocalResource" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="LocalResource"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.LocalResource"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="url" type="org.apache.hadoop.yarn.api.records.URL"/>
      <param name="type" type="org.apache.hadoop.yarn.api.records.LocalResourceType"/>
      <param name="visibility" type="org.apache.hadoop.yarn.api.records.LocalResourceVisibility"/>
      <param name="size" type="long"/>
      <param name="timestamp" type="long"/>
      <param name="pattern" type="java.lang.String"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.LocalResource"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="url" type="org.apache.hadoop.yarn.api.records.URL"/>
      <param name="type" type="org.apache.hadoop.yarn.api.records.LocalResourceType"/>
      <param name="visibility" type="org.apache.hadoop.yarn.api.records.LocalResourceVisibility"/>
      <param name="size" type="long"/>
      <param name="timestamp" type="long"/>
      <param name="pattern" type="java.lang.String"/>
      <param name="shouldBeUploadedToSharedCache" type="boolean"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.LocalResource"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="url" type="org.apache.hadoop.yarn.api.records.URL"/>
      <param name="type" type="org.apache.hadoop.yarn.api.records.LocalResourceType"/>
      <param name="visibility" type="org.apache.hadoop.yarn.api.records.LocalResourceVisibility"/>
      <param name="size" type="long"/>
      <param name="timestamp" type="long"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.LocalResource"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="url" type="org.apache.hadoop.yarn.api.records.URL"/>
      <param name="type" type="org.apache.hadoop.yarn.api.records.LocalResourceType"/>
      <param name="visibility" type="org.apache.hadoop.yarn.api.records.LocalResourceVisibility"/>
      <param name="size" type="long"/>
      <param name="timestamp" type="long"/>
      <param name="shouldBeUploadedToSharedCache" type="boolean"/>
    </method>
    <method name="getResource" return="org.apache.hadoop.yarn.api.records.URL"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>location</em> of the resource to be localized.
 @return <em>location</em> of the resource to be localized]]>
      </doc>
    </method>
    <method name="setResource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resource" type="org.apache.hadoop.yarn.api.records.URL"/>
      <doc>
      <![CDATA[Set <em>location</em> of the resource to be localized.
 @param resource <em>location</em> of the resource to be localized]]>
      </doc>
    </method>
    <method name="getSize" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>size</em> of the resource to be localized.
 @return <em>size</em> of the resource to be localized]]>
      </doc>
    </method>
    <method name="setSize"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="size" type="long"/>
      <doc>
      <![CDATA[Set the <em>size</em> of the resource to be localized.
 @param size <em>size</em> of the resource to be localized]]>
      </doc>
    </method>
    <method name="getTimestamp" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the original <em>timestamp</em> of the resource to be localized, used
 for verification.
 @return <em>timestamp</em> of the resource to be localized]]>
      </doc>
    </method>
    <method name="setTimestamp"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="timestamp" type="long"/>
      <doc>
      <![CDATA[Set the <em>timestamp</em> of the resource to be localized, used
 for verification.
 @param timestamp <em>timestamp</em> of the resource to be localized]]>
      </doc>
    </method>
    <method name="getType" return="org.apache.hadoop.yarn.api.records.LocalResourceType"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>LocalResourceType</code> of the resource to be localized.
 @return <code>LocalResourceType</code> of the resource to be localized]]>
      </doc>
    </method>
    <method name="setType"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="type" type="org.apache.hadoop.yarn.api.records.LocalResourceType"/>
      <doc>
      <![CDATA[Set the <code>LocalResourceType</code> of the resource to be localized.
 @param type <code>LocalResourceType</code> of the resource to be localized]]>
      </doc>
    </method>
    <method name="getVisibility" return="org.apache.hadoop.yarn.api.records.LocalResourceVisibility"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>LocalResourceVisibility</code> of the resource to be
 localized.
 @return <code>LocalResourceVisibility</code> of the resource to be
         localized]]>
      </doc>
    </method>
    <method name="setVisibility"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="visibility" type="org.apache.hadoop.yarn.api.records.LocalResourceVisibility"/>
      <doc>
      <![CDATA[Set the <code>LocalResourceVisibility</code> of the resource to be
 localized.
 @param visibility <code>LocalResourceVisibility</code> of the resource to be
                   localized]]>
      </doc>
    </method>
    <method name="getPattern" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>pattern</em> that should be used to extract entries from the
 archive (only used when type is <code>PATTERN</code>).
 @return <em>pattern</em> that should be used to extract entries from the
 archive.]]>
      </doc>
    </method>
    <method name="setPattern"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="pattern" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the <em>pattern</em> that should be used to extract entries from the
 archive (only used when type is <code>PATTERN</code>).
 @param pattern <em>pattern</em> that should be used to extract entries
 from the archive.]]>
      </doc>
    </method>
    <method name="getShouldBeUploadedToSharedCache" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[NM uses it to decide whether if it is necessary to upload the resource to
 the shared cache]]>
      </doc>
    </method>
    <method name="setShouldBeUploadedToSharedCache"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="shouldBeUploadedToSharedCache" type="boolean"/>
      <doc>
      <![CDATA[Inform NM whether upload to SCM is needed.

 @param shouldBeUploadedToSharedCache <em>shouldBeUploadedToSharedCache</em>
          of this request]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p><code>LocalResource</code> represents a local resource required to
 run a container.</p>

 <p>The <code>NodeManager</code> is responsible for localizing the resource
 prior to launching the container.</p>

 <p>Applications can specify {@link LocalResourceType} and
 {@link LocalResourceVisibility}.</p>

 @see LocalResourceType
 @see LocalResourceVisibility
 @see ContainerLaunchContext
 @see ApplicationSubmissionContext
 @see ContainerManagementProtocol#startContainers(org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.LocalResource -->
  <!-- start class org.apache.hadoop.yarn.api.records.LocalResourceType -->
  <class name="LocalResourceType" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.LocalResourceType[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.LocalResourceType"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[{@code LocalResourceType} specifies the <em>type</em>
 of a resource localized by the {@code NodeManager}.
 <p>
 The <em>type</em> can be one of:
 <ul>
   <li>
     {@link #FILE} - Regular file i.e. uninterpreted bytes.
   </li>
   <li>
     {@link #ARCHIVE} - Archive, which is automatically unarchived by the
     <code>NodeManager</code>.
   </li>
   <li>
     {@link #PATTERN} - A hybrid between {@link #ARCHIVE} and {@link #FILE}.
   </li>
 </ul>

 @see LocalResource
 @see ContainerLaunchContext
 @see ApplicationSubmissionContext
 @see ContainerManagementProtocol#startContainers(org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.LocalResourceType -->
  <!-- start class org.apache.hadoop.yarn.api.records.LocalResourceVisibility -->
  <class name="LocalResourceVisibility" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.LocalResourceVisibility[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.LocalResourceVisibility"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[{@code LocalResourceVisibility} specifies the <em>visibility</em>
 of a resource localized by the {@code NodeManager}.
 <p>
 The <em>visibility</em> can be one of:
 <ul>
   <li>{@link #PUBLIC} - Shared by all users on the node.</li>
   <li>
     {@link #PRIVATE} - Shared among all applications of the
     <em>same user</em> on the node.
   </li>
   <li>
     {@link #APPLICATION} - Shared only among containers of the
     <em>same application</em> on the node.
   </li>
 </ul>

 @see LocalResource
 @see ContainerLaunchContext
 @see ApplicationSubmissionContext
 @see ContainerManagementProtocol#startContainers(org.apache.hadoop.yarn.api.protocolrecords.StartContainersRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.LocalResourceVisibility -->
  <!-- start class org.apache.hadoop.yarn.api.records.LogAggregationContext -->
  <class name="LogAggregationContext" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="LogAggregationContext"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.LogAggregationContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="includePattern" type="java.lang.String"/>
      <param name="excludePattern" type="java.lang.String"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.LogAggregationContext"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="includePattern" type="java.lang.String"/>
      <param name="excludePattern" type="java.lang.String"/>
      <param name="rolledLogsIncludePattern" type="java.lang.String"/>
      <param name="rolledLogsExcludePattern" type="java.lang.String"/>
    </method>
    <method name="getIncludePattern" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get include pattern. This includePattern only takes affect
 on logs that exist at the time of application finish.

 @return include pattern]]>
      </doc>
    </method>
    <method name="setIncludePattern"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="includePattern" type="java.lang.String"/>
      <doc>
      <![CDATA[Set include pattern. This includePattern only takes affect
 on logs that exist at the time of application finish.

 @param includePattern]]>
      </doc>
    </method>
    <method name="getExcludePattern" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get exclude pattern. This excludePattern only takes affect
 on logs that exist at the time of application finish.

 @return exclude pattern]]>
      </doc>
    </method>
    <method name="setExcludePattern"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="excludePattern" type="java.lang.String"/>
      <doc>
      <![CDATA[Set exclude pattern. This excludePattern only takes affect
 on logs that exist at the time of application finish.

 @param excludePattern]]>
      </doc>
    </method>
    <method name="getRolledLogsIncludePattern" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get include pattern in a rolling fashion.

 @return include pattern]]>
      </doc>
    </method>
    <method name="setRolledLogsIncludePattern"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="rolledLogsIncludePattern" type="java.lang.String"/>
      <doc>
      <![CDATA[Set include pattern in a rolling fashion.

 @param rolledLogsIncludePattern]]>
      </doc>
    </method>
    <method name="getRolledLogsExcludePattern" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get exclude pattern for aggregation in a rolling fashion.

 @return exclude pattern]]>
      </doc>
    </method>
    <method name="setRolledLogsExcludePattern"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="rolledLogsExcludePattern" type="java.lang.String"/>
      <doc>
      <![CDATA[Set exclude pattern for in a rolling fashion.

 @param rolledLogsExcludePattern]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code LogAggregationContext} represents all of the
 information needed by the {@code NodeManager} to handle
 the logs for an application.
 <p>
 It includes details such as:
 <ul>
   <li>
     includePattern. It uses Java Regex to filter the log files
     which match the defined include pattern and those log files
     will be uploaded when the application finishes.
   </li>
   <li>
     excludePattern. It uses Java Regex to filter the log files
     which match the defined exclude pattern and those log files
     will not be uploaded when application finishes. If the log file
     name matches both the include and the exclude pattern, this file
     will be excluded eventually.
   </li>
   <li>
     rolledLogsIncludePattern. It uses Java Regex to filter the log files
     which match the defined include pattern and those log files
     will be aggregated in a rolling fashion.
   </li>
   <li>
     rolledLogsExcludePattern. It uses Java Regex to filter the log files
     which match the defined exclude pattern and those log files
     will not be aggregated in a rolling fashion. If the log file
     name matches both the include and the exclude pattern, this file
     will be excluded eventually.
   </li>
 </ul>

 @see ApplicationSubmissionContext]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.LogAggregationContext -->
  <!-- start class org.apache.hadoop.yarn.api.records.NMToken -->
  <class name="NMToken" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="NMToken"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getNodeId" return="org.apache.hadoop.yarn.api.records.NodeId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link NodeId} of the <code>NodeManager</code> for which the NMToken
 is used to authenticate.
 @return the {@link NodeId} of the <code>NodeManager</code> for which the
 NMToken is used to authenticate.]]>
      </doc>
    </method>
    <method name="setNodeId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="nodeId" type="org.apache.hadoop.yarn.api.records.NodeId"/>
    </method>
    <method name="getToken" return="org.apache.hadoop.yarn.api.records.Token"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link Token} used for authenticating with <code>NodeManager</code>
 @return the {@link Token} used for authenticating with <code>NodeManager</code>]]>
      </doc>
    </method>
    <method name="setToken"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="token" type="org.apache.hadoop.yarn.api.records.Token"/>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <doc>
    <![CDATA[<p>The NMToken is used for authenticating communication with
 <code>NodeManager</code></p>
 <p>It is issued by <code>ResourceMananger</code> when <code>ApplicationMaster</code>
 negotiates resource with <code>ResourceManager</code> and
 validated on <code>NodeManager</code> side.</p>
 @see  AllocateResponse#getNMTokens()]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.NMToken -->
  <!-- start class org.apache.hadoop.yarn.api.records.NodeId -->
  <class name="NodeId" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="NodeId"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getHost" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>hostname</em> of the node.
 @return <em>hostname</em> of the node]]>
      </doc>
    </method>
    <method name="getPort" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>port</em> for communicating with the node.
 @return <em>port</em> for communicating with the node]]>
      </doc>
    </method>
    <method name="toString" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.NodeId"/>
    </method>
    <method name="build"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
    </method>
    <doc>
    <![CDATA[<p><code>NodeId</code> is the unique identifier for a node.</p>

 <p>It includes the <em>hostname</em> and <em>port</em> to uniquely
 identify the node. Thus, it is unique across restarts of any
 <code>NodeManager</code>.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.NodeId -->
  <!-- start class org.apache.hadoop.yarn.api.records.NodeReport -->
  <class name="NodeReport" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="NodeReport"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getNodeId" return="org.apache.hadoop.yarn.api.records.NodeId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>NodeId</code> of the node.
 @return <code>NodeId</code> of the node]]>
      </doc>
    </method>
    <method name="getNodeState" return="org.apache.hadoop.yarn.api.records.NodeState"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>NodeState</code> of the node.
 @return <code>NodeState</code> of the node]]>
      </doc>
    </method>
    <method name="getHttpAddress" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>http address</em> of the node.
 @return <em>http address</em> of the node]]>
      </doc>
    </method>
    <method name="getRackName" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>rack name</em> for the node.
 @return <em>rack name</em> for the node]]>
      </doc>
    </method>
    <method name="getUsed" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <em>used</em> <code>Resource</code> on the node.
 @return <em>used</em> <code>Resource</code> on the node]]>
      </doc>
    </method>
    <method name="getCapability" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>total</em> <code>Resource</code> on the node.
 @return <em>total</em> <code>Resource</code> on the node]]>
      </doc>
    </method>
    <method name="getHealthReport" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>diagnostic health report</em> of the node.
 @return <em>diagnostic health report</em> of the node]]>
      </doc>
    </method>
    <method name="getLastHealthReportTime" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>last timestamp</em> at which the health report was received.
 @return <em>last timestamp</em> at which the health report was received]]>
      </doc>
    </method>
    <method name="getNodeLabels" return="java.util.Set"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get labels of this node
 @return labels of this node]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@code NodeReport} is a summary of runtime information of a node
 in the cluster.
 <p>
 It includes details such as:
 <ul>
   <li>{@link NodeId} of the node.</li>
   <li>HTTP Tracking URL of the node.</li>
   <li>Rack name for the node.</li>
   <li>Used {@link Resource} on the node.</li>
   <li>Total available {@link Resource} of the node.</li>
   <li>Number of running containers on the node.</li>
 </ul>

 @see ApplicationClientProtocol#getClusterNodes(org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodesRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.NodeReport -->
  <!-- start class org.apache.hadoop.yarn.api.records.NodeState -->
  <class name="NodeState" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.NodeState[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.NodeState"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <method name="isUnusable" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <doc>
    <![CDATA[<p>State of a <code>Node</code>.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.NodeState -->
  <!-- start class org.apache.hadoop.yarn.api.records.PreemptionContainer -->
  <class name="PreemptionContainer" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="PreemptionContainer"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getId" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[@return Container referenced by this handle.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Specific container requested back by the <code>ResourceManager</code>.
 @see PreemptionContract
 @see StrictPreemptionContract]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.PreemptionContainer -->
  <!-- start class org.apache.hadoop.yarn.api.records.PreemptionContract -->
  <class name="PreemptionContract" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="PreemptionContract"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getResourceRequest" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[If the AM releases resources matching these requests, then the {@link
 PreemptionContainer}s enumerated in {@link #getContainers()} should not be
 evicted from the cluster. Due to delays in propagating cluster state and
 sending these messages, there are conditions where satisfied contracts may
 not prevent the platform from killing containers.
 @return List of {@link PreemptionResourceRequest} to update the
 <code>ApplicationMaster</code> about resources requested back by the
 <code>ResourceManager</code>.
 @see AllocateRequest#setAskList(List)]]>
      </doc>
    </method>
    <method name="getContainers" return="java.util.Set"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Assign the set of {@link PreemptionContainer} specifying which containers
 owned by the <code>ApplicationMaster</code> that may be reclaimed by the
 <code>ResourceManager</code>. If the AM prefers a different set of
 containers, then it may checkpoint or kill containers matching the
 description in {@link #getResourceRequest}.
 @return Set of containers at risk if the contract is not met.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Description of resources requested back by the <code>ResourceManager</code>.
 The <code>ApplicationMaster</code> (AM) can satisfy this request according
 to its own priorities to prevent containers from being forcibly killed by
 the platform.
 @see PreemptionMessage]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.PreemptionContract -->
  <!-- start class org.apache.hadoop.yarn.api.records.PreemptionMessage -->
  <class name="PreemptionMessage" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="PreemptionMessage"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getStrictContract" return="org.apache.hadoop.yarn.api.records.StrictPreemptionContract"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[@return Specific resources that may be killed by the
 <code>ResourceManager</code>]]>
      </doc>
    </method>
    <method name="getContract" return="org.apache.hadoop.yarn.api.records.PreemptionContract"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[@return Contract describing resources to return to the cluster.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[A {@link PreemptionMessage} is part of the RM-AM protocol, and it is used by
 the RM to specify resources that the RM wants to reclaim from this
 {@code ApplicationMaster} (AM). The AM receives a {@link
 StrictPreemptionContract} message encoding which containers the platform may
 forcibly kill, granting it an opportunity to checkpoint state or adjust its
 execution plan. The message may also include a {@link PreemptionContract}
 granting the AM more latitude in selecting which resources to return to the
 cluster.
 <p>
 The AM should decode both parts of the message. The {@link
 StrictPreemptionContract} specifies particular allocations that the RM
 requires back. The AM can checkpoint containers' state, adjust its execution
 plan to move the computation, or take no action and hope that conditions that
 caused the RM to ask for the container will change.
 <p>
 In contrast, the {@link PreemptionContract} also includes a description of
 resources with a set of containers. If the AM releases containers matching
 that profile, then the containers enumerated in {@link
 PreemptionContract#getContainers()} may not be killed.
 <p>
 Each preemption message reflects the RM's current understanding of the
 cluster state, so a request to return <em>N</em> containers may not
 reflect containers the AM is releasing, recently exited containers the RM has
 yet to learn about, or new containers allocated before the message was
 generated. Conversely, an RM may request a different profile of containers in
 subsequent requests.
 <p>
 The policy enforced by the RM is part of the scheduler. Generally, only
 containers that have been requested consistently should be killed, but the
 details are not specified.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.PreemptionMessage -->
  <!-- start class org.apache.hadoop.yarn.api.records.PreemptionResourceRequest -->
  <class name="PreemptionResourceRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="PreemptionResourceRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getResourceRequest" return="org.apache.hadoop.yarn.api.records.ResourceRequest"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[@return Resource described in this request, to be matched against running
 containers.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Description of resources requested back by the cluster.
 @see PreemptionContract
 @see AllocateRequest#setAskList(java.util.List)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.PreemptionResourceRequest -->
  <!-- start class org.apache.hadoop.yarn.api.records.Priority -->
  <class name="Priority" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="Priority"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.Priority"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="p" type="int"/>
    </method>
    <method name="getPriority" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the assigned priority
 @return the assigned priority]]>
      </doc>
    </method>
    <method name="setPriority"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="priority" type="int"/>
      <doc>
      <![CDATA[Set the assigned priority
 @param priority the assigned priority]]>
      </doc>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.Priority"/>
    </method>
    <method name="toString" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <field name="UNDEFINED" type="org.apache.hadoop.yarn.api.records.Priority"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <doc>
    <![CDATA[The priority assigned to a ResourceRequest or Application or Container
 allocation]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.Priority -->
  <!-- start class org.apache.hadoop.yarn.api.records.QueueACL -->
  <class name="QueueACL" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.QueueACL[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.QueueACL"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[{@code QueueACL} enumerates the various ACLs for queues.
 <p>
 The ACL is one of:
 <ul>
   <li>
     {@link #SUBMIT_APPLICATIONS} - ACL to submit applications to the queue.
   </li>
   <li>{@link #ADMINISTER_QUEUE} - ACL to administer the queue.</li>
 </ul>

 @see QueueInfo
 @see ApplicationClientProtocol#getQueueUserAcls(org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.QueueACL -->
  <!-- start class org.apache.hadoop.yarn.api.records.QueueInfo -->
  <class name="QueueInfo" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="QueueInfo"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getQueueName" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>name</em> of the queue.
 @return <em>name</em> of the queue]]>
      </doc>
    </method>
    <method name="getCapacity" return="float"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>configured capacity</em> of the queue.
 @return <em>configured capacity</em> of the queue]]>
      </doc>
    </method>
    <method name="getMaximumCapacity" return="float"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>maximum capacity</em> of the queue.
 @return <em>maximum capacity</em> of the queue]]>
      </doc>
    </method>
    <method name="getCurrentCapacity" return="float"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>current capacity</em> of the queue.
 @return <em>current capacity</em> of the queue]]>
      </doc>
    </method>
    <method name="getChildQueues" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>child queues</em> of the queue.
 @return <em>child queues</em> of the queue]]>
      </doc>
    </method>
    <method name="getApplications" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>running applications</em> of the queue.
 @return <em>running applications</em> of the queue]]>
      </doc>
    </method>
    <method name="getQueueState" return="org.apache.hadoop.yarn.api.records.QueueState"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>QueueState</code> of the queue.
 @return <code>QueueState</code> of the queue]]>
      </doc>
    </method>
    <method name="getAccessibleNodeLabels" return="java.util.Set"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>accessible node labels</code> of the queue.
 @return <code>accessible node labels</code> of the queue]]>
      </doc>
    </method>
    <method name="getDefaultNodeLabelExpression" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>default node label expression</code> of the queue, this takes
 affect only when the <code>ApplicationSubmissionContext</code> and
 <code>ResourceRequest</code> don't specify their
 <code>NodeLabelExpression</code>.

 @return <code>default node label expression</code> of the queue]]>
      </doc>
    </method>
    <method name="setDefaultNodeLabelExpression"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="defaultLabelExpression" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[QueueInfo is a report of the runtime information of the queue.
 <p>
 It includes information such as:
 <ul>
   <li>Queue name.</li>
   <li>Capacity of the queue.</li>
   <li>Maximum capacity of the queue.</li>
   <li>Current capacity of the queue.</li>
   <li>Child queues.</li>
   <li>Running applications.</li>
   <li>{@link QueueState} of the queue.</li>
 </ul>

 @see QueueState
 @see ApplicationClientProtocol#getQueueInfo(org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.QueueInfo -->
  <!-- start class org.apache.hadoop.yarn.api.records.QueueState -->
  <class name="QueueState" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.QueueState[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.QueueState"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[State of a Queue.
 <p>
 A queue is in one of:
 <ul>
   <li>{@link #RUNNING} - normal state.</li>
   <li>{@link #STOPPED} - not accepting new application submissions.</li>
 </ul>

 @see QueueInfo
 @see ApplicationClientProtocol#getQueueInfo(org.apache.hadoop.yarn.api.protocolrecords.GetQueueInfoRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.QueueState -->
  <!-- start class org.apache.hadoop.yarn.api.records.QueueUserACLInfo -->
  <class name="QueueUserACLInfo" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="QueueUserACLInfo"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getQueueName" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>queue name</em> of the queue.
 @return <em>queue name</em> of the queue]]>
      </doc>
    </method>
    <method name="getUserAcls" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of <code>QueueACL</code> for the given user.
 @return list of <code>QueueACL</code> for the given user]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p><code>QueueUserACLInfo</code> provides information {@link QueueACL} for
 the given user.</p>

 @see QueueACL
 @see ApplicationClientProtocol#getQueueUserAcls(org.apache.hadoop.yarn.api.protocolrecords.GetQueueUserAclsInfoRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.QueueUserACLInfo -->
  <!-- start class org.apache.hadoop.yarn.api.records.ReservationDefinition -->
  <class name="ReservationDefinition" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReservationDefinition"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ReservationDefinition"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="arrival" type="long"/>
      <param name="deadline" type="long"/>
      <param name="reservationRequests" type="org.apache.hadoop.yarn.api.records.ReservationRequests"/>
      <param name="name" type="java.lang.String"/>
    </method>
    <method name="getArrival" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the arrival time or the earliest time from which the resource(s) can be
 allocated. Time expressed as UTC.

 @return the earliest valid time for this reservation]]>
      </doc>
    </method>
    <method name="setArrival"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="earliestStartTime" type="long"/>
      <doc>
      <![CDATA[Set the arrival time or the earliest time from which the resource(s) can be
 allocated. Time expressed as UTC.

 @param earliestStartTime the earliest valid time for this reservation]]>
      </doc>
    </method>
    <method name="getDeadline" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the deadline or the latest time by when the resource(s) must be
 allocated. Time expressed as UTC.

 @return the deadline or the latest time by when the resource(s) must be
         allocated]]>
      </doc>
    </method>
    <method name="setDeadline"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="latestEndTime" type="long"/>
      <doc>
      <![CDATA[Set the deadline or the latest time by when the resource(s) must be
 allocated. Time expressed as UTC.

 @param latestEndTime the deadline or the latest time by when the
          resource(s) should be allocated]]>
      </doc>
    </method>
    <method name="getReservationRequests" return="org.apache.hadoop.yarn.api.records.ReservationRequests"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of {@link ReservationRequests} representing the resources
 required by the application

 @return the list of {@link ReservationRequests}]]>
      </doc>
    </method>
    <method name="setReservationRequests"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationRequests" type="org.apache.hadoop.yarn.api.records.ReservationRequests"/>
      <doc>
      <![CDATA[Set the list of {@link ReservationRequests} representing the resources
 required by the application

 @param reservationRequests the list of {@link ReservationRequests}]]>
      </doc>
    </method>
    <method name="getReservationName" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the name for this reservation. The name need-not be unique, and it is
 just a mnemonic for the user (akin to job names). Accepted reservations are
 uniquely identified by a system-generated ReservationId.

 @return string representing the name of the corresponding reserved resource
         allocation in the scheduler]]>
      </doc>
    </method>
    <method name="setReservationName"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the name for this reservation. The name need-not be unique, and it is
 just a mnemonic for the user (akin to job names). Accepted reservations are
 uniquely identified by a system-generated ReservationId.

 @param name representing the name of the corresponding reserved resource
          allocation in the scheduler]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@link ReservationDefinition} captures the set of resource and time
 constraints the user cares about regarding a reservation.

 @see ResourceRequest]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ReservationDefinition -->
  <!-- start class org.apache.hadoop.yarn.api.records.ReservationId -->
  <class name="ReservationId" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="ReservationId"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getId" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the long identifier of the {@link ReservationId} which is unique for
 all Reservations started by a particular instance of the
 {@code ResourceManager}.

 @return long identifier of the {@link ReservationId}]]>
      </doc>
    </method>
    <method name="getClusterTimestamp" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <em>start time</em> of the {@code ResourceManager} which is used to
 generate globally unique {@link ReservationId}.

 @return <em>start time</em> of the {@code ResourceManager}]]>
      </doc>
    </method>
    <method name="build"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.ReservationId"/>
    </method>
    <method name="toString" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="parseReservationId" return="org.apache.hadoop.yarn.api.records.ReservationId"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationId" type="java.lang.String"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[Parse the string argument as a {@link ReservationId}

 @param reservationId the string representation of the {@link ReservationId}
 @return the {@link ReservationId} corresponding to the input string if
         valid, null if input is null
 @throws IOException if unable to parse the input string]]>
      </doc>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <field name="reserveIdStrPrefix" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="clusterTimestamp" type="long"
      transient="false" volatile="false"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
    </field>
    <field name="id" type="long"
      transient="false" volatile="false"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
    </field>
    <doc>
    <![CDATA[<p>
 {@link ReservationId} represents the <em>globally unique</em> identifier for
 a reservation.
 </p>

 <p>
 The globally unique nature of the identifier is achieved by using the
 <em>cluster timestamp</em> i.e. start-time of the {@code ResourceManager}
 along with a monotonically increasing counter for the reservation.
 </p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ReservationId -->
  <!-- start class org.apache.hadoop.yarn.api.records.ReservationRequest -->
  <class name="ReservationRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="ReservationRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ReservationRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="capability" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="numContainers" type="int"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ReservationRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="capability" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="numContainers" type="int"/>
      <param name="concurrency" type="int"/>
      <param name="duration" type="long"/>
    </method>
    <method name="getCapability" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link Resource} capability of the request.

 @return {@link Resource} capability of the request]]>
      </doc>
    </method>
    <method name="setCapability"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="capability" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <doc>
      <![CDATA[Set the {@link Resource} capability of the request

 @param capability {@link Resource} capability of the request]]>
      </doc>
    </method>
    <method name="getNumContainers" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the number of containers required with the given specifications.

 @return number of containers required with the given specifications]]>
      </doc>
    </method>
    <method name="setNumContainers"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="numContainers" type="int"/>
      <doc>
      <![CDATA[Set the number of containers required with the given specifications

 @param numContainers number of containers required with the given
          specifications]]>
      </doc>
    </method>
    <method name="getConcurrency" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the number of containers that need to be scheduled concurrently. The
 default value of 1 would fall back to the current non concurrency
 constraints on the scheduling behavior.

 @return the number of containers to be concurrently scheduled]]>
      </doc>
    </method>
    <method name="setConcurrency"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="numContainers" type="int"/>
      <doc>
      <![CDATA[Set the number of containers that need to be scheduled concurrently. The
 default value of 1 would fall back to the current non concurrency
 constraints on the scheduling behavior.

 @param numContainers the number of containers to be concurrently scheduled]]>
      </doc>
    </method>
    <method name="getDuration" return="long"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the duration in milliseconds for which the resource is required. A
 default value of -1, indicates an unspecified lease duration, and fallback
 to current behavior.

 @return the duration in milliseconds for which the resource is required]]>
      </doc>
    </method>
    <method name="setDuration"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="duration" type="long"/>
      <doc>
      <![CDATA[Set the duration in milliseconds for which the resource is required.

 @param duration the duration in milliseconds for which the resource is
          required]]>
      </doc>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.ReservationRequest"/>
    </method>
    <doc>
    <![CDATA[{@link ReservationRequest} represents the request made by an application to
 the {@code ResourceManager} to reserve {@link Resource}s.
 <p>
 It includes:
 <ul>
   <li>{@link Resource} required for each request.</li>
   <li>
     Number of containers, of above specifications, which are required by the
     application.
   </li>
   <li>Concurrency that indicates the gang size of the request.</li>
 </ul>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ReservationRequest -->
  <!-- start class org.apache.hadoop.yarn.api.records.ReservationRequest.ReservationRequestComparator -->
  <class name="ReservationRequest.ReservationRequestComparator" extends="java.lang.Object"
    abstract="false"
    static="true" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.util.Comparator"/>
    <implements name="java.io.Serializable"/>
    <constructor name="ReservationRequestComparator"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="compare" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="r1" type="org.apache.hadoop.yarn.api.records.ReservationRequest"/>
      <param name="r2" type="org.apache.hadoop.yarn.api.records.ReservationRequest"/>
    </method>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ReservationRequest.ReservationRequestComparator -->
  <!-- start class org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter -->
  <class name="ReservationRequestInterpreter" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[Enumeration of various types of dependencies among multiple
 {@link ReservationRequests} within one {@link ReservationDefinition} (from
 least constraining to most constraining).]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter -->
  <!-- start class org.apache.hadoop.yarn.api.records.ReservationRequests -->
  <class name="ReservationRequests" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ReservationRequests"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ReservationRequests"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationResources" type="java.util.List"/>
      <param name="type" type="org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter"/>
    </method>
    <method name="getReservationResources" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of {@link ReservationRequest} representing the resources
 required by the application

 @return the list of {@link ReservationRequest}]]>
      </doc>
    </method>
    <method name="setReservationResources"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="reservationResources" type="java.util.List"/>
      <doc>
      <![CDATA[Set the list of {@link ReservationRequest} representing the resources
 required by the application

 @param reservationResources the list of {@link ReservationRequest}]]>
      </doc>
    </method>
    <method name="getInterpreter" return="org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the {@link ReservationRequestInterpreter}, representing how the list of
 resources should be allocated, this captures temporal ordering and other
 constraints.

 @return the list of {@link ReservationRequestInterpreter}]]>
      </doc>
    </method>
    <method name="setInterpreter"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="interpreter" type="org.apache.hadoop.yarn.api.records.ReservationRequestInterpreter"/>
      <doc>
      <![CDATA[Set the {@link ReservationRequestInterpreter}, representing how the list of
 resources should be allocated, this captures temporal ordering and other
 constraints.

 @param interpreter the {@link ReservationRequestInterpreter} for this
          reservation]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@link ReservationRequests} captures the set of resource and constraints the
 user cares about regarding a reservation.

 @see ReservationRequest]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ReservationRequests -->
  <!-- start class org.apache.hadoop.yarn.api.records.Resource -->
  <class name="Resource" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="Resource"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="memory" type="int"/>
      <param name="vCores" type="int"/>
    </method>
    <method name="getMemory" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <em>memory</em> of the resource.
 @return <em>memory</em> of the resource]]>
      </doc>
    </method>
    <method name="setMemory"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="memory" type="int"/>
      <doc>
      <![CDATA[Set <em>memory</em> of the resource.
 @param memory <em>memory</em> of the resource]]>
      </doc>
    </method>
    <method name="getVirtualCores" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get <em>number of virtual cpu cores</em> of the resource.

 Virtual cores are a unit for expressing CPU parallelism. A node's capacity
 should be configured with virtual cores equal to its number of physical cores.
 A container should be requested with the number of cores it can saturate, i.e.
 the average number of threads it expects to have runnable at a time.

 @return <em>num of virtual cpu cores</em> of the resource]]>
      </doc>
    </method>
    <method name="setVirtualCores"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="vCores" type="int"/>
      <doc>
      <![CDATA[Set <em>number of virtual cpu cores</em> of the resource.

 Virtual cores are a unit for expressing CPU parallelism. A node's capacity
 should be configured with virtual cores equal to its number of physical cores.
 A container should be requested with the number of cores it can saturate, i.e.
 the average number of threads it expects to have runnable at a time.

 @param vCores <em>number of virtual cpu cores</em> of the resource]]>
      </doc>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <method name="toString" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <doc>
    <![CDATA[<p><code>Resource</code> models a set of computer resources in the
 cluster.</p>

 <p>Currently it models both <em>memory</em> and <em>CPU</em>.</p>

 <p>The unit for memory is megabytes. CPU is modeled with virtual cores
 (vcores), a unit for expressing parallelism. A node's capacity should
 be configured with virtual cores equal to its number of physical cores. A
 container should be requested with the number of cores it can saturate, i.e.
 the average number of threads it expects to have runnable at a time.</p>

 <p>Virtual cores take integer values and thus currently CPU-scheduling is
 very coarse.  A complementary axis for CPU requests that represents processing
 power will likely be added in the future to enable finer-grained resource
 configuration.</p>

 <p>Typically, applications request <code>Resource</code> of suitable
 capability to run their component tasks.</p>

 @see ResourceRequest
 @see ApplicationMasterProtocol#allocate(org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.Resource -->
  <!-- start class org.apache.hadoop.yarn.api.records.ResourceBlacklistRequest -->
  <class name="ResourceBlacklistRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ResourceBlacklistRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ResourceBlacklistRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="additions" type="java.util.List"/>
      <param name="removals" type="java.util.List"/>
    </method>
    <method name="getBlacklistAdditions" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of resource-names which should be added to the
 application blacklist.

 @return list of resource-names which should be added to the
         application blacklist]]>
      </doc>
    </method>
    <method name="setBlacklistAdditions"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resourceNames" type="java.util.List"/>
      <doc>
      <![CDATA[Set list of resource-names which should be added to the application blacklist.

 @param resourceNames list of resource-names which should be added to the
                  application blacklist]]>
      </doc>
    </method>
    <method name="getBlacklistRemovals" return="java.util.List"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the list of resource-names which should be removed from the
 application blacklist.

 @return list of resource-names which should be removed from the
         application blacklist]]>
      </doc>
    </method>
    <method name="setBlacklistRemovals"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resourceNames" type="java.util.List"/>
      <doc>
      <![CDATA[Set list of resource-names which should be removed from the
 application blacklist.

 @param resourceNames list of resource-names which should be removed from the
                  application blacklist]]>
      </doc>
    </method>
    <doc>
    <![CDATA[{@link ResourceBlacklistRequest} encapsulates the list of resource-names
 which should be added or removed from the <em>blacklist</em> of resources
 for the application.

 @see ResourceRequest
 @see ApplicationMasterProtocol#allocate(org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ResourceBlacklistRequest -->
  <!-- start class org.apache.hadoop.yarn.api.records.ResourceOption -->
  <class name="ResourceOption" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ResourceOption"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ResourceOption"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resource" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="overCommitTimeout" type="int"/>
    </method>
    <method name="toString" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ResourceOption -->
  <!-- start class org.apache.hadoop.yarn.api.records.ResourceRequest -->
  <class name="ResourceRequest" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="ResourceRequest"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ResourceRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="hostName" type="java.lang.String"/>
      <param name="capability" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="numContainers" type="int"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ResourceRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="hostName" type="java.lang.String"/>
      <param name="capability" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="numContainers" type="int"/>
      <param name="relaxLocality" type="boolean"/>
    </method>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.ResourceRequest"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <param name="hostName" type="java.lang.String"/>
      <param name="capability" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <param name="numContainers" type="int"/>
      <param name="relaxLocality" type="boolean"/>
      <param name="labelExpression" type="java.lang.String"/>
    </method>
    <method name="isAnyLocation" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="hostName" type="java.lang.String"/>
      <doc>
      <![CDATA[Check whether the given <em>host/rack</em> string represents an arbitrary
 host name.

 @param hostName <em>host/rack</em> on which the allocation is desired
 @return whether the given <em>host/rack</em> string represents an arbitrary
 host name]]>
      </doc>
    </method>
    <method name="getPriority" return="org.apache.hadoop.yarn.api.records.Priority"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>Priority</code> of the request.
 @return <code>Priority</code> of the request]]>
      </doc>
    </method>
    <method name="setPriority"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="priority" type="org.apache.hadoop.yarn.api.records.Priority"/>
      <doc>
      <![CDATA[Set the <code>Priority</code> of the request
 @param priority <code>Priority</code> of the request]]>
      </doc>
    </method>
    <method name="getResourceName" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the resource (e.g. <em>host/rack</em>) on which the allocation
 is desired.

 A special value of <em>*</em> signifies that <em>any</em> resource
 (host/rack) is acceptable.

 @return resource (e.g. <em>host/rack</em>) on which the allocation
                  is desired]]>
      </doc>
    </method>
    <method name="setResourceName"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="resourceName" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the resource name (e.g. <em>host/rack</em>) on which the allocation
 is desired.

 A special value of <em>*</em> signifies that <em>any</em> resource name
 (e.g. host/rack) is acceptable.

 @param resourceName (e.g. <em>host/rack</em>) on which the
                     allocation is desired]]>
      </doc>
    </method>
    <method name="getCapability" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the <code>Resource</code> capability of the request.
 @return <code>Resource</code> capability of the request]]>
      </doc>
    </method>
    <method name="setCapability"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="capability" type="org.apache.hadoop.yarn.api.records.Resource"/>
      <doc>
      <![CDATA[Set the <code>Resource</code> capability of the request
 @param capability <code>Resource</code> capability of the request]]>
      </doc>
    </method>
    <method name="getNumContainers" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the number of containers required with the given specifications.
 @return number of containers required with the given specifications]]>
      </doc>
    </method>
    <method name="setNumContainers"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="numContainers" type="int"/>
      <doc>
      <![CDATA[Set the number of containers required with the given specifications
 @param numContainers number of containers required with the given
                      specifications]]>
      </doc>
    </method>
    <method name="getRelaxLocality" return="boolean"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get whether locality relaxation is enabled with this
 <code>ResourceRequest</code>. Defaults to true.

 @return whether locality relaxation is enabled with this
 <code>ResourceRequest</code>.]]>
      </doc>
    </method>
    <method name="setRelaxLocality"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="relaxLocality" type="boolean"/>
      <doc>
      <![CDATA[<p>For a request at a network hierarchy level, set whether locality can be relaxed
 to that level and beyond.<p>

 <p>If the flag is off on a rack-level <code>ResourceRequest</code>,
 containers at that request's priority will not be assigned to nodes on that
 request's rack unless requests specifically for those nodes have also been
 submitted.<p>

 <p>If the flag is off on an {@link ResourceRequest#ANY}-level
 <code>ResourceRequest</code>, containers at that request's priority will
 only be assigned on racks for which specific requests have also been
 submitted.<p>

 <p>For example, to request a container strictly on a specific node, the
 corresponding rack-level and any-level requests should have locality
 relaxation set to false.  Similarly, to request a container strictly on a
 specific rack, the corresponding any-level request should have locality
 relaxation set to false.<p>

 @param relaxLocality whether locality relaxation is enabled with this
 <code>ResourceRequest</code>.]]>
      </doc>
    </method>
    <method name="getNodeLabelExpression" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get node-label-expression for this Resource Request. If this is set, all
 containers allocated to satisfy this resource-request will be only on those
 nodes that satisfy this node-label-expression.

 Please note that node label expression now can only take effect when the
 resource request has resourceName = ANY

 @return node-label-expression]]>
      </doc>
    </method>
    <method name="setNodeLabelExpression"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="nodelabelExpression" type="java.lang.String"/>
      <doc>
      <![CDATA[Set node label expression of this resource request. Now only support
 specifying a single node label. In the future we will support more complex
 node label expression specification like {@code AND(&&), OR(||)}, etc.

 Any please note that node label expression now can only take effect when
 the resource request has resourceName = ANY

 @param nodelabelExpression
          node-label-expression of this ResourceRequest]]>
      </doc>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.ResourceRequest"/>
    </method>
    <field name="ANY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The constant string representing no locality.
 It should be used by all references that want to pass an arbitrary host
 name in.]]>
      </doc>
    </field>
    <doc>
    <![CDATA[{@code ResourceRequest} represents the request made
 by an application to the {@code ResourceManager}
 to obtain various {@code Container} allocations.
 <p>
 It includes:
 <ul>
   <li>{@link Priority} of the request.</li>
   <li>
     The <em>name</em> of the machine or rack on which the allocation is
     desired. A special value of <em>*</em> signifies that
     <em>any</em> host/rack is acceptable to the application.
   </li>
   <li>{@link Resource} required for each request.</li>
   <li>
     Number of containers, of above specifications, which are required
     by the application.
   </li>
   <li>
     A boolean <em>relaxLocality</em> flag, defaulting to {@code true},
     which tells the {@code ResourceManager} if the application wants
     locality to be loose (i.e. allows fall-through to rack or <em>any</em>)
     or strict (i.e. specify hard constraint on resource allocation).
   </li>
 </ul>

 @see Resource
 @see ApplicationMasterProtocol#allocate(org.apache.hadoop.yarn.api.protocolrecords.AllocateRequest)]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ResourceRequest -->
  <!-- start class org.apache.hadoop.yarn.api.records.ResourceRequest.ResourceRequestComparator -->
  <class name="ResourceRequest.ResourceRequestComparator" extends="java.lang.Object"
    abstract="false"
    static="true" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.util.Comparator"/>
    <implements name="java.io.Serializable"/>
    <constructor name="ResourceRequestComparator"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="compare" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="r1" type="org.apache.hadoop.yarn.api.records.ResourceRequest"/>
      <param name="r2" type="org.apache.hadoop.yarn.api.records.ResourceRequest"/>
    </method>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.ResourceRequest.ResourceRequestComparator -->
  <!-- start class org.apache.hadoop.yarn.api.records.StrictPreemptionContract -->
  <class name="StrictPreemptionContract" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="StrictPreemptionContract"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getContainers" return="java.util.Set"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the set of {@link PreemptionContainer} specifying containers owned by
 the <code>ApplicationMaster</code> that may be reclaimed by the
 <code>ResourceManager</code>.
 @return the set of {@link ContainerId} to be preempted.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Enumeration of particular allocations to be reclaimed. The platform will
 reclaim exactly these resources, so the <code>ApplicationMaster</code> (AM)
 may attempt to checkpoint work or adjust its execution plan to accommodate
 it. In contrast to {@link PreemptionContract}, the AM has no flexibility in
 selecting which resources to return to the cluster.
 @see PreemptionMessage]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.StrictPreemptionContract -->
  <!-- start class org.apache.hadoop.yarn.api.records.Token -->
  <class name="Token" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="Token"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getIdentifier" return="java.nio.ByteBuffer"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the token identifier.
 @return token identifier]]>
      </doc>
    </method>
    <method name="getPassword" return="java.nio.ByteBuffer"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the token password
 @return token password]]>
      </doc>
    </method>
    <method name="getKind" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the token kind.
 @return token kind]]>
      </doc>
    </method>
    <method name="getService" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the service to which the token is allocated.
 @return service to which the token is allocated]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p><code>Token</code> is the security entity used by the framework
 to verify authenticity of any resource.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.Token -->
  <!-- start class org.apache.hadoop.yarn.api.records.URL -->
  <class name="URL" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="URL"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="newInstance" return="org.apache.hadoop.yarn.api.records.URL"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="scheme" type="java.lang.String"/>
      <param name="host" type="java.lang.String"/>
      <param name="port" type="int"/>
      <param name="file" type="java.lang.String"/>
    </method>
    <method name="getScheme" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the scheme of the URL.
 @return scheme of the URL]]>
      </doc>
    </method>
    <method name="setScheme"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="scheme" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the scheme of the URL
 @param scheme scheme of the URL]]>
      </doc>
    </method>
    <method name="getUserInfo" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the user info of the URL.
 @return user info of the URL]]>
      </doc>
    </method>
    <method name="setUserInfo"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="userInfo" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the user info of the URL.
 @param userInfo user info of the URL]]>
      </doc>
    </method>
    <method name="getHost" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the host of the URL.
 @return host of the URL]]>
      </doc>
    </method>
    <method name="setHost"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="host" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the host of the URL.
 @param host host of the URL]]>
      </doc>
    </method>
    <method name="getPort" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the port of the URL.
 @return port of the URL]]>
      </doc>
    </method>
    <method name="setPort"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="port" type="int"/>
      <doc>
      <![CDATA[Set the port of the URL
 @param port port of the URL]]>
      </doc>
    </method>
    <method name="getFile" return="java.lang.String"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the file of the URL.
 @return file of the URL]]>
      </doc>
    </method>
    <method name="setFile"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="file" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the file of the URL.
 @param file file of the URL]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p><code>URL</code> represents a serializable {@link java.net.URL}.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.URL -->
  <!-- start class org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState -->
  <class name="YarnApplicationAttemptState" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[Enumeration of various states of a <code>RMAppAttempt</code>.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.YarnApplicationAttemptState -->
  <!-- start class org.apache.hadoop.yarn.api.records.YarnApplicationState -->
  <class name="YarnApplicationState" extends="java.lang.Enum"
    abstract="false"
    static="false" final="true" visibility="public"
    deprecated="not deprecated">
    <method name="values" return="org.apache.hadoop.yarn.api.records.YarnApplicationState[]"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="valueOf" return="org.apache.hadoop.yarn.api.records.YarnApplicationState"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
    </method>
    <doc>
    <![CDATA[Enumeration of various states of an <code>ApplicationMaster</code>.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.YarnApplicationState -->
  <!-- start class org.apache.hadoop.yarn.api.records.YarnClusterMetrics -->
  <class name="YarnClusterMetrics" extends="java.lang.Object"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="YarnClusterMetrics"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getNumNodeManagers" return="int"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the number of <code>NodeManager</code>s in the cluster.
 @return number of <code>NodeManager</code>s in the cluster]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p><code>YarnClusterMetrics</code> represents cluster metrics.</p>

 <p>Currently only number of <code>NodeManager</code>s is provided.</p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.YarnClusterMetrics -->
</package>
<package name="org.apache.hadoop.yarn.api.records.timeline">
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelineDelegationTokenResponse -->
  <class name="TimelineDelegationTokenResponse" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="TimelineDelegationTokenResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getType" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="setType"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="type" type="java.lang.String"/>
    </method>
    <method name="getContent" return="java.lang.Object"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="setContent"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="content" type="java.lang.Object"/>
    </method>
    <doc>
    <![CDATA[The response of delegation token related request]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelineDelegationTokenResponse -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelineDomain -->
  <class name="TimelineDomain" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="TimelineDomain"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getId" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the domain ID

 @return the domain ID]]>
      </doc>
    </method>
    <method name="setId"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="id" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the domain ID

 @param id the domain ID]]>
      </doc>
    </method>
    <method name="getDescription" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the domain description

 @return the domain description]]>
      </doc>
    </method>
    <method name="setDescription"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="description" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the domain description

 @param description the domain description]]>
      </doc>
    </method>
    <method name="getOwner" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the domain owner

 @return the domain owner]]>
      </doc>
    </method>
    <method name="setOwner"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="owner" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the domain owner. The user doesn't need to set it, which will
 automatically set to the user who puts the domain.

 @param owner the domain owner]]>
      </doc>
    </method>
    <method name="getReaders" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the reader (and/or reader group) list string

 @return the reader (and/or reader group) list string]]>
      </doc>
    </method>
    <method name="setReaders"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="readers" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the reader (and/or reader group) list string

 @param readers the reader (and/or reader group) list string]]>
      </doc>
    </method>
    <method name="getWriters" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the writer (and/or writer group) list string

 @return the writer (and/or writer group) list string]]>
      </doc>
    </method>
    <method name="setWriters"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="writers" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the writer (and/or writer group) list string

 @param writers the writer (and/or writer group) list string]]>
      </doc>
    </method>
    <method name="getCreatedTime" return="java.lang.Long"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the created time of the domain

 @return the created time of the domain]]>
      </doc>
    </method>
    <method name="setCreatedTime"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="createdTime" type="java.lang.Long"/>
      <doc>
      <![CDATA[Set the created time of the domain

 @param createdTime the created time of the domain]]>
      </doc>
    </method>
    <method name="getModifiedTime" return="java.lang.Long"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the modified time of the domain

 @return the modified time of the domain]]>
      </doc>
    </method>
    <method name="setModifiedTime"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="modifiedTime" type="java.lang.Long"/>
      <doc>
      <![CDATA[Set the modified time of the domain

 @param modifiedTime the modified time of the domain]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 This class contains the information about a timeline domain, which is used
 to a user to host a number of timeline entities, isolating them from others'.
 The user can also define the reader and writer users/groups for the the
 domain, which is used to control the access to its entities.
 </p>

 <p>
 The reader and writer users/groups pattern that the user can supply is the
 same as what <code>AccessControlList</code> takes.
 </p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelineDomain -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelineDomains -->
  <class name="TimelineDomains" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="TimelineDomains"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getDomains" return="java.util.List"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of domains

 @return a list of domains]]>
      </doc>
    </method>
    <method name="addDomain"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="domain" type="org.apache.hadoop.yarn.api.records.timeline.TimelineDomain"/>
      <doc>
      <![CDATA[Add a single domain into the existing domain list

 @param domain
          a single domain]]>
      </doc>
    </method>
    <method name="addDomains"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="domains" type="java.util.List"/>
      <doc>
      <![CDATA[All a list of domains into the existing domain list

 @param domains
          a list of domains]]>
      </doc>
    </method>
    <method name="setDomains"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="domains" type="java.util.List"/>
      <doc>
      <![CDATA[Set the domain list to the given list of domains

 @param domains
          a list of domains]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The class that hosts a list of timeline domains.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelineDomains -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelineEntities -->
  <class name="TimelineEntities" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="TimelineEntities"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getEntities" return="java.util.List"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of entities

 @return a list of entities]]>
      </doc>
    </method>
    <method name="addEntity"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entity" type="org.apache.hadoop.yarn.api.records.timeline.TimelineEntity"/>
      <doc>
      <![CDATA[Add a single entity into the existing entity list

 @param entity
          a single entity]]>
      </doc>
    </method>
    <method name="addEntities"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entities" type="java.util.List"/>
      <doc>
      <![CDATA[All a list of entities into the existing entity list

 @param entities
          a list of entities]]>
      </doc>
    </method>
    <method name="setEntities"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entities" type="java.util.List"/>
      <doc>
      <![CDATA[Set the entity list to the given list of entities

 @param entities
          a list of entities]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The class that hosts a list of timeline entities.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelineEntities -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelineEntity -->
  <class name="TimelineEntity" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="TimelineEntity"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getEntityType" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the entity type

 @return the entity type]]>
      </doc>
    </method>
    <method name="setEntityType"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entityType" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the entity type

 @param entityType
          the entity type]]>
      </doc>
    </method>
    <method name="getEntityId" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the entity Id

 @return the entity Id]]>
      </doc>
    </method>
    <method name="setEntityId"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entityId" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the entity Id

 @param entityId
          the entity Id]]>
      </doc>
    </method>
    <method name="getStartTime" return="java.lang.Long"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the start time of the entity

 @return the start time of the entity]]>
      </doc>
    </method>
    <method name="setStartTime"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="startTime" type="java.lang.Long"/>
      <doc>
      <![CDATA[Set the start time of the entity

 @param startTime
          the start time of the entity]]>
      </doc>
    </method>
    <method name="getEvents" return="java.util.List"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of events related to the entity

 @return a list of events related to the entity]]>
      </doc>
    </method>
    <method name="addEvent"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="event" type="org.apache.hadoop.yarn.api.records.timeline.TimelineEvent"/>
      <doc>
      <![CDATA[Add a single event related to the entity to the existing event list

 @param event
          a single event related to the entity]]>
      </doc>
    </method>
    <method name="addEvents"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="events" type="java.util.List"/>
      <doc>
      <![CDATA[Add a list of events related to the entity to the existing event list

 @param events
          a list of events related to the entity]]>
      </doc>
    </method>
    <method name="setEvents"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="events" type="java.util.List"/>
      <doc>
      <![CDATA[Set the event list to the given list of events related to the entity

 @param events
          events a list of events related to the entity]]>
      </doc>
    </method>
    <method name="getRelatedEntities" return="java.util.Map"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the related entities

 @return the related entities]]>
      </doc>
    </method>
    <method name="addRelatedEntity"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entityType" type="java.lang.String"/>
      <param name="entityId" type="java.lang.String"/>
      <doc>
      <![CDATA[Add an entity to the existing related entity map

 @param entityType
          the entity type
 @param entityId
          the entity Id]]>
      </doc>
    </method>
    <method name="addRelatedEntities"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="relatedEntities" type="java.util.Map"/>
      <doc>
      <![CDATA[Add a map of related entities to the existing related entity map

 @param relatedEntities
          a map of related entities]]>
      </doc>
    </method>
    <method name="setRelatedEntities"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="relatedEntities" type="java.util.Map"/>
      <doc>
      <![CDATA[Set the related entity map to the given map of related entities

 @param relatedEntities
          a map of related entities]]>
      </doc>
    </method>
    <method name="getPrimaryFilters" return="java.util.Map"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the primary filters

 @return the primary filters]]>
      </doc>
    </method>
    <method name="addPrimaryFilter"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="key" type="java.lang.String"/>
      <param name="value" type="java.lang.Object"/>
      <doc>
      <![CDATA[Add a single piece of primary filter to the existing primary filter map

 @param key
          the primary filter key
 @param value
          the primary filter value]]>
      </doc>
    </method>
    <method name="addPrimaryFilters"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="primaryFilters" type="java.util.Map"/>
      <doc>
      <![CDATA[Add a map of primary filters to the existing primary filter map

 @param primaryFilters
          a map of primary filters]]>
      </doc>
    </method>
    <method name="setPrimaryFilters"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="primaryFilters" type="java.util.Map"/>
      <doc>
      <![CDATA[Set the primary filter map to the given map of primary filters

 @param primaryFilters
          a map of primary filters]]>
      </doc>
    </method>
    <method name="getOtherInfo" return="java.util.Map"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the other information of the entity

 @return the other information of the entity]]>
      </doc>
    </method>
    <method name="addOtherInfo"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="key" type="java.lang.String"/>
      <param name="value" type="java.lang.Object"/>
      <doc>
      <![CDATA[Add one piece of other information of the entity to the existing other info
 map

 @param key
          the other information key
 @param value
          the other information value]]>
      </doc>
    </method>
    <method name="addOtherInfo"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="otherInfo" type="java.util.Map"/>
      <doc>
      <![CDATA[Add a map of other information of the entity to the existing other info map

 @param otherInfo
          a map of other information]]>
      </doc>
    </method>
    <method name="setOtherInfo"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="otherInfo" type="java.util.Map"/>
      <doc>
      <![CDATA[Set the other info map to the given map of other information

 @param otherInfo
          a map of other information]]>
      </doc>
    </method>
    <method name="getDomainId" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the ID of the domain that the entity is to be put

 @return the domain ID]]>
      </doc>
    </method>
    <method name="setDomainId"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="domainId" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the ID of the domain that the entity is to be put

 @param domainId
          the name space ID]]>
      </doc>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="obj" type="java.lang.Object"/>
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.timeline.TimelineEntity"/>
    </method>
    <doc>
    <![CDATA[<p>
 The class that contains the the meta information of some conceptual entity
 and its related events. The entity can be an application, an application
 attempt, a container or whatever the user-defined object.
 </p>

 <p>
 Primary filters will be used to index the entities in
 <code>TimelineStore</code>, such that users should carefully choose the
 information they want to store as the primary filters. The remaining can be
 stored as other information.
 </p>]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelineEntity -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelineEvent -->
  <class name="TimelineEvent" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <implements name="java.lang.Comparable"/>
    <constructor name="TimelineEvent"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getTimestamp" return="long"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the timestamp of the event

 @return the timestamp of the event]]>
      </doc>
    </method>
    <method name="setTimestamp"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="timestamp" type="long"/>
      <doc>
      <![CDATA[Set the timestamp of the event

 @param timestamp
          the timestamp of the event]]>
      </doc>
    </method>
    <method name="getEventType" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the event type

 @return the event type]]>
      </doc>
    </method>
    <method name="setEventType"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="eventType" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the event type

 @param eventType
          the event type]]>
      </doc>
    </method>
    <method name="getEventInfo" return="java.util.Map"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Set the information of the event

 @return the information of the event]]>
      </doc>
    </method>
    <method name="addEventInfo"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="key" type="java.lang.String"/>
      <param name="value" type="java.lang.Object"/>
      <doc>
      <![CDATA[Add one piece of the information of the event to the existing information
 map

 @param key
          the information key
 @param value
          the information value]]>
      </doc>
    </method>
    <method name="addEventInfo"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="eventInfo" type="java.util.Map"/>
      <doc>
      <![CDATA[Add a map of the information of the event to the existing information map

 @param eventInfo
          a map of of the information of the event]]>
      </doc>
    </method>
    <method name="setEventInfo"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="eventInfo" type="java.util.Map"/>
      <doc>
      <![CDATA[Set the information map to the given map of the information of the event

 @param eventInfo
          a map of of the information of the event]]>
      </doc>
    </method>
    <method name="compareTo" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="other" type="org.apache.hadoop.yarn.api.records.timeline.TimelineEvent"/>
    </method>
    <method name="equals" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="o" type="java.lang.Object"/>
    </method>
    <method name="hashCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </method>
    <doc>
    <![CDATA[The class that contains the information of an event that is related to some
 conceptual entity of an application. Users are free to define what the event
 means, such as starting an application, getting allocated a container and
 etc.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelineEvent -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelineEvents -->
  <class name="TimelineEvents" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="TimelineEvents"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getAllEvents" return="java.util.List"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of {@link EventsOfOneEntity} instances

 @return a list of {@link EventsOfOneEntity} instances]]>
      </doc>
    </method>
    <method name="addEvent"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="eventsOfOneEntity" type="org.apache.hadoop.yarn.api.records.timeline.TimelineEvents.EventsOfOneEntity"/>
      <doc>
      <![CDATA[Add a single {@link EventsOfOneEntity} instance into the existing list

 @param eventsOfOneEntity
          a single {@link EventsOfOneEntity} instance]]>
      </doc>
    </method>
    <method name="addEvents"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="allEvents" type="java.util.List"/>
      <doc>
      <![CDATA[Add a list of {@link EventsOfOneEntity} instances into the existing list

 @param allEvents
          a list of {@link EventsOfOneEntity} instances]]>
      </doc>
    </method>
    <method name="setEvents"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="allEvents" type="java.util.List"/>
      <doc>
      <![CDATA[Set the list to the given list of {@link EventsOfOneEntity} instances

 @param allEvents
          a list of {@link EventsOfOneEntity} instances]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The class that hosts a list of events, which are categorized according to
 their related entities.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelineEvents -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelineEvents.EventsOfOneEntity -->
  <class name="TimelineEvents.EventsOfOneEntity" extends="java.lang.Object"
    abstract="false"
    static="true" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="EventsOfOneEntity"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getEntityId" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the entity Id

 @return the entity Id]]>
      </doc>
    </method>
    <method name="setEntityId"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entityId" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the entity Id

 @param entityId
          the entity Id]]>
      </doc>
    </method>
    <method name="getEntityType" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the entity type

 @return the entity type]]>
      </doc>
    </method>
    <method name="setEntityType"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entityType" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the entity type

 @param entityType
          the entity type]]>
      </doc>
    </method>
    <method name="getEvents" return="java.util.List"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of events

 @return a list of events]]>
      </doc>
    </method>
    <method name="addEvent"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="event" type="org.apache.hadoop.yarn.api.records.timeline.TimelineEvent"/>
      <doc>
      <![CDATA[Add a single event to the existing event list

 @param event
          a single event]]>
      </doc>
    </method>
    <method name="addEvents"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="events" type="java.util.List"/>
      <doc>
      <![CDATA[Add a list of event to the existing event list

 @param events
          a list of events]]>
      </doc>
    </method>
    <method name="setEvents"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="events" type="java.util.List"/>
      <doc>
      <![CDATA[Set the event list to the given list of events

 @param events
          a list of events]]>
      </doc>
    </method>
    <doc>
    <![CDATA[The class that hosts a list of events that are only related to one entity.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelineEvents.EventsOfOneEntity -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelinePutResponse -->
  <class name="TimelinePutResponse" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="TimelinePutResponse"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getErrors" return="java.util.List"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get a list of {@link TimelinePutError} instances

 @return a list of {@link TimelinePutError} instances]]>
      </doc>
    </method>
    <method name="addError"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="error" type="org.apache.hadoop.yarn.api.records.timeline.TimelinePutResponse.TimelinePutError"/>
      <doc>
      <![CDATA[Add a single {@link TimelinePutError} instance into the existing list

 @param error
          a single {@link TimelinePutError} instance]]>
      </doc>
    </method>
    <method name="addErrors"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="errors" type="java.util.List"/>
      <doc>
      <![CDATA[Add a list of {@link TimelinePutError} instances into the existing list

 @param errors
          a list of {@link TimelinePutError} instances]]>
      </doc>
    </method>
    <method name="setErrors"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="errors" type="java.util.List"/>
      <doc>
      <![CDATA[Set the list to the given list of {@link TimelinePutError} instances

 @param errors
          a list of {@link TimelinePutError} instances]]>
      </doc>
    </method>
    <doc>
    <![CDATA[A class that holds a list of put errors. This is the response returned when a
 list of {@link TimelineEntity} objects is added to the timeline. If there are errors
 in storing individual entity objects, they will be indicated in the list of
 errors.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelinePutResponse -->
  <!-- start class org.apache.hadoop.yarn.api.records.timeline.TimelinePutResponse.TimelinePutError -->
  <class name="TimelinePutResponse.TimelinePutError" extends="java.lang.Object"
    abstract="false"
    static="true" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="TimelinePutError"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getEntityId" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the entity Id

 @return the entity Id]]>
      </doc>
    </method>
    <method name="setEntityId"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entityId" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the entity Id

 @param entityId
          the entity Id]]>
      </doc>
    </method>
    <method name="getEntityType" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the entity type

 @return the entity type]]>
      </doc>
    </method>
    <method name="setEntityType"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="entityType" type="java.lang.String"/>
      <doc>
      <![CDATA[Set the entity type

 @param entityType
          the entity type]]>
      </doc>
    </method>
    <method name="getErrorCode" return="int"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the error code

 @return an error code]]>
      </doc>
    </method>
    <method name="setErrorCode"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="errorCode" type="int"/>
      <doc>
      <![CDATA[Set the error code to the given error code

 @param errorCode
          an error code]]>
      </doc>
    </method>
    <field name="NO_START_TIME" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Error code returned when no start time can be found when putting an
 entity. This occurs when the entity does not already exist in the store
 and it is put with no start time or events specified.]]>
      </doc>
    </field>
    <field name="IO_EXCEPTION" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Error code returned if an IOException is encountered when putting an
 entity.]]>
      </doc>
    </field>
    <field name="SYSTEM_FILTER_CONFLICT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Error code returned if the user specifies the timeline system reserved
 filter key]]>
      </doc>
    </field>
    <field name="ACCESS_DENIED" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Error code returned if the user is denied to access the timeline data]]>
      </doc>
    </field>
    <field name="NO_DOMAIN" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Error code returned if the entity doesn't have an valid domain ID]]>
      </doc>
    </field>
    <field name="FORBIDDEN_RELATION" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Error code returned if the user is denied to relate the entity to another
 one in different domain]]>
      </doc>
    </field>
    <doc>
    <![CDATA[A class that holds the error code for one entity.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.api.records.timeline.TimelinePutResponse.TimelinePutError -->
</package>
<package name="org.apache.hadoop.yarn.conf">
  <!-- start class org.apache.hadoop.yarn.conf.YarnConfiguration -->
  <class name="YarnConfiguration" extends="org.apache.hadoop.conf.Configuration"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="YarnConfiguration"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="YarnConfiguration" type="org.apache.hadoop.conf.Configuration"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getSocketAddr" return="java.net.InetSocketAddress"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
      <param name="defaultAddress" type="java.lang.String"/>
      <param name="defaultPort" type="int"/>
      <doc>
      <![CDATA[Get the socket address for <code>name</code> property as a
 <code>InetSocketAddress</code>. On an HA cluster,
 this fetches the address corresponding to the RM identified by
 {@link #RM_HA_ID}.
 @param name property name.
 @param defaultAddress the default value
 @param defaultPort the default port
 @return InetSocketAddress]]>
      </doc>
    </method>
    <method name="updateConnectAddr" return="java.net.InetSocketAddress"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="name" type="java.lang.String"/>
      <param name="addr" type="java.net.InetSocketAddress"/>
    </method>
    <method name="useHttps" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="conf" type="org.apache.hadoop.conf.Configuration"/>
    </method>
    <method name="shouldRMFailFast" return="boolean"
      abstract="false" native="false" synchronized="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="conf" type="org.apache.hadoop.conf.Configuration"/>
    </method>
    <field name="CS_CONFIGURATION_FILE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="HADOOP_POLICY_CONFIGURATION_FILE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_SITE_CONFIGURATION_FILE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CORE_SITE_CONFIGURATION_FILE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_CONFIGURATION_FILES" type="java.util.List"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="APPLICATION_MAX_TAGS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="APPLICATION_MAX_TAG_LENGTH" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEBUG_NM_DELETE_DELAY_SEC" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Delay before deleting resource to ease debugging of NM issues]]>
      </doc>
    </field>
    <field name="IPC_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="IPC_CLIENT_FACTORY_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Factory to create client IPC classes.]]>
      </doc>
    </field>
    <field name="DEFAULT_IPC_CLIENT_FACTORY_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="IPC_SERVER_FACTORY_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Factory to create server IPC classes.]]>
      </doc>
    </field>
    <field name="DEFAULT_IPC_SERVER_FACTORY_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="IPC_RECORD_FACTORY_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Factory to create serializeable records.]]>
      </doc>
    </field>
    <field name="DEFAULT_IPC_RECORD_FACTORY_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="IPC_RPC_IMPL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[RPC class implementation]]>
      </doc>
    </field>
    <field name="DEFAULT_IPC_RPC_IMPL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_CLUSTER_ID" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_HOSTNAME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the applications manager interface in the RM.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_BIND_HOST" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The actual bind address for the RM.]]>
      </doc>
    </field>
    <field name="RM_CLIENT_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The number of threads used to handle applications manager requests.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_CLIENT_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_AMLAUNCHER_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads used to launch/cleanup AM.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_AMLAUNCHER_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_NODEMANAGER_CONNECT_RETIRES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Retry times to connect with NM.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_NODEMANAGER_CONNECT_RETIRES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_PRINCIPAL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The Kerberos principal for the resource manager.]]>
      </doc>
    </field>
    <field name="RM_SCHEDULER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the scheduler interface.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_SCHEDULER_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_SCHEDULER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER_MINIMUM_ALLOCATION_MB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Miniumum request grant-able by the RM scheduler.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_SCHEDULER_MINIMUM_ALLOCATION_MB" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER_MINIMUM_ALLOCATION_VCORES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_SCHEDULER_MINIMUM_ALLOCATION_VCORES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER_MAXIMUM_ALLOCATION_MB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Maximum request grant-able by the RM scheduler.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_SCHEDULER_MAXIMUM_ALLOCATION_MB" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER_MAXIMUM_ALLOCATION_VCORES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_SCHEDULER_MAXIMUM_ALLOCATION_VCORES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER_CLIENT_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads to handle scheduler interface.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_SCHEDULER_CLIENT_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER_INCLUDE_PORT_IN_NODE_NAME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[If the port should be included or not in the node name. The node name
 is used by the scheduler for resource requests allocation location
 matching. Typically this is just the hostname, using the port is needed
 when using minicluster and specific NM are required.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_SCHEDULER_USE_PORT_FOR_NODE_NAME" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_WEBAPP_UI_ACTIONS_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Enable Resource Manager webapp ui actions]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_WEBAPP_UI_ACTIONS_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_RESERVATION_SYSTEM_ENABLE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Whether the RM should enable Reservation System]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_RESERVATION_SYSTEM_ENABLE" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_RESERVATION_SYSTEM_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The class to use as the Reservation System.]]>
      </doc>
    </field>
    <field name="RM_RESERVATION_SYSTEM_PLAN_FOLLOWER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The PlanFollower for the Reservation System.]]>
      </doc>
    </field>
    <field name="RM_RESERVATION_SYSTEM_PLAN_FOLLOWER_TIME_STEP" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The step size of the Reservation System.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_RESERVATION_SYSTEM_PLAN_FOLLOWER_TIME_STEP" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER_ENABLE_MONITORS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Enable periodic monitor threads.
 @see #RM_SCHEDULER_MONITOR_POLICIES]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_SCHEDULER_ENABLE_MONITORS" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER_MONITOR_POLICIES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[List of SchedulingEditPolicy classes affecting the scheduler.]]>
      </doc>
    </field>
    <field name="RM_WEBAPP_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the RM web application.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_WEBAPP_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_WEBAPP_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_WEBAPP_HTTPS_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The https address of the RM web application.]]>
      </doc>
    </field>
    <field name="YARN_SSL_CLIENT_HTTPS_NEED_AUTH_DEFAULT" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_SSL_SERVER_RESOURCE_DEFAULT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_WEBAPP_HTTPS_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_WEBAPP_HTTPS_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_RESOURCE_TRACKER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_RESOURCE_TRACKER_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_RESOURCE_TRACKER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_AM_EXPIRY_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The expiry interval for application master reporting.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_AM_EXPIRY_INTERVAL_MS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_NM_EXPIRY_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[How long to wait until a node manager is considered dead.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_NM_EXPIRY_INTERVAL_MS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_ACL_ENABLE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Are acls enabled.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_ACL_ENABLE" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_ADMIN_ACL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[ACL of who can be admin of YARN cluster.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_ADMIN_ACL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_YARN_APP_ACL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[ACL used in case none is found. Allows nothing.]]>
      </doc>
    </field>
    <field name="YARN_INTERMEDIATE_DATA_ENCRYPTION" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Enable/disable intermediate-data encryption at YARN level. For now, this
 only is used by the FileSystemRMStateStore to setup right file-system
 security attributes.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_INTERMEDIATE_DATA_ENCRYPTION" type="java.lang.Boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ADMIN_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the RM admin interface.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_ADMIN_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_ADMIN_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ADMIN_CLIENT_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads used to handle RM admin interface.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_ADMIN_CLIENT_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_AM_MAX_ATTEMPTS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The maximum number of application attempts.
 It's a global setting for all application masters.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_AM_MAX_ATTEMPTS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_KEYTAB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The keytab for the resource manager.]]>
      </doc>
    </field>
    <field name="RM_WEBAPP_SPNEGO_USER_NAME_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The kerberos principal to be used for spnego filter for RM.]]>
      </doc>
    </field>
    <field name="RM_WEBAPP_SPNEGO_KEYTAB_FILE_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The kerberos keytab to be used for spnego filter for RM.]]>
      </doc>
    </field>
    <field name="RM_WEBAPP_DELEGATION_TOKEN_AUTH_FILTER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Flag to enable override of the default kerberos authentication filter with
 the RM authentication filter to allow authentication using delegation
 tokens(fallback to kerberos if the tokens are missing). Only applicable
 when the http authentication type is kerberos.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_WEBAPP_DELEGATION_TOKEN_AUTH_FILTER" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_WEBAPP_ENABLE_CORS_FILTER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Enable cross origin (CORS) support.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_WEBAPP_ENABLE_CORS_FILTER" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_CONTAINER_ALLOC_EXPIRY_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[How long to wait until a container is considered dead.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_CONTAINER_ALLOC_EXPIRY_INTERVAL_MS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_NODES_INCLUDE_FILE_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Path to file with nodes to include.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_NODES_INCLUDE_FILE_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_NODES_EXCLUDE_FILE_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Path to file with nodes to exclude.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_NODES_EXCLUDE_FILE_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_RESOURCE_TRACKER_CLIENT_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads to handle resource tracker calls.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_RESOURCE_TRACKER_CLIENT_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SCHEDULER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The class to use as the resource scheduler.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_SCHEDULER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_NM_HEARTBEAT_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[RM set next Heartbeat interval for NM]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_NM_HEARTBEAT_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_HISTORY_WRITER_MULTI_THREADED_DISPATCHER_POOL_SIZE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of worker threads that write the history data.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_HISTORY_WRITER_MULTI_THREADED_DISPATCHER_POOL_SIZE" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SYSTEM_METRICS_PUBLISHER_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The setting that controls whether yarn system metrics is published on the
  timeline server or not by RM.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_SYSTEM_METRICS_PUBLISHER_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_SYSTEM_METRICS_PUBLISHER_DISPATCHER_POOL_SIZE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_SYSTEM_METRICS_PUBLISHER_DISPATCHER_POOL_SIZE" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_DELEGATION_KEY_UPDATE_INTERVAL_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_DELEGATION_KEY_UPDATE_INTERVAL_DEFAULT" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_DELEGATION_TOKEN_RENEW_INTERVAL_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_DELEGATION_TOKEN_RENEW_INTERVAL_DEFAULT" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_DELEGATION_TOKEN_MAX_LIFETIME_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_DELEGATION_TOKEN_MAX_LIFETIME_DEFAULT" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RECOVERY_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_RECOVERY_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_FAIL_FAST" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_YARN_FAIL_FAST" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_FAIL_FAST" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_WORK_PRESERVING_RECOVERY_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_WORK_PRESERVING_RECOVERY_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_WORK_PRESERVING_RECOVERY_SCHEDULING_WAIT_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_WORK_PRESERVING_RECOVERY_SCHEDULING_WAIT_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ZK_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Zookeeper interaction configs]]>
      </doc>
    </field>
    <field name="RM_ZK_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ZK_NUM_RETRIES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_ZK_RM_NUM_RETRIES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ZK_RETRY_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_ZK_RETRY_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ZK_TIMEOUT_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_ZK_TIMEOUT_MS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ZK_ACL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_ZK_ACL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_ZK_AUTH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="ZK_STATE_STORE_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="ZK_RM_STATE_STORE_PARENT_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Parent znode path under which ZKRMStateStore will create znodes]]>
      </doc>
    </field>
    <field name="DEFAULT_ZK_RM_STATE_STORE_PARENT_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="ZK_RM_STATE_STORE_ROOT_NODE_ACL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Root node ACLs for fencing]]>
      </doc>
    </field>
    <field name="RM_HA_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[HA related configs]]>
      </doc>
    </field>
    <field name="RM_HA_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_HA_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_HA_IDS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_HA_ID" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="FS_BASED_RM_CONF_STORE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Store the related configuration files in File System]]>
      </doc>
    </field>
    <field name="DEFAULT_FS_BASED_RM_CONF_STORE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_CONFIGURATION_PROVIDER_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_CONFIGURATION_PROVIDER_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_AUTHORIZATION_PROVIDER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="AUTO_FAILOVER_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="AUTO_FAILOVER_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_AUTO_FAILOVER_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="AUTO_FAILOVER_EMBEDDED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_AUTO_FAILOVER_EMBEDDED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="AUTO_FAILOVER_ZK_BASE_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_AUTO_FAILOVER_ZK_BASE_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_FAILOVER_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_FAILOVER_PROXY_PROVIDER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_CLIENT_FAILOVER_PROXY_PROVIDER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_FAILOVER_MAX_ATTEMPTS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_FAILOVER_SLEEPTIME_BASE_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_FAILOVER_SLEEPTIME_MAX_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_FAILOVER_RETRIES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_CLIENT_FAILOVER_RETRIES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_FAILOVER_RETRIES_ON_SOCKET_TIMEOUTS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_CLIENT_FAILOVER_RETRIES_ON_SOCKET_TIMEOUTS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_STORE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The class to use as the persistent store.]]>
      </doc>
    </field>
    <field name="FS_RM_STATE_STORE_URI" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[URI for FileSystemRMStateStore]]>
      </doc>
    </field>
    <field name="FS_RM_STATE_STORE_RETRY_POLICY_SPEC" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_FS_RM_STATE_STORE_RETRY_POLICY_SPEC" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="FS_RM_STATE_STORE_NUM_RETRIES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_FS_RM_STATE_STORE_NUM_RETRIES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="FS_RM_STATE_STORE_RETRY_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_FS_RM_STATE_STORE_RETRY_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_LEVELDB_STORE_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_MAX_COMPLETED_APPLICATIONS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The maximum number of completed applications RM keeps.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_MAX_COMPLETED_APPLICATIONS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_STATE_STORE_MAX_COMPLETED_APPLICATIONS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The maximum number of completed applications RM state store keeps, by
 default equals to DEFAULT_RM_MAX_COMPLETED_APPLICATIONS]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_STATE_STORE_MAX_COMPLETED_APPLICATIONS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_APPLICATION_NAME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Default application name]]>
      </doc>
    </field>
    <field name="DEFAULT_APPLICATION_TYPE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Default application type]]>
      </doc>
    </field>
    <field name="APPLICATION_TYPE_LENGTH" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Default application type length]]>
      </doc>
    </field>
    <field name="DEFAULT_QUEUE_NAME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Default queue name]]>
      </doc>
    </field>
    <field name="RM_METRICS_RUNTIME_BUCKETS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Buckets (in minutes) for the number of apps running in each queue.]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_METRICS_RUNTIME_BUCKETS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Default sizes of the runtime metric buckets in minutes.]]>
      </doc>
    </field>
    <field name="RM_AMRM_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_AMRM_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_CONTAINER_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_CONTAINER_TOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_NMTOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_NMTOKEN_MASTER_KEY_ROLLING_INTERVAL_SECS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_NODEMANAGER_MINIMUM_VERSION" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_NODEMANAGER_MINIMUM_VERSION" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_PROXY_USER_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[RM proxy users' prefix]]>
      </doc>
    </field>
    <field name="NM_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Prefix for all node manager configs.]]>
      </doc>
    </field>
    <field name="NM_ADMIN_USER_ENV" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Environment variables that will be sent to containers.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_ADMIN_USER_ENV" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_ENV_WHITELIST" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Environment variables that containers may override rather than use NodeManager's default.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_ENV_WHITELIST" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[address of node manager IPC.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_NM_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_BIND_HOST" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The actual bind address or the NM.]]>
      </doc>
    </field>
    <field name="NM_CONTAINER_EXECUTOR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[who will execute(launch) the containers.]]>
      </doc>
    </field>
    <field name="NM_CONTAINER_EXECUTOR_SCHED_PRIORITY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Adjustment to make to the container os scheduling priority.
 The valid values for this could vary depending on the platform.
 On Linux, higher values mean run the containers at a less
 favorable priority than the NM.
 The value specified is an int.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_CONTAINER_EXECUTOR_SCHED_PRIORITY" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_CONTAINER_MGR_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads container manager uses.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_CONTAINER_MGR_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_DELETE_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads used in cleanup.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_DELETE_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_KEYTAB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Keytab for NM.]]>
      </doc>
    </field>
    <field name="NM_LOCAL_DIRS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[List of directories to store localized files in.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOCAL_DIRS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOCAL_CACHE_MAX_FILES_PER_DIRECTORY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of files in each localized directories
 Avoid tuning this too low.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOCAL_CACHE_MAX_FILES_PER_DIRECTORY" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOCALIZER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Address where the localizer IPC is.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOCALIZER_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_NM_LOCALIZER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOCALIZER_CACHE_CLEANUP_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Interval in between cache cleanups.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOCALIZER_CACHE_CLEANUP_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOCALIZER_CACHE_TARGET_SIZE_MB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Target size of localizer cache in MB, per nodemanager. It is a target
 retention size that only includes resources with PUBLIC and PRIVATE
 visibility and excludes resources with APPLICATION visibility]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOCALIZER_CACHE_TARGET_SIZE_MB" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOCALIZER_CLIENT_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads to handle localization requests.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOCALIZER_CLIENT_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOCALIZER_FETCH_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads to use for localization fetching.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOCALIZER_FETCH_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOG_DIRS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Where to store container logs.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOG_DIRS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_RESOURCEMANAGER_MINIMUM_VERSION" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_NM_RESOURCEMANAGER_MINIMUM_VERSION" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_DELAYED_DELEGATION_TOKEN_REMOVAL_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Interval at which the delayed token removal thread runs]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_DELAYED_DELEGATION_TOKEN_REMOVAL_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_DELEGATION_TOKEN_RENEWER_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Delegation Token renewer thread count]]>
      </doc>
    </field>
    <field name="DEFAULT_RM_DELEGATION_TOKEN_RENEWER_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RM_PROXY_USER_PRIVILEGES_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_RM_PROXY_USER_PRIVILEGES_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="false" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="LOG_AGGREGATION_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Whether to enable log aggregation]]>
      </doc>
    </field>
    <field name="DEFAULT_LOG_AGGREGATION_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="LOG_AGGREGATION_RETAIN_SECONDS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[How long to wait before deleting aggregated logs, -1 disables.
 Be careful set this too small and you will spam the name node.]]>
      </doc>
    </field>
    <field name="DEFAULT_LOG_AGGREGATION_RETAIN_SECONDS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="LOG_AGGREGATION_RETAIN_CHECK_INTERVAL_SECONDS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[How long to wait between aggregated log retention checks. If set to
 a value {@literal <=} 0 then the value is computed as one-tenth of the
 log retention setting. Be careful set this too small and you will spam
 the name node.]]>
      </doc>
    </field>
    <field name="DEFAULT_LOG_AGGREGATION_RETAIN_CHECK_INTERVAL_SECONDS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOG_RETAIN_SECONDS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of seconds to retain logs on the NodeManager. Only applicable if Log
 aggregation is disabled]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOG_RETAIN_SECONDS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOG_AGGREGATION_ROLL_MONITORING_INTERVAL_SECONDS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Define how often NMs wake up and upload log files]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOG_AGGREGATION_ROLL_MONITORING_INTERVAL_SECONDS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LOG_DELETION_THREADS_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads used in log cleanup. Only applicable if Log aggregation
 is disabled]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOG_DELETE_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_REMOTE_APP_LOG_DIR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Where to aggregate logs to.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_REMOTE_APP_LOG_DIR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_REMOTE_APP_LOG_DIR_SUFFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The remote log dir will be created at
 NM_REMOTE_APP_LOG_DIR/${user}/NM_REMOTE_APP_LOG_DIR_SUFFIX/${appId}]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_REMOTE_APP_LOG_DIR_SUFFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_LOG_SERVER_URL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_TRACKING_URL_GENERATOR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_PMEM_MB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Amount of memory in GB that can be allocated for containers.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_PMEM_MB" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_PMEM_CHECK_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Specifies whether physical memory check is enabled.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_PMEM_CHECK_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_VMEM_CHECK_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Specifies whether physical memory check is enabled.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_VMEM_CHECK_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_VMEM_PMEM_RATIO" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Conversion ratio for physical memory to virtual memory.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_VMEM_PMEM_RATIO" type="float"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_VCORES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of Virtual CPU Cores which can be allocated for containers.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_VCORES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_RESOURCE_PERCENTAGE_PHYSICAL_CPU_LIMIT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Percentage of overall CPU which can be allocated for containers.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_RESOURCE_PERCENTAGE_PHYSICAL_CPU_LIMIT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_WEBAPP_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[NM Webapp address.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_WEBAPP_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_NM_WEBAPP_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_WEBAPP_HTTPS_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[NM Webapp https address.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_WEBAPP_HTTPS_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_NM_WEBAPP_HTTPS_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_WEBAPP_ENABLE_CORS_FILTER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Enable/disable CORS filter.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_WEBAPP_ENABLE_CORS_FILTER" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_CONTAINER_MON_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[How often to monitor containers.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_CONTAINER_MON_INTERVAL_MS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_CONTAINER_MON_RESOURCE_CALCULATOR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Class that calculates containers current resource utilization.]]>
      </doc>
    </field>
    <field name="NM_CONTAINER_MON_PROCESS_TREE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Class that calculates process tree resource utilization.]]>
      </doc>
    </field>
    <field name="PROCFS_USE_SMAPS_BASED_RSS_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_PROCFS_USE_SMAPS_BASED_RSS_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_CONTAINER_METRICS_ENABLE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Enable/disable container metrics.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_CONTAINER_METRICS_ENABLE" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_CONTAINER_METRICS_PERIOD_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Container metrics flush period. -1 for flush on completion.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_CONTAINER_METRICS_PERIOD_MS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_CONTAINER_METRICS_UNREGISTER_DELAY_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The delay time ms to unregister container metrics after completion.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_CONTAINER_METRICS_UNREGISTER_DELAY_MS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_DISK_HEALTH_CHECK_ENABLE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Enable/Disable disks' health checker. Default is true. An expert level
 configuration property.]]>
      </doc>
    </field>
    <field name="NM_DISK_HEALTH_CHECK_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Frequency of running disks' health checker.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_DISK_HEALTH_CHECK_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[By default, disks' health is checked every 2 minutes.]]>
      </doc>
    </field>
    <field name="NM_MIN_HEALTHY_DISKS_FRACTION" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The minimum fraction of number of disks to be healthy for the nodemanager
 to launch new containers. This applies to nm-local-dirs and nm-log-dirs.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_MIN_HEALTHY_DISKS_FRACTION" type="float"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[By default, at least 25% of disks are to be healthy to say that the node is
 healthy in terms of disks.]]>
      </doc>
    </field>
    <field name="NM_MAX_PER_DISK_UTILIZATION_PERCENTAGE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The maximum percentage of disk space that can be used after which a disk is
 marked as offline. Values can range from 0.0 to 100.0. If the value is
 greater than or equal to 100, NM will check for full disk. This applies to
 nm-local-dirs and nm-log-dirs.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_MAX_PER_DISK_UTILIZATION_PERCENTAGE" type="float"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[By default, 90% of the disk can be used before it is marked as offline.]]>
      </doc>
    </field>
    <field name="NM_MIN_PER_DISK_FREE_SPACE_MB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The minimum space that must be available on a local dir for it to be used.
 This applies to nm-local-dirs and nm-log-dirs.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_MIN_PER_DISK_FREE_SPACE_MB" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[By default, all of the disk can be used before it is marked as offline.]]>
      </doc>
    </field>
    <field name="NM_HEALTH_CHECK_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Frequency of running node health script.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_HEALTH_CHECK_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_HEALTH_CHECK_SCRIPT_TIMEOUT_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Health check script time out period.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_HEALTH_CHECK_SCRIPT_TIMEOUT_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_HEALTH_CHECK_SCRIPT_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The health check script to run.]]>
      </doc>
    </field>
    <field name="NM_HEALTH_CHECK_SCRIPT_OPTS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The arguments to pass to the health check script.]]>
      </doc>
    </field>
    <field name="NM_DOCKER_CONTAINER_EXECUTOR_IMAGE_NAME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The Docker image name(For DockerContainerExecutor).]]>
      </doc>
    </field>
    <field name="NM_DOCKER_CONTAINER_EXECUTOR_EXEC_NAME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The name of the docker executor (For DockerContainerExecutor).]]>
      </doc>
    </field>
    <field name="NM_DEFAULT_DOCKER_CONTAINER_EXECUTOR_EXEC_NAME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The default docker executor (For DockerContainerExecutor).]]>
      </doc>
    </field>
    <field name="NM_LINUX_CONTAINER_EXECUTOR_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The path to the Linux container executor.]]>
      </doc>
    </field>
    <field name="NM_LINUX_CONTAINER_GROUP" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The UNIX group that the linux-container-executor should run as.
 This is intended to be set as part of container-executor.cfg.]]>
      </doc>
    </field>
    <field name="NM_NONSECURE_MODE_LIMIT_USERS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[If linux-container-executor should limit itself to one user
 when running in non-secure mode.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_NONSECURE_MODE_LIMIT_USERS" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_NONSECURE_MODE_LOCAL_USER_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The UNIX user that containers will run as when Linux-container-executor
 is used in nonsecure mode (a use case for this is using cgroups).]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_NONSECURE_MODE_LOCAL_USER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_NONSECURE_MODE_USER_PATTERN_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The allowed pattern for UNIX user names enforced by
 Linux-container-executor when used in nonsecure mode (use case for this
 is using cgroups). The default value is taken from /usr/sbin/adduser]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_NONSECURE_MODE_USER_PATTERN" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LINUX_CONTAINER_RESOURCES_HANDLER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The type of resource enforcement to use with the
  linux container executor.]]>
      </doc>
    </field>
    <field name="NM_LINUX_CONTAINER_CGROUPS_HIERARCHY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The path the linux container executor should use for cgroups]]>
      </doc>
    </field>
    <field name="NM_LINUX_CONTAINER_CGROUPS_MOUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Whether the linux container executor should mount cgroups if not found]]>
      </doc>
    </field>
    <field name="NM_LINUX_CONTAINER_CGROUPS_MOUNT_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Where the linux container executor should mount cgroups if not found]]>
      </doc>
    </field>
    <field name="NM_LINUX_CONTAINER_CGROUPS_STRICT_RESOURCE_USAGE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Whether the apps should run in strict resource usage mode(not allowed to
 use spare CPU)]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LINUX_CONTAINER_CGROUPS_STRICT_RESOURCE_USAGE" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LINUX_CONTAINER_CGROUPS_DELETE_TIMEOUT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Interval of time the linux container executor should try cleaning up
 cgroups entry when cleaning up a container. This is required due to what
 it seems a race condition because the SIGTERM/SIGKILL is asynch.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LINUX_CONTAINER_CGROUPS_DELETE_TIMEOUT" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_LINUX_CONTAINER_CGROUPS_DELETE_DELAY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Delay between attempts to remove linux cgroup.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LINUX_CONTAINER_CGROUPS_DELETE_DELAY" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_WINDOWS_CONTAINER_MEMORY_LIMIT_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Indicates if memory and CPU limits will be set for the Windows Job
 Object for the containers launched by the default container executor.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_WINDOWS_CONTAINER_MEMORY_LIMIT_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_WINDOWS_CONTAINER_CPU_LIMIT_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_NM_WINDOWS_CONTAINER_CPU_LIMIT_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_WINDOWS_SECURE_CONTAINER_GROUP" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[/* The Windows group that the windows-secure-container-executor should run as.]]>
      </doc>
    </field>
    <field name="NM_LOG_AGG_COMPRESSION_TYPE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[T-file compression types used to compress aggregated logs.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_LOG_AGG_COMPRESSION_TYPE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_PRINCIPAL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The kerberos principal for the node manager.]]>
      </doc>
    </field>
    <field name="NM_AUX_SERVICES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_AUX_SERVICE_FMT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_USER_HOME_DIR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_WEBAPP_SPNEGO_USER_NAME_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The kerberos principal to be used for spnego filter for NM.]]>
      </doc>
    </field>
    <field name="NM_WEBAPP_SPNEGO_KEYTAB_FILE_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The kerberos keytab to be used for spnego filter for NM.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_USER_HOME_DIR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_RECOVERY_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_RECOVERY_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_NM_RECOVERY_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_RECOVERY_DIR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="PROXY_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="PROXY_PRINCIPAL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The kerberos principal for the proxy.]]>
      </doc>
    </field>
    <field name="PROXY_KEYTAB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Keytab for Proxy.]]>
      </doc>
    </field>
    <field name="PROXY_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address for the web proxy.]]>
      </doc>
    </field>
    <field name="DEFAULT_PROXY_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_PROXY_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_SECURITY_SERVICE_AUTHORIZATION_RESOURCETRACKER_PROTOCOL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[YARN Service Level Authorization]]>
      </doc>
    </field>
    <field name="YARN_SECURITY_SERVICE_AUTHORIZATION_APPLICATIONCLIENT_PROTOCOL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_SECURITY_SERVICE_AUTHORIZATION_RESOURCEMANAGER_ADMINISTRATION_PROTOCOL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_SECURITY_SERVICE_AUTHORIZATION_APPLICATIONMASTER_PROTOCOL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_SECURITY_SERVICE_AUTHORIZATION_CONTAINER_MANAGEMENT_PROTOCOL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_SECURITY_SERVICE_AUTHORIZATION_RESOURCE_LOCALIZER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_SECURITY_SERVICE_AUTHORIZATION_APPLICATIONHISTORY_PROTOCOL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_SLEEP_DELAY_BEFORE_SIGKILL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[No. of milliseconds to wait between sending a SIGTERM and SIGKILL
 to a running container]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_SLEEP_DELAY_BEFORE_SIGKILL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_PROCESS_KILL_WAIT_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Max time to wait for a process to come up when trying to cleanup
 container resources]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_PROCESS_KILL_WAIT_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RESOURCEMANAGER_CONNECT_MAX_WAIT_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Max time to wait to establish a connection to RM]]>
      </doc>
    </field>
    <field name="DEFAULT_RESOURCEMANAGER_CONNECT_MAX_WAIT_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="RESOURCEMANAGER_CONNECT_RETRY_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Time interval between each attempt to connect to RM]]>
      </doc>
    </field>
    <field name="DEFAULT_RESOURCEMANAGER_CONNECT_RETRY_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DISPATCHER_DRAIN_EVENTS_TIMEOUT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_DISPATCHER_DRAIN_EVENTS_TIMEOUT" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_APPLICATION_CLASSPATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[CLASSPATH for YARN applications. A comma-separated list of CLASSPATH
 entries]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_CROSS_PLATFORM_APPLICATION_CLASSPATH" type="java.lang.String[]"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Default platform-agnostic CLASSPATH for YARN applications. A
 comma-separated list of CLASSPATH entries. The parameter expansion marker
 will be replaced with real parameter expansion marker ('%' for Windows and
 '$' for Linux) by NodeManager on container launch. For example: {{VAR}}
 will be replaced as $VAR on Linux, and %VAR% on Windows.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_APPLICATION_CLASSPATH" type="java.lang.String[]"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[<p>
 Default platform-specific CLASSPATH for YARN applications. A
 comma-separated list of CLASSPATH entries constructed based on the client
 OS environment expansion syntax.
 </p>
 <p>
 Note: Use {@link #DEFAULT_YARN_CROSS_PLATFORM_APPLICATION_CLASSPATH} for
 cross-platform practice i.e. submit an application from a Windows client to
 a Linux/Unix server or vice versa.
 </p>]]>
      </doc>
    </field>
    <field name="DEFAULT_CONTAINER_TEMP_DIR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Container temp directory]]>
      </doc>
    </field>
    <field name="IS_MINI_YARN_CLUSTER" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_MC_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_MINICLUSTER_FIXED_PORTS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Whether to use fixed ports with the minicluster.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_MINICLUSTER_FIXED_PORTS" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Default is false to be able to run tests concurrently without port
 conflicts.]]>
      </doc>
    </field>
    <field name="YARN_MINICLUSTER_USE_RPC" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Whether the NM should use RPC to connect to the RM. Default is false.
 Can be set to true only when using fixed ports.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_MINICLUSTER_USE_RPC" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_MINICLUSTER_CONTROL_RESOURCE_MONITORING" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Whether users are explicitly trying to control resource monitoring
 configuration for the MiniYARNCluster. Disabled by default.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_MINICLUSTER_CONTROL_RESOURCE_MONITORING" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_MINICLUSTER_NM_PMEM_MB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Allow changing the memory for the NodeManager in the MiniYARNCluster]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_MINICLUSTER_NM_PMEM_MB" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_APP_CONTAINER_LOG_DIR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The log directory for the containers]]>
      </doc>
    </field>
    <field name="YARN_APP_CONTAINER_LOG_SIZE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_APP_CONTAINER_LOG_BACKUPS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_UI_NAMES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Comma seperated list of names for UIs hosted in the timeline server
 (For pluggable UIs).]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_UI_WEB_PATH_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Relative web path that will serve up this UI (For pluggable UIs).]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_UI_ON_DISK_PATH_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Path to war file or static content directory for this UI
 (For pluggable UIs).]]>
      </doc>
    </field>
    <field name="APPLICATION_HISTORY_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="APPLICATION_HISTORY_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The setting that controls whether application history service is
  enabled or not.]]>
      </doc>
    </field>
    <field name="DEFAULT_APPLICATION_HISTORY_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="APPLICATION_HISTORY_STORE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Application history store class]]>
      </doc>
    </field>
    <field name="APPLICATION_HISTORY_SAVE_NON_AM_CONTAINER_META_INFO" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Save container meta-info in the application history store.]]>
      </doc>
    </field>
    <field name="DEFAULT_APPLICATION_HISTORY_SAVE_NON_AM_CONTAINER_META_INFO" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="FS_APPLICATION_HISTORY_STORE_URI" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[URI for FileSystemApplicationHistoryStore]]>
      </doc>
    </field>
    <field name="FS_APPLICATION_HISTORY_STORE_COMPRESSION_TYPE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[T-file compression types used to compress history data.]]>
      </doc>
    </field>
    <field name="DEFAULT_FS_APPLICATION_HISTORY_STORE_COMPRESSION_TYPE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The setting that controls whether timeline service is enabled or not.]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[host:port address for timeline service RPC APIs.]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_BIND_HOST" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The listening endpoint for the timeline service application.]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_HANDLER_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The number of threads to handle client RPC API requests.]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_CLIENT_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_WEBAPP_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the timeline service web application.]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_WEBAPP_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_WEBAPP_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_WEBAPP_HTTPS_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The https address of the timeline service web application.]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_WEBAPP_HTTPS_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_WEBAPP_HTTPS_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="APPLICATION_HISTORY_MAX_APPS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Defines the max number of applications could be fetched using
 REST API or application history protocol and shown in timeline
 server web ui.]]>
      </doc>
    </field>
    <field name="DEFAULT_APPLICATION_HISTORY_MAX_APPS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_STORE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service store class]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_TTL_ENABLE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service enable data age off]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_TTL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service length of time to retain data]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_TTL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_LEVELDB_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_LEVELDB_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service leveldb path]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_LEVELDB_READ_CACHE_SIZE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service leveldb read cache (uncompressed blocks)]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_LEVELDB_READ_CACHE_SIZE" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_LEVELDB_START_TIME_READ_CACHE_SIZE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service leveldb start time read cache (number of entities)]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_LEVELDB_START_TIME_READ_CACHE_SIZE" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_LEVELDB_START_TIME_WRITE_CACHE_SIZE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service leveldb start time write cache (number of entities)]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_LEVELDB_START_TIME_WRITE_CACHE_SIZE" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_LEVELDB_TTL_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service leveldb interval to wait between deletion rounds]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_LEVELDB_TTL_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_PRINCIPAL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The Kerberos principal for the timeline server.]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_KEYTAB" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The Kerberos keytab for the timeline server.]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_HTTP_CROSS_ORIGIN_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Enables cross origin support for timeline server.]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_HTTP_CROSS_ORIGIN_ENABLED_DEFAULT" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Default value for cross origin support for timeline server.]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_CLIENT_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline client settings]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_CLIENT_MAX_RETRIES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline client call, max retries (-1 means no limit)]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_CLIENT_MAX_RETRIES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_CLIENT_RETRY_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline client call, retry interval]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_CLIENT_RETRY_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_CLIENT_BEST_EFFORT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline client policy for whether connections are fatal]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_CLIENT_BEST_EFFORT" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_RECOVERY_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Flag to enable recovery of timeline service]]>
      </doc>
    </field>
    <field name="DEFAULT_TIMELINE_SERVICE_RECOVERY_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_STATE_STORE_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service state store class]]>
      </doc>
    </field>
    <field name="TIMELINE_SERVICE_LEVELDB_STATE_STORE_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_SERVICE_LEVELDB_STATE_STORE_PATH" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Timeline service state store leveldb path]]>
      </doc>
    </field>
    <field name="TIMELINE_DELEGATION_KEY_UPDATE_INTERVAL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_TIMELINE_DELEGATION_KEY_UPDATE_INTERVAL" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_DELEGATION_TOKEN_RENEW_INTERVAL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_TIMELINE_DELEGATION_TOKEN_RENEW_INTERVAL" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="TIMELINE_DELEGATION_TOKEN_MAX_LIFETIME" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_TIMELINE_DELEGATION_TOKEN_MAX_LIFETIME" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SHARED_CACHE_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SHARED_CACHE_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[whether the shared cache is enabled/disabled]]>
      </doc>
    </field>
    <field name="DEFAULT_SHARED_CACHE_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SHARED_CACHE_ROOT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The config key for the shared cache root directory.]]>
      </doc>
    </field>
    <field name="DEFAULT_SHARED_CACHE_ROOT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SHARED_CACHE_NESTED_LEVEL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The config key for the level of nested directories before getting to the
 checksum directory.]]>
      </doc>
    </field>
    <field name="DEFAULT_SHARED_CACHE_NESTED_LEVEL" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_STORE_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_STORE_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_SCM_STORE_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_APP_CHECKER_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_SCM_APP_CHECKER_CLASS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_ADMIN_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the SCM admin interface.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_ADMIN_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_SCM_ADMIN_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_ADMIN_CLIENT_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Number of threads used to handle SCM admin interface.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_ADMIN_CLIENT_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_WEBAPP_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the SCM web application.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_WEBAPP_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_SCM_WEBAPP_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="IN_MEMORY_STORE_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="IN_MEMORY_STALENESS_PERIOD_MINS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[A resource in the InMemorySCMStore is considered stale if the time since
 the last reference exceeds the staleness period. This value is specified in
 minutes.]]>
      </doc>
    </field>
    <field name="DEFAULT_IN_MEMORY_STALENESS_PERIOD_MINS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="IN_MEMORY_INITIAL_DELAY_MINS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Initial delay before the in-memory store runs its first check to remove
 dead initial applications. Specified in minutes.]]>
      </doc>
    </field>
    <field name="DEFAULT_IN_MEMORY_INITIAL_DELAY_MINS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="IN_MEMORY_CHECK_PERIOD_MINS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The frequency at which the in-memory store checks to remove dead initial
 applications. Specified in minutes.]]>
      </doc>
    </field>
    <field name="DEFAULT_IN_MEMORY_CHECK_PERIOD_MINS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_CLEANER_PERIOD_MINS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The frequency at which a cleaner task runs. Specified in minutes.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_CLEANER_PERIOD_MINS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_CLEANER_INITIAL_DELAY_MINS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Initial delay before the first cleaner task is scheduled. Specified in
 minutes.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_CLEANER_INITIAL_DELAY_MINS" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_CLEANER_RESOURCE_SLEEP_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The time to sleep between processing each shared cache resource. Specified
 in milliseconds.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_CLEANER_RESOURCE_SLEEP_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_UPLOADER_SERVER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the node manager interface in the SCM.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_UPLOADER_SERVER_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_SCM_UPLOADER_SERVER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_UPLOADER_SERVER_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The number of SCM threads used to handle notify requests from the node
 manager.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_UPLOADER_SERVER_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_CLIENT_SERVER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The address of the client interface in the SCM.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_CLIENT_SERVER_PORT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_SCM_CLIENT_SERVER_ADDRESS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SCM_CLIENT_SERVER_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The number of threads used to handle shared cache manager requests.]]>
      </doc>
    </field>
    <field name="DEFAULT_SCM_CLIENT_SERVER_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SHARED_CACHE_CHECKSUM_ALGO_IMPL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[the checksum algorithm implementation]]>
      </doc>
    </field>
    <field name="DEFAULT_SHARED_CACHE_CHECKSUM_ALGO_IMPL" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SHARED_CACHE_NM_UPLOADER_REPLICATION_FACTOR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The replication factor for the node manager uploader for the shared cache.]]>
      </doc>
    </field>
    <field name="DEFAULT_SHARED_CACHE_NM_UPLOADER_REPLICATION_FACTOR" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="SHARED_CACHE_NM_UPLOADER_THREAD_COUNT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_SHARED_CACHE_NM_UPLOADER_THREAD_COUNT" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_CLIENT_APP_SUBMISSION_POLL_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Use YARN_CLIENT_APPLICATION_CLIENT_PROTOCOL_POLL_INTERVAL_MS instead.
 The interval of the yarn client's querying application state after
 application submission. The unit is millisecond.]]>
      </doc>
    </field>
    <field name="YARN_CLIENT_APPLICATION_CLIENT_PROTOCOL_POLL_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The interval that the yarn client library uses to poll the completion
 status of the asynchronous API of application client protocol.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_CLIENT_APPLICATION_CLIENT_PROTOCOL_POLL_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_CLIENT_APPLICATION_CLIENT_PROTOCOL_POLL_TIMEOUT_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[The duration that the yarn client library waits, cumulatively across polls,
 for an expected state change to occur. Defaults to -1, which indicates no
 limit.]]>
      </doc>
    </field>
    <field name="DEFAULT_YARN_CLIENT_APPLICATION_CLIENT_PROTOCOL_POLL_TIMEOUT_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_CLIENT_ASYNC_THREAD_POOL_MAX_SIZE" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Max number of threads in NMClientAsync to process container management
 events]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_CLIENT_ASYNC_THREAD_POOL_MAX_SIZE" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NM_CLIENT_MAX_NM_PROXIES" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Maximum number of proxy connections to cache for node managers. If set
 to a value greater than zero then the cache is enabled and the NMClient
 and MRAppMaster will cache the specified number of node manager proxies.
 There will be at max one proxy per node manager. Ex. configuring it to a
 value of 5 will make sure that client will at max have 5 proxies cached
 with 5 different node managers. These connections for these proxies will
 be timed out if idle for more than the system wide idle timeout period.
 Note that this could cause issues on large clusters as many connections
 could linger simultaneously and lead to a large number of connection
 threads. The token used for authentication will be used only at
 connection creation time. If a new token is received then the earlier
 connection should be closed in order to use the new token. This and
 {@link YarnConfiguration#NM_CLIENT_ASYNC_THREAD_POOL_MAX_SIZE} are related
 and should be in sync (no need for them to be equal).
 If the value of this property is zero then the connection cache is
 disabled and connections will use a zero idle timeout to prevent too
 many connection threads on large clusters.]]>
      </doc>
    </field>
    <field name="DEFAULT_NM_CLIENT_MAX_NM_PROXIES" type="int"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_NM_CONNECT_MAX_WAIT_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Max time to wait to establish a connection to NM]]>
      </doc>
    </field>
    <field name="DEFAULT_CLIENT_NM_CONNECT_MAX_WAIT_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="CLIENT_NM_CONNECT_RETRY_INTERVAL_MS" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Time interval between each attempt to connect to NM]]>
      </doc>
    </field>
    <field name="DEFAULT_CLIENT_NM_CONNECT_RETRY_INTERVAL_MS" type="long"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_HTTP_POLICY_KEY" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="YARN_HTTP_POLICY_DEFAULT" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NODE_LABELS_PREFIX" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Node-labels configurations]]>
      </doc>
    </field>
    <field name="FS_NODE_LABELS_STORE_ROOT_DIR" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[URI for NodeLabelManager]]>
      </doc>
    </field>
    <field name="FS_NODE_LABELS_STORE_RETRY_POLICY_SPEC" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="DEFAULT_FS_NODE_LABELS_STORE_RETRY_POLICY_SPEC" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
    <field name="NODE_LABELS_ENABLED" type="java.lang.String"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Flag to indicate if the node labels feature enabled, by default it's
 disabled]]>
      </doc>
    </field>
    <field name="DEFAULT_NODE_LABELS_ENABLED" type="boolean"
      transient="false" volatile="false"
      static="true" final="true" visibility="public"
      deprecated="not deprecated">
    </field>
  </class>
  <!-- end class org.apache.hadoop.yarn.conf.YarnConfiguration -->
</package>
<package name="org.apache.hadoop.yarn.exceptions">
  <!-- start class org.apache.hadoop.yarn.exceptions.ApplicationAttemptNotFoundException -->
  <class name="ApplicationAttemptNotFoundException" extends="org.apache.hadoop.yarn.exceptions.YarnException"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationAttemptNotFoundException" type="java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="ApplicationAttemptNotFoundException" type="java.lang.String"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="ApplicationAttemptNotFoundException" type="java.lang.String, java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[This exception is thrown on
 {@link ApplicationHistoryProtocol#getApplicationAttemptReport (GetApplicationAttemptReportRequest)}
 API when the Application Attempt doesn't exist in Application History Server or
 {@link ApplicationMasterProtocol#allocate(AllocateRequest)} if application
 doesn't exist in RM.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.exceptions.ApplicationAttemptNotFoundException -->
  <!-- start class org.apache.hadoop.yarn.exceptions.ApplicationIdNotProvidedException -->
  <class name="ApplicationIdNotProvidedException" extends="org.apache.hadoop.yarn.exceptions.YarnException"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationIdNotProvidedException" type="java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="ApplicationIdNotProvidedException" type="java.lang.String"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="ApplicationIdNotProvidedException" type="java.lang.String, java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[Exception to be thrown when Client submit an application without
 providing {@link ApplicationId} in {@link ApplicationSubmissionContext}.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.exceptions.ApplicationIdNotProvidedException -->
  <!-- start class org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException -->
  <class name="ApplicationNotFoundException" extends="org.apache.hadoop.yarn.exceptions.YarnException"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationNotFoundException" type="java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="ApplicationNotFoundException" type="java.lang.String"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="ApplicationNotFoundException" type="java.lang.String, java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[This exception is thrown on
 {@link ApplicationClientProtocol#getApplicationReport
 (GetApplicationReportRequest)} API
 when the Application doesn't exist in RM and AHS]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.exceptions.ApplicationNotFoundException -->
  <!-- start class org.apache.hadoop.yarn.exceptions.ContainerNotFoundException -->
  <class name="ContainerNotFoundException" extends="org.apache.hadoop.yarn.exceptions.YarnException"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerNotFoundException" type="java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="ContainerNotFoundException" type="java.lang.String"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="ContainerNotFoundException" type="java.lang.String, java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[This exception is thrown on
 {@link ApplicationHistoryProtocol#getContainerReport (GetContainerReportRequest)}
 API when the container doesn't exist in AHS]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.exceptions.ContainerNotFoundException -->
  <!-- start class org.apache.hadoop.yarn.exceptions.YarnException -->
  <class name="YarnException" extends="java.lang.Exception"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="YarnException"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="YarnException" type="java.lang.String"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="YarnException" type="java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <constructor name="YarnException" type="java.lang.String, java.lang.Throwable"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[YarnException indicates exceptions from yarn servers. On the other hand,
 IOExceptions indicates exceptions from RPC layer.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.exceptions.YarnException -->
</package>
<package name="org.apache.hadoop.yarn.server.api">
  <!-- start class org.apache.hadoop.yarn.server.api.ApplicationInitializationContext -->
  <class name="ApplicationInitializationContext" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationInitializationContext" type="java.lang.String, org.apache.hadoop.yarn.api.records.ApplicationId, java.nio.ByteBuffer"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getUser" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the user-name of the application-submitter

 @return user-name]]>
      </doc>
    </method>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get {@link ApplicationId} of the application

 @return applications ID]]>
      </doc>
    </method>
    <method name="getApplicationDataForService" return="java.nio.ByteBuffer"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the data sent to the NodeManager via
 {@link ContainerManagementProtocol#startContainers(StartContainersRequest)}
 as part of {@link ContainerLaunchContext#getServiceData()}

 @return the servicesData for this application.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Initialization context for {@link AuxiliaryService} when starting an
 application.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.server.api.ApplicationInitializationContext -->
  <!-- start class org.apache.hadoop.yarn.server.api.ApplicationTerminationContext -->
  <class name="ApplicationTerminationContext" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ApplicationTerminationContext" type="org.apache.hadoop.yarn.api.records.ApplicationId"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getApplicationId" return="org.apache.hadoop.yarn.api.records.ApplicationId"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get {@link ApplicationId} of the application being stopped.

 @return applications ID]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Initialization context for {@link AuxiliaryService} when stopping an
 application.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.server.api.ApplicationTerminationContext -->
  <!-- start class org.apache.hadoop.yarn.server.api.AuxiliaryService -->
  <class name="AuxiliaryService" extends="org.apache.hadoop.service.AbstractService"
    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="AuxiliaryService" type="java.lang.String"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
    </constructor>
    <method name="getRecoveryPath" return="org.apache.hadoop.fs.Path"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="protected"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get the path specific to this auxiliary service to use for recovery.

 @return state storage path or null if recovery is not enabled]]>
      </doc>
    </method>
    <method name="initializeApplication"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="initAppContext" type="org.apache.hadoop.yarn.server.api.ApplicationInitializationContext"/>
      <doc>
      <![CDATA[A new application is started on this NodeManager. This is a signal to
 this {@link AuxiliaryService} about the application initialization.

 @param initAppContext context for the application's initialization]]>
      </doc>
    </method>
    <method name="stopApplication"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="stopAppContext" type="org.apache.hadoop.yarn.server.api.ApplicationTerminationContext"/>
      <doc>
      <![CDATA[An application is finishing on this NodeManager. This is a signal to this
 {@link AuxiliaryService} about the same.

 @param stopAppContext context for the application termination]]>
      </doc>
    </method>
    <method name="getMetaData" return="java.nio.ByteBuffer"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Retrieve meta-data for this {@link AuxiliaryService}. Applications using
 this {@link AuxiliaryService} SHOULD know the format of the meta-data -
 ideally each service should provide a method to parse out the information
 to the applications. One example of meta-data is contact information so
 that applications can access the service remotely. This will only be called
 after the service's {@link #start()} method has finished. the result may be
 cached.

 <p>
 The information is passed along to applications via
 {@link StartContainersResponse#getAllServicesMetaData()} that is returned by
 {@link ContainerManagementProtocol#startContainers(StartContainersRequest)}
 </p>

 @return meta-data for this service that should be made available to
         applications.]]>
      </doc>
    </method>
    <method name="initializeContainer"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="initContainerContext" type="org.apache.hadoop.yarn.server.api.ContainerInitializationContext"/>
      <doc>
      <![CDATA[A new container is started on this NodeManager. This is a signal to
 this {@link AuxiliaryService} about the container initialization.
 This method is called when the NodeManager receives the container launch
 command from the ApplicationMaster and before the container process is
 launched.

 @param initContainerContext context for the container's initialization]]>
      </doc>
    </method>
    <method name="stopContainer"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="stopContainerContext" type="org.apache.hadoop.yarn.server.api.ContainerTerminationContext"/>
      <doc>
      <![CDATA[A container is finishing on this NodeManager. This is a signal to this
 {@link AuxiliaryService} about the same.

 @param stopContainerContext context for the container termination]]>
      </doc>
    </method>
    <method name="setRecoveryPath"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="recoveryPath" type="org.apache.hadoop.fs.Path"/>
      <doc>
      <![CDATA[Set the path for this auxiliary service to use for storing state
 that will be used during recovery.

 @param recoveryPath where recoverable state should be stored]]>
      </doc>
    </method>
    <doc>
    <![CDATA[A generic service that will be started by the NodeManager. This is a service
 that administrators have to configure on each node by setting
 {@link YarnConfiguration#NM_AUX_SERVICES}.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.server.api.AuxiliaryService -->
  <!-- start class org.apache.hadoop.yarn.server.api.ContainerContext -->
  <class name="ContainerContext" extends="java.lang.Object"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerContext" type="java.lang.String, org.apache.hadoop.yarn.api.records.ContainerId, org.apache.hadoop.yarn.api.records.Resource"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <method name="getUser" return="java.lang.String"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get user of the container being initialized or stopped.

 @return the user]]>
      </doc>
    </method>
    <method name="getContainerId" return="org.apache.hadoop.yarn.api.records.ContainerId"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get {@link ContainerId} of the container being initialized or stopped.

 @return the container ID]]>
      </doc>
    </method>
    <method name="getResource" return="org.apache.hadoop.yarn.api.records.Resource"
      abstract="false" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <doc>
      <![CDATA[Get {@link Resource} the resource capability allocated to the container
 being initialized or stopped.

 @return the resource capability.]]>
      </doc>
    </method>
    <doc>
    <![CDATA[Base context class for {@link AuxiliaryService} initializing and stopping a
 container.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.server.api.ContainerContext -->
  <!-- start class org.apache.hadoop.yarn.server.api.ContainerInitializationContext -->
  <class name="ContainerInitializationContext" extends="org.apache.hadoop.yarn.server.api.ContainerContext"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerInitializationContext" type="java.lang.String, org.apache.hadoop.yarn.api.records.ContainerId, org.apache.hadoop.yarn.api.records.Resource"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[Initialization context for {@link AuxiliaryService} when starting a
 container.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.server.api.ContainerInitializationContext -->
  <!-- start class org.apache.hadoop.yarn.server.api.ContainerTerminationContext -->
  <class name="ContainerTerminationContext" extends="org.apache.hadoop.yarn.server.api.ContainerContext"
    abstract="false"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <constructor name="ContainerTerminationContext" type="java.lang.String, org.apache.hadoop.yarn.api.records.ContainerId, org.apache.hadoop.yarn.api.records.Resource"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
    </constructor>
    <doc>
    <![CDATA[Termination context for {@link AuxiliaryService} when stopping a
 container.]]>
    </doc>
  </class>
  <!-- end class org.apache.hadoop.yarn.server.api.ContainerTerminationContext -->
  <!-- start interface org.apache.hadoop.yarn.server.api.SCMAdminProtocol -->
  <interface name="SCMAdminProtocol"    abstract="true"
    static="false" final="false" visibility="public"
    deprecated="not deprecated">
    <method name="runCleanerTask" return="org.apache.hadoop.yarn.server.api.protocolrecords.RunSharedCacheCleanerTaskResponse"
      abstract="true" native="false" synchronized="false"
      static="false" final="false" visibility="public"
      deprecated="not deprecated">
      <param name="request" type="org.apache.hadoop.yarn.server.api.protocolrecords.RunSharedCacheCleanerTaskRequest"/>
      <exception name="YarnException" type="org.apache.hadoop.yarn.exceptions.YarnException"/>
      <exception name="IOException" type="java.io.IOException"/>
      <doc>
      <![CDATA[<p>
 The method used by administrators to ask SCM to run cleaner task right away
 </p>

 @param request request <code>SharedCacheManager</code> to run a cleaner task
 @return <code>SharedCacheManager</code> returns an empty response
         on success and throws an exception on rejecting the request
 @throws YarnException
 @throws IOException]]>
      </doc>
    </method>
    <doc>
    <![CDATA[<p>
 The protocol between administrators and the <code>SharedCacheManager</code>
 </p>]]>
    </doc>
  </interface>
  <!-- end interface org.apache.hadoop.yarn.server.api.SCMAdminProtocol -->
</package>
<package name="org.apache.hadoop.yarn.util">
</package>

</api>
