blob: ee6eabb36a6661d651f6771b2d4b25a914db1745 [file] [log] [blame]
<!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:06:56 GMT 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>DFSNetworkTopology (Apache Hadoop HDFS 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="DFSNetworkTopology (Apache Hadoop HDFS 3.3.1 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</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><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DFSNetworkTopology.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></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&nbsp;Class</li>
<li><a href="../../../../../org/apache/hadoop/hdfs/net/DFSTopologyNodeImpl.html" title="class in org.apache.hadoop.hdfs.net"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hdfs/net/DFSNetworkTopology.html" target="_top">Frames</a></li>
<li><a href="DFSNetworkTopology.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>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.net.NetworkTopology">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.org.apache.hadoop.net.NetworkTopology">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.hadoop.hdfs.net</div>
<h2 title="Class DFSNetworkTopology" class="title">Class DFSNetworkTopology</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.net.NetworkTopology</li>
<li>
<ul class="inheritance">
<li>org.apache.hadoop.hdfs.net.DFSNetworkTopology</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public class <span class="typeNameLabel">DFSNetworkTopology</span>
extends org.apache.hadoop.net.NetworkTopology</pre>
<div class="block">The HDFS specific network topology class. The main purpose of doing this
subclassing is to add storage-type-aware chooseRandom method. All the
remaining parts should be the same.
Currently a placeholder to test storage type info.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.net.NetworkTopology">
<!-- -->
</a>
<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.net.NetworkTopology</h3>
<code>org.apache.hadoop.net.NetworkTopology.InvalidTopologyException</code></li>
</ul>
</li>
</ul>
<!-- =========== FIELD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<ul class="blockList">
<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.net.NetworkTopology">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.hadoop.net.NetworkTopology</h3>
<code>DEFAULT_RACK, LOG, netlock, numOfRacks</code></li>
</ul>
</li>
</ul>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hdfs/net/DFSNetworkTopology.html#DFSNetworkTopology--">DFSNetworkTopology</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>org.apache.hadoop.net.Node</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hdfs/net/DFSNetworkTopology.html#chooseRandomWithStorageType-java.lang.String-java.util.Collection-org.apache.hadoop.fs.StorageType-">chooseRandomWithStorageType</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;scope,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;org.apache.hadoop.net.Node&gt;&nbsp;excludedNodes,
org.apache.hadoop.fs.StorageType&nbsp;type)</code>
<div class="block">Randomly choose one node from <i>scope</i>, with specified storage type.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>org.apache.hadoop.net.Node</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hdfs/net/DFSNetworkTopology.html#chooseRandomWithStorageTypeTwoTrial-java.lang.String-java.util.Collection-org.apache.hadoop.fs.StorageType-">chooseRandomWithStorageTypeTwoTrial</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;scope,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;org.apache.hadoop.net.Node&gt;&nbsp;excludedNodes,
org.apache.hadoop.fs.StorageType&nbsp;type)</code>
<div class="block">Randomly choose one node from <i>scope</i> with the given storage type.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hdfs/net/DFSNetworkTopology.html" title="class in org.apache.hadoop.hdfs.net">DFSNetworkTopology</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hdfs/net/DFSNetworkTopology.html#getInstance-org.apache.hadoop.conf.Configuration-">getInstance</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.net.NetworkTopology">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.hadoop.net.NetworkTopology</h3>
<code>add, chooseRandom, chooseRandom, chooseRandom, contains, countNumOfAvailableNodes, getDatanodesInRack, getDistance, getDistanceByPath, getFirstHalf, getInstance, getLastHalf, getLeaves, getNode, getNodeForNetworkLocation, getNumOfLeaves, getNumOfRacks, getRack, getWeight, getWeightUsingNetworkLocation, hasClusterEverBeenMultiRack, incrementRacks, init, isNodeGroupAware, isOnSameNodeGroup, isOnSameRack, isSameParents, remove, sortByDistance, sortByDistance, sortByDistanceUsingNetworkLocation, sortByDistanceUsingNetworkLocation, toString</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="DFSNetworkTopology--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>DFSNetworkTopology</h4>
<pre>public&nbsp;DFSNetworkTopology()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="getInstance-org.apache.hadoop.conf.Configuration-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getInstance</h4>
<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hdfs/net/DFSNetworkTopology.html" title="class in org.apache.hadoop.hdfs.net">DFSNetworkTopology</a>&nbsp;getInstance(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
</li>
</ul>
<a name="chooseRandomWithStorageType-java.lang.String-java.util.Collection-org.apache.hadoop.fs.StorageType-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>chooseRandomWithStorageType</h4>
<pre>public&nbsp;org.apache.hadoop.net.Node&nbsp;chooseRandomWithStorageType(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;scope,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;org.apache.hadoop.net.Node&gt;&nbsp;excludedNodes,
org.apache.hadoop.fs.StorageType&nbsp;type)</pre>
<div class="block">Randomly choose one node from <i>scope</i>, with specified storage type.
If scope starts with ~, choose one from the all nodes except for the
ones in <i>scope</i>; otherwise, choose one from <i>scope</i>.
If excludedNodes is given, choose a node that's not in excludedNodes.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>scope</code> - range of nodes from which a node will be chosen</dd>
<dd><code>excludedNodes</code> - nodes to be excluded from</dd>
<dd><code>type</code> - the storage type we search for</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the chosen node</dd>
</dl>
</li>
</ul>
<a name="chooseRandomWithStorageTypeTwoTrial-java.lang.String-java.util.Collection-org.apache.hadoop.fs.StorageType-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>chooseRandomWithStorageTypeTwoTrial</h4>
<pre>public&nbsp;org.apache.hadoop.net.Node&nbsp;chooseRandomWithStorageTypeTwoTrial(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;scope,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;org.apache.hadoop.net.Node&gt;&nbsp;excludedNodes,
org.apache.hadoop.fs.StorageType&nbsp;type)</pre>
<div class="block">Randomly choose one node from <i>scope</i> with the given storage type.
If scope starts with ~, choose one from the all nodes except for the
ones in <i>scope</i>; otherwise, choose one from <i>scope</i>.
If excludedNodes is given, choose a node that's not in excludedNodes.
This call would make up to two calls. It first tries to get a random node
(with old method) and check if it satisfies. If yes, simply return it.
Otherwise, it make a second call (with the new method) by passing in a
storage type.
This is for better performance reason. Put in short, the key note is that
the old method is faster but may take several runs, while the new method
is somewhat slower, and always succeed in one trial.
See HDFS-11535 for more detail.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>scope</code> - range of nodes from which a node will be chosen</dd>
<dd><code>excludedNodes</code> - nodes to be excluded from</dd>
<dd><code>type</code> - the storage type we search for</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the chosen node</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= 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><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/DFSNetworkTopology.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../deprecated-list.html">Deprecated</a></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&nbsp;Class</li>
<li><a href="../../../../../org/apache/hadoop/hdfs/net/DFSTopologyNodeImpl.html" title="class in org.apache.hadoop.hdfs.net"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/hadoop/hdfs/net/DFSNetworkTopology.html" target="_top">Frames</a></li>
<li><a href="DFSNetworkTopology.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>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.net.NetworkTopology">Nested</a>&nbsp;|&nbsp;</li>
<li><a href="#fields.inherited.from.class.org.apache.hadoop.net.NetworkTopology">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</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>