<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_292) on Tue Jun 15 06:09:35 GMT 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Deprecated List (Apache Hadoop YARN API 3.3.1 API)</title>
<meta name="date" content="2021-06-15">
<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="Deprecated List (Apache Hadoop YARN API 3.3.1 API)";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<div class="header">
<h1 title="Deprecated API" class="title">Deprecated API</h1>
<h2 title="Contents">Contents</h2>
<ul>
<li><a href="#field">Deprecated Fields</a></li>
<li><a href="#method">Deprecated Methods</a></li>
<li><a href="#enum.constant">Deprecated Enum Constants</a></li>
</ul>
</div>
<div class="contentContainer"><a name="field">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Fields table, listing deprecated fields, and an explanation">
<caption><span>Deprecated Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Field and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#APPLICATION_MAX_TAG_LENGTH">org.apache.hadoop.yarn.conf.YarnConfiguration.APPLICATION_MAX_TAG_LENGTH</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#APPLICATION_MAX_TAGS">org.apache.hadoop.yarn.conf.YarnConfiguration.APPLICATION_MAX_TAGS</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#AUTO_FAILOVER_EMBEDDED">org.apache.hadoop.yarn.conf.YarnConfiguration.AUTO_FAILOVER_EMBEDDED</a>
<div class="block"><span class="deprecationComment">This property should never be set to <code>false</code>.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#CURATOR_LEADER_ELECTOR">org.apache.hadoop.yarn.conf.YarnConfiguration.CURATOR_LEADER_ELECTOR</a>
<div class="block"><span class="deprecationComment">Eventually, we want to default to the curator-based
 implementation and remove the <code>ActiveStandbyElector</code> based
 implementation. We should remove this config then.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#DEFAULT_AUTO_FAILOVER_EMBEDDED">org.apache.hadoop.yarn.conf.YarnConfiguration.DEFAULT_AUTO_FAILOVER_EMBEDDED</a>
<div class="block"><span class="deprecationComment">The <a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#AUTO_FAILOVER_EMBEDDED"><code>YarnConfiguration.AUTO_FAILOVER_EMBEDDED</code></a> property is deprecated.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#DEFAULT_NM_CONTAINER_MON_INTERVAL_MS">org.apache.hadoop.yarn.conf.YarnConfiguration.DEFAULT_NM_CONTAINER_MON_INTERVAL_MS</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#DEFAULT_NM_DOCKER_STOP_GRACE_PERIOD">org.apache.hadoop.yarn.conf.YarnConfiguration.DEFAULT_NM_DOCKER_STOP_GRACE_PERIOD</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#DEFAULT_RM_STATE_STORE_MAX_COMPLETED_APPLICATIONS">org.apache.hadoop.yarn.conf.YarnConfiguration.DEFAULT_RM_STATE_STORE_MAX_COMPLETED_APPLICATIONS</a>
<div class="block"><span class="deprecationComment">This default value is ignored and will be removed in a future
 release. The default value of
 <code>yarn.resourcemanager.state-store.max-completed-applications</code> is the
 value of <a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#RM_MAX_COMPLETED_APPLICATIONS"><code>YarnConfiguration.RM_MAX_COMPLETED_APPLICATIONS</code></a>.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#DISPLAY_APPS_FOR_LOGGED_IN_USER">org.apache.hadoop.yarn.conf.YarnConfiguration.DISPLAY_APPS_FOR_LOGGED_IN_USER</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#HADOOP_HTTP_WEBAPP_SCHEDULER_PAGE">org.apache.hadoop.yarn.conf.YarnConfiguration.HADOOP_HTTP_WEBAPP_SCHEDULER_PAGE</a>
<div class="block"><span class="deprecationComment">This field is deprecated for
 <a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#YARN_HTTP_WEBAPP_SCHEDULER_PAGE"><code>YarnConfiguration.YARN_HTTP_WEBAPP_SCHEDULER_PAGE</code></a></span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#NM_DOCKER_STOP_GRACE_PERIOD">org.apache.hadoop.yarn.conf.YarnConfiguration.NM_DOCKER_STOP_GRACE_PERIOD</a>
