<!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:59 GMT 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Uses of Package org.apache.hadoop.hdfs.server.datanode (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="Uses of Package org.apache.hadoop.hdfs.server.datanode (Apache Hadoop HDFS 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><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="navBarCell1Rev">Use</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</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/hdfs/server/datanode/package-use.html" target="_top">Frames</a></li>
<li><a href="package-use.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="Uses of Package org.apache.hadoop.hdfs.server.datanode" class="title">Uses of Package<br>org.apache.hadoop.hdfs.server.datanode</h1>
</div>
<div class="contentContainer">
<ul class="blockList">
<li class="blockList">
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/package-summary.html">org.apache.hadoop.hdfs.server.datanode</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Package</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colFirst"><a href="#org.apache.hadoop.hdfs.server.datanode">org.apache.hadoop.hdfs.server.datanode</a></td>
<td class="colLast">&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colFirst"><a href="#org.apache.hadoop.hdfs.server.datanode.fsdataset">org.apache.hadoop.hdfs.server.datanode.fsdataset</a></td>
<td class="colLast">&nbsp;</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList"><a name="org.apache.hadoop.hdfs.server.datanode">
<!--   -->
</a>
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
<caption><span>Classes in <a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/package-summary.html">org.apache.hadoop.hdfs.server.datanode</a> used by <a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/package-summary.html">org.apache.hadoop.hdfs.server.datanode</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Class and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/BPServiceActorAction.html#org.apache.hadoop.hdfs.server.datanode">BPServiceActorAction</a>
<div class="block">Base class for BPServiceActor class
 Issued by BPOfferSerivce class to tell BPServiceActor 
 to take several actions.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/BPServiceActorActionException.html#org.apache.hadoop.hdfs.server.datanode">BPServiceActorActionException</a>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ChunkChecksum.html#org.apache.hadoop.hdfs.server.datanode">ChunkChecksum</a>
<div class="block">holder class that holds checksum bytes and the length in a block at which
 the checksum bytes end
 
 ex: length = 1023 and checksum is 4 bytes which is for 512 bytes, then
     the checksum applies for the last chunk, or bytes 512 - 1023</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/DataNodeLayoutVersion.Feature.html#org.apache.hadoop.hdfs.server.datanode">DataNodeLayoutVersion.Feature</a>
<div class="block">Enums for features that change the layout version.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/DirectoryScanner.ScanInfoVolumeReport.html#org.apache.hadoop.hdfs.server.datanode">DirectoryScanner.ScanInfoVolumeReport</a>
<div class="block">Helper class for compiling block info reports from report compiler threads.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/DiskBalancer.BlockMover.html#org.apache.hadoop.hdfs.server.datanode">DiskBalancer.BlockMover</a>
<div class="block">BlockMover supports moving blocks across Volumes.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/DiskBalancer.VolumePair.html#org.apache.hadoop.hdfs.server.datanode">DiskBalancer.VolumePair</a>
<div class="block">Holds source and dest volumes UUIDs and their BasePaths
 that disk balancer will be operating against.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/FileIoProvider.OPERATION.html#org.apache.hadoop.hdfs.server.datanode">FileIoProvider.OPERATION</a>
<div class="block">Lists the types of file system operations.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/FinalizedReplica.html#org.apache.hadoop.hdfs.server.datanode">FinalizedReplica</a>
<div class="block">This class describes a replica that has been finalized.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/FSCachingGetSpaceUsed.Builder.html#org.apache.hadoop.hdfs.server.datanode">FSCachingGetSpaceUsed.Builder</a>
<div class="block">The builder class.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/LocalReplica.html#org.apache.hadoop.hdfs.server.datanode">LocalReplica</a>
<div class="block">This class is used for all replicas which are on local storage media
 and hence, are backed by files.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/LocalReplica.ReplicaDirInfo.html#org.apache.hadoop.hdfs.server.datanode">LocalReplica.ReplicaDirInfo</a>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/LocalReplicaInPipeline.html#org.apache.hadoop.hdfs.server.datanode">LocalReplicaInPipeline</a>
<div class="block">This class defines a replica in a pipeline, which
 includes a persistent replica being written to by a dfs client or
 a temporary replica being replicated by a source datanode or
 being copied for the balancing purpose.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ReplicaBeingWritten.html#org.apache.hadoop.hdfs.server.datanode">ReplicaBeingWritten</a>
<div class="block">This class represents replicas being written.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ReplicaBuilder.html#org.apache.hadoop.hdfs.server.datanode">ReplicaBuilder</a>
<div class="block">This class is to be used as a builder for <code>ReplicaInfo</code> objects.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ReplicaInPipeline.html#org.apache.hadoop.hdfs.server.datanode">ReplicaInPipeline</a>
<div class="block">This defines the interface of a replica in Pipeline that's being written to</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ReplicaUnderRecovery.html#org.apache.hadoop.hdfs.server.datanode">ReplicaUnderRecovery</a>
<div class="block">This class represents replicas that are under block recovery
 It has a recovery id that is equal to the generation stamp 
 that the replica will be bumped to after recovery
 The recovery id is used to handle multiple concurrent block recoveries.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ReplicaWaitingToBeRecovered.html#org.apache.hadoop.hdfs.server.datanode">ReplicaWaitingToBeRecovered</a>
<div class="block">This class represents a replica that is waiting to be recovered.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/SecureDataNodeStarter.SecureResources.html#org.apache.hadoop.hdfs.server.datanode">SecureDataNodeStarter.SecureResources</a>
<div class="block">Stash necessary resources needed for datanode operation in a secure env.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ShortCircuitRegistry.NewShmInfo.html#org.apache.hadoop.hdfs.server.datanode">ShortCircuitRegistry.NewShmInfo</a>&nbsp;</td>
</tr>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ShortCircuitRegistry.RegisteredShm.html#org.apache.hadoop.hdfs.server.datanode">ShortCircuitRegistry.RegisteredShm</a>&nbsp;</td>
</tr>
<tr class="rowColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/ShortCircuitRegistry.Visitor.html#org.apache.hadoop.hdfs.server.datanode">ShortCircuitRegistry.Visitor</a>&nbsp;</td>
</tr>
</tbody>
</table>
</li>
<li class="blockList"><a name="org.apache.hadoop.hdfs.server.datanode.fsdataset">
<!--   -->
</a>
<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
<caption><span>Classes in <a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/package-summary.html">org.apache.hadoop.hdfs.server.datanode</a> used by <a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/fsdataset/package-summary.html">org.apache.hadoop.hdfs.server.datanode.fsdataset</a></span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Class and Description</th>
</tr>
<tbody>
<tr class="altColor">
<td class="colOne"><a href="../../../../../../org/apache/hadoop/hdfs/server/datanode/class-use/DirectoryScanner.ReportCompiler.html#org.apache.hadoop.hdfs.server.datanode.fsdataset">DirectoryScanner.ReportCompiler</a>
<div class="block">The ReportCompiler class encapsulates the process of searching a datanode's
 disks for block information.</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><a href="package-summary.html">Package</a></li>
<li>Class</li>
<li class="navBarCell1Rev">Use</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</li>
<li>Next</li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/hadoop/hdfs/server/datanode/package-use.html" target="_top">Frames</a></li>
<li><a href="package-use.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>