<div class="block"><span class="deprecationComment">use <a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#NM_SLEEP_DELAY_BEFORE_SIGKILL_MS"><code>YarnConfiguration.NM_SLEEP_DELAY_BEFORE_SIGKILL_MS</code></a></span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/conf/YarnConfiguration.html#YARN_CLIENT_APP_SUBMISSION_POLL_INTERVAL_MS">org.apache.hadoop.yarn.conf.YarnConfiguration.YARN_CLIENT_APP_SUBMISSION_POLL_INTERVAL_MS</a></td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="method">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Methods table, listing deprecated methods, and an explanation">
<caption><span>Deprecated Methods</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Method and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/records/ApplicationSubmissionContext.html#getAMContainerResourceRequest--">org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext.getAMContainerResourceRequest()</a>
<div class="block"><span class="deprecationComment">See <a href="org/apache/hadoop/yarn/api/records/ApplicationSubmissionContext.html#getAMContainerResourceRequests--"><code>ApplicationSubmissionContext.getAMContainerResourceRequests()</code></a></span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/records/ContainerId.html#getId--">org.apache.hadoop.yarn.api.records.ContainerId.getId()</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/records/Resource.html#getMemory--">org.apache.hadoop.yarn.api.records.Resource.getMemory()</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.html#getNodeLabels--">org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsResponse.getNodeLabels()</a>
<div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.html#getNodeLabelList--"><code>GetClusterNodeLabelsResponse.getNodeLabelList()</code></a> instead.</span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/ContainerManagementProtocol.html#increaseContainersResource-org.apache.hadoop.yarn.api.protocolrecords.IncreaseContainersResourceRequest-">org.apache.hadoop.yarn.api.ContainerManagementProtocol.increaseContainersResource(IncreaseContainersResourceRequest)</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/records/ContainerId.html#newInstance-org.apache.hadoop.yarn.api.records.ApplicationAttemptId-int-">org.apache.hadoop.yarn.api.records.ContainerId.newInstance(ApplicationAttemptId, int)</a></td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.html#newInstance-java.util.Set-">org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsResponse.newInstance(Set&lt;String&gt;)</a>
<div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.html#newInstance-java.util.List-"><code>GetClusterNodeLabelsResponse.newInstance(List)</code></a> instead.</span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/records/ApplicationSubmissionContext.html#setAMContainerResourceRequest-org.apache.hadoop.yarn.api.records.ResourceRequest-">org.apache.hadoop.yarn.api.records.ApplicationSubmissionContext.setAMContainerResourceRequest(ResourceRequest)</a>
<div class="block"><span class="deprecationComment">See <a href="org/apache/hadoop/yarn/api/records/ApplicationSubmissionContext.html#setAMContainerResourceRequests-java.util.List-"><code>ApplicationSubmissionContext.setAMContainerResourceRequests(List)</code></a></span></div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/records/Resource.html#setMemory-int-">org.apache.hadoop.yarn.api.records.Resource.setMemory(int)</a></td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.html#setNodeLabels-java.util.Set-">org.apache.hadoop.yarn.api.protocolrecords.GetClusterNodeLabelsResponse.setNodeLabels(Set&lt;String&gt;)</a>
<div class="block"><span class="deprecationComment">Use <a href="org/apache/hadoop/yarn/api/protocolrecords/GetClusterNodeLabelsResponse.html#setNodeLabelList-java.util.List-"><code>GetClusterNodeLabelsResponse.setNodeLabelList(List)</code></a> instead.</span></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
<a name="enum.constant">
<!--   -->
</a>
<ul class="blockList">
<li class="blockList">
<table class="deprecatedSummary" border="0" cellpadding="3" cellspacing="0" summary="Deprecated Enum Constants table, listing deprecated enum constants, and an explanation">
<caption><span>Deprecated Enum Constants</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Enum Constant and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/records/AMCommand.html#AM_RESYNC">org.apache.hadoop.yarn.api.records.AMCommand.AM_RESYNC</a>
<div class="block"><span class="deprecationComment">Sent by Resource Manager when it is out of sync with the AM and
             wants the AM get back in sync.
 
             Note: Instead of sending this command,
             <a href="org/apache/hadoop/yarn/exceptions/ApplicationMasterNotRegisteredException.html" title="class in org.apache.hadoop.yarn.exceptions"><code>ApplicationMasterNotRegisteredException</code></a> will be thrown
             when ApplicationMaster is out of sync with ResourceManager and
             ApplicationMaster is expected to re-register with RM by calling
             <a href="org/apache/hadoop/yarn/api/ApplicationMasterProtocol.html#registerApplicationMaster-org.apache.hadoop.yarn.api.protocolrecords.RegisterApplicationMasterRequest-"><code>ApplicationMasterProtocol.registerApplicationMaster(RegisterApplicationMasterRequest)</code></a></span></div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="org/apache/hadoop/yarn/api/records/AMCommand.html#AM_SHUTDOWN">org.apache.hadoop.yarn.api.records.AMCommand.AM_SHUTDOWN</a>
<div class="block"><span class="deprecationComment">Sent by Resource Manager when it wants the AM to shutdown.
             Note: This command was earlier sent by ResourceManager to
             instruct AM to shutdown if RM had restarted. Now
             <a href="org/apache/hadoop/yarn/exceptions/ApplicationAttemptNotFoundException.html" title="class in org.apache.hadoop.yarn.exceptions"><code>ApplicationAttemptNotFoundException</code></a> will be thrown in case
             that RM has restarted and AM is supposed to handle this
             exception by shutting down itself.</span></div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="overview-summary.html">Overview</a></li>
<li>Package</li>
<li>Class</li>
<li>Use</li>
<li><a href="overview-tree.html">Tree</a></li>
<li class="navBarCell1Rev">Deprecated</li>
<li><a href="index-all.html">Index</a></li>
<li><a href="help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li>Prev</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="index.html?deprecated-list.html" target="_top">Frames</a></li>
<li><a href="deprecated-list.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2008&#x2013;2021 <a href="https://www.apache.org">Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>
