<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.8">
<meta name="Forrest-skin-name" content="pelt">
<title> 
      The Hadoop Distributed File System: Architecture and Design
    </title>
<link type="text/css" href="skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
<link type="text/css" href="skin/profile.css" rel="stylesheet">
<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="shortcut icon" href="images/favicon.ico">
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
<div id="top">
<!--+
    |breadtrail
    +-->
<div class="breadtrail">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://lucene.apache.org/">Lucene</a> &gt; <a href="http://lucene.apache.org/hadoop/">Hadoop</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</div>
<!--+
    |header
    +-->
<div class="header">
<!--+
    |start group logo
    +-->
<div class="grouplogo">
<a href="http://lucene.apache.org/"><img class="logoImage" alt="Lucene" src="images/lucene_green_150.gif" title="Apache Lucene"></a>
</div>
<!--+
    |end group logo
    +-->
<!--+
    |start Project Logo
    +-->
<div class="projectlogo">
<a href="http://lucene.apache.org/hadoop/"><img class="logoImage" alt="Hadoop" src="images/hadoop-logo.jpg" title="Scalable Computing Platform"></a>
</div>
<!--+
    |end Project Logo
    +-->
<!--+
    |start Search
    +-->
<div class="searchbox">
<form action="http://www.google.com/search" method="get" class="roundtopsmall">
<input value="lucene.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
                    <input name="Search" value="Search" type="submit">
</form>
</div>
<!--+
    |end search
    +-->
<!--+
    |start Tabs
    +-->
<ul id="tabs">
<li>
<a class="unselected" href="http://lucene.apache.org/hadoop/">Project</a>
</li>
<li>
<a class="unselected" href="http://wiki.apache.org/lucene-hadoop">Wiki</a>
</li>
<li class="current">
<a class="selected" href="index.html">Hadoop 0.15 Documentation</a>
</li>
</ul>
<!--+
    |end Tabs
    +-->
</div>
</div>
<div id="main">
<div id="publishedStrip">
<!--+
    |start Subtabs
    +-->
<div id="level2tabs"></div>
<!--+
    |end Endtabs
    +-->
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<!--+
    |breadtrail
    +-->
<div class="breadtrail">

             &nbsp;
           </div>
<!--+
    |start Menu, mainarea
    +-->
<!--+
    |start Menu
    +-->
<div id="menu">
<div onclick="SwitchMenu('menu_selected_1.1', 'skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Documentation</div>
<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="index.html">Overview</a>
</div>
<div class="menuitem">
<a href="quickstart.html">Quickstart</a>
</div>
<div class="menuitem">
<a href="cluster_setup.html">Cluster Setup</a>
</div>
<div class="menupage">
<div class="menupagetitle">HDFS Architecture</div>
</div>
<div class="menuitem">
<a href="mapred_tutorial.html">Map-Reduce Tutorial</a>
</div>
<div class="menuitem">
<a href="streaming.html">Streaming</a>
</div>
<div class="menuitem">
<a href="api/index.html">API Docs</a>
</div>
<div class="menuitem">
<a href="http://wiki.apache.org/lucene-hadoop/">Wiki</a>
</div>
<div class="menuitem">
<a href="http://wiki.apache.org/lucene-hadoop/FAQ">FAQ</a>
</div>
<div class="menuitem">
<a href="http://lucene.apache.org/hadoop/mailing_lists.html">Mailing Lists</a>
</div>
</div>
<div id="credit"></div>
<div id="roundbottom">
<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
<!--+
  |alternative credits
  +-->
<div id="credit2"></div>
</div>
<!--+
    |end Menu
    +-->
<!--+
    |start content
    +-->
<div id="content">
<div title="Portable Document Format" class="pdflink">
<a class="dida" href="hdfs_design.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
        PDF</a>
</div>
<h1> 
      The Hadoop Distributed File System: Architecture and Design
    </h1>
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#Introduction"> Introduction </a>
</li>
<li>
<a href="#Assumptions+and+Goals"> Assumptions and Goals </a>
<ul class="minitoc">
<li>
<a href="#Hardware+Failure"> Hardware Failure </a>
</li>
<li>
<a href="#Streaming+Data+Access"> Streaming Data Access </a>
</li>
<li>
<a href="#Large+Data+Sets"> Large Data Sets </a>
</li>
<li>
<a href="#Simple+Coherency+Model"> Simple Coherency Model </a>
</li>
<li>
<a href="#%E2%80%9CMoving+Computation+is+Cheaper+than+Moving+Data%E2%80%9D"> &ldquo;Moving Computation is Cheaper than Moving Data&rdquo; </a>
</li>
<li>
<a href="#Portability+Across+Heterogeneous+Hardware+and+Software+Platforms"> Portability Across Heterogeneous Hardware and Software Platforms </a>
</li>
</ul>
</li>
<li>
<a href="#Namenode+and+Datanodes"> Namenode and Datanodes </a>
</li>
<li>
<a href="#The+File+System+Namespace"> The File System Namespace </a>
</li>
<li>
<a href="#Data+Replication"> Data Replication </a>
<ul class="minitoc">
<li>
<a href="#Replica+Placement%3A+The+First+Baby+Steps"> Replica Placement: The First Baby Steps </a>
</li>
<li>
<a href="#Replica+Selection"> Replica Selection </a>
</li>
<li>
<a href="#SafeMode"> SafeMode </a>
</li>
</ul>
</li>
<li>
<a href="#The+Persistence+of+File+System+Metadata"> The Persistence of File System Metadata </a>
</li>
<li>
<a href="#The+Communication+Protocols"> The Communication Protocols </a>
</li>
<li>
<a href="#Robustness"> Robustness </a>
<ul class="minitoc">
<li>
<a href="#Data+Disk+Failure%2C+Heartbeats+and+Re-Replication"> Data Disk Failure, Heartbeats and Re-Replication </a>
</li>
<li>
<a href="#Cluster+Rebalancing"> Cluster Rebalancing </a>
</li>
<li>
<a href="#Data+Integrity"> Data Integrity </a>
</li>
<li>
<a href="#Metadata+Disk+Failure"> Metadata Disk Failure </a>
</li>
<li>
<a href="#Snapshots"> Snapshots </a>
</li>
</ul>
</li>
<li>
<a href="#Data+Organization"> Data Organization </a>
<ul class="minitoc">
<li>
<a href="#Data+Blocks"> Data Blocks </a>
</li>
<li>
<a href="#Staging"> Staging </a>
</li>
<li>
<a href="#Replication+Pipelining"> Replication Pipelining </a>
</li>
</ul>
</li>
<li>
<a href="#Accessibility"> Accessibility </a>
<ul class="minitoc">
<li>
<a href="#DFSShell"> DFSShell </a>
</li>
<li>
<a href="#DFSAdmin"> DFSAdmin </a>
</li>
<li>
<a href="#Browser+Interface"> Browser Interface </a>
</li>
</ul>
</li>
<li>
<a href="#Space+Reclamation"> Space Reclamation </a>
<ul class="minitoc">
<li>
<a href="#File+Deletes+and+Undeletes"> File Deletes and Undeletes </a>
</li>
<li>
<a href="#Decrease+Replication+Factor"> Decrease Replication Factor </a>
</li>
</ul>
</li>
<li>
<a href="#References"> References </a>
</li>
</ul>
</div>
    
<a name="N10013"></a><a name="Introduction"></a>
<h2 class="h3"> Introduction </h2>
<div class="section">
<p>
      The Hadoop Distributed File System (<acronym title="Hadoop Distributed File System">HDFS</acronym>) is a distributed file system designed to run on commodity hardware. It has many similarities with existing distributed file systems. However, the differences from other distributed file systems are significant. HDFS is highly fault-tolerant and is designed to be deployed on low-cost hardware. HDFS provides high throughput access to application data and is suitable for applications that have large data sets. HDFS relaxes a few POSIX requirements to enable streaming access to file system data.  HDFS was originally built as infrastructure for the Apache Nutch web search engine project. HDFS is part of the Apache Hadoop project, which is part of the Apache Lucene project. The project URL is <a href="http://projects.apache.org/projects/hadoop.html">http://projects.apache.org/projects/hadoop.html</a>.
      </p>
</div>

    
<a name="N10025"></a><a name="Assumptions+and+Goals"></a>
<h2 class="h3"> Assumptions and Goals </h2>
<div class="section">
<a name="N1002B"></a><a name="Hardware+Failure"></a>
<h3 class="h4"> Hardware Failure </h3>
<p>
        Hardware failure is the norm rather than the exception. An HDFS instance may consist of hundreds or thousands of server machines, each storing part of the file system&rsquo;s data. The fact that there are a huge number of components and that each component has a non-trivial probability of failure means that some component of HDFS is always non-functional. Therefore, detection of faults and quick, automatic recovery from them is a core architectural goal of HDFS.
       </p>
<a name="N10035"></a><a name="Streaming+Data+Access"></a>
<h3 class="h4"> Streaming Data Access </h3>
<p>
        Applications that run on HDFS need streaming access to their data sets. They are not general purpose applications that typically run on general purpose file systems. HDFS is designed more for batch processing rather than interactive use by users. The emphasis is on high throughput of data access rather than low latency of data access. POSIX imposes many hard requirements that are not needed for applications that are targeted for HDFS. POSIX semantics in a few key areas has been traded to increase data throughput rates. 
        </p>
<a name="N1003F"></a><a name="Large+Data+Sets"></a>
<h3 class="h4"> Large Data Sets </h3>
<p>
        Applications that run on HDFS have large data sets. A typical file in HDFS is gigabytes to terabytes in size. Thus, HDFS is tuned to support large files. It should provide high aggregate data bandwidth and scale to hundreds of nodes in a single cluster. It should support tens of millions of files in a single instance.
        </p>
<a name="N10049"></a><a name="Simple+Coherency+Model"></a>
<h3 class="h4"> Simple Coherency Model </h3>
<p>
        HDFS applications need a write-once-read-many access model for files. A file once created, written, and closed need not be changed. This assumption simplifies data coherency issues and enables high throughput data access. A MapReduce application or a web crawler application fits perfectly with this model. There is a plan to support appending-writes to files in the future. 
        </p>
<a name="N10053"></a><a name="%E2%80%9CMoving+Computation+is+Cheaper+than+Moving+Data%E2%80%9D"></a>
<h3 class="h4"> &ldquo;Moving Computation is Cheaper than Moving Data&rdquo; </h3>
<p>
        A computation requested by an application is much more efficient if it is executed near the data it operates on. This is especially true when the size of the data set is huge. This minimizes network congestion and increases the overall throughput of the system. The assumption is that it is often better to migrate the computation closer to where the data is located rather than moving the data to where the application is running. HDFS provides interfaces for applications to move themselves closer to where the data is located. 
        </p>
<a name="N1005D"></a><a name="Portability+Across+Heterogeneous+Hardware+and+Software+Platforms"></a>
<h3 class="h4"> Portability Across Heterogeneous Hardware and Software Platforms </h3>
<p>
        HDFS has been designed to be easily portable from one platform to another. This facilitates widespread adoption of HDFS as a platform of choice for a large set of applications. 
        </p>
</div>

 
    
<a name="N10068"></a><a name="Namenode+and+Datanodes"></a>
<h2 class="h3"> Namenode and Datanodes </h2>
<div class="section">
<p>
      HDFS has a master/slave architecture. An HDFS cluster consists of a single <em>Namenode</em>, a master server that manages the file system namespace and regulates access to files by clients. In addition, there are a number of <em>Datanodes</em>, usually one per node in the cluster, which manage storage attached to the nodes that they run on. HDFS exposes a file system namespace and allows user data to be stored in files. Internally, a file is split into one or more blocks and these blocks are stored in a set of Datanodes. The Namenode executes file system namespace operations like opening, closing, and renaming files and directories. It also determines the mapping of blocks to Datanodes. The Datanodes are responsible for serving read and write requests from the file system&rsquo;s clients. The Datanodes also perform block creation, deletion, and replication upon instruction from the Namenode.
      </p>
<div id="" style="text-align: center;">
<img id="" class="figure" alt="HDFS Architecture" src="images/hdfsarchitecture.gif"></div>
<p>
      The Namenode and Datanode are pieces of software designed to run on commodity machines. These machines typically run a GNU/Linux operating system (<acronym title="operating system">OS</acronym>). HDFS is built using the Java language; any machine that supports Java can run the Namenode or the Datanode software. Usage of the highly portable Java language means that HDFS can be deployed on a wide range of machines. A typical deployment has a dedicated machine that runs only the Namenode software. Each of the other machines in the cluster runs one instance of the Datanode software. The architecture does not preclude running multiple Datanodes on the same machine but in a real deployment that is rarely the case.
      </p>
<p>
      The existence of a single Namenode in a cluster greatly simplifies the architecture of the system. The Namenode is the arbitrator and repository for all HDFS metadata. The system is designed in such a way that user <em>data</em> never flows through the Namenode.
      </p>
</div>

 

    
<a name="N10089"></a><a name="The+File+System+Namespace"></a>
<h2 class="h3"> The File System Namespace </h2>
<div class="section">
<p>
      HDFS supports a traditional hierarchical file organization. A user or an application can create directories and store files inside these directories. The file system namespace hierarchy is similar to most other existing file systems; one can create and remove files, move a file from one directory to another, or rename a file. HDFS does not yet implement user quotas or access permissions. HDFS does not support hard links or soft links. However, the HDFS architecture does not preclude implementing these features.
      </p>
<p>
      The Namenode maintains the file system namespace. Any change to the file system namespace or its properties is recorded by the Namenode. An application can specify the number of replicas of a file that should be maintained by HDFS. The number of copies of a file is called the replication factor of that file. This information is stored by the Namenode.
      </p>
</div>

 

    
<a name="N10096"></a><a name="Data+Replication"></a>
<h2 class="h3"> Data Replication </h2>
<div class="section">
<p>
      HDFS is designed to reliably store very large files across machines in a large cluster. It stores each file as a sequence of blocks; all blocks in a file except the last block are the same size. The blocks of a file are replicated for fault tolerance. The block size and replication factor are configurable per file. An application can specify the number of replicas of a file. The replication factor can be specified at file creation time and can be changed later. Files in HDFS are write-once and have strictly one writer at any time. 
      </p>
<p>
      The Namenode makes all decisions regarding replication of blocks. It periodically receives a <em>Heartbeat</em> and a <em>Blockreport</em> from each of the Datanodes in the cluster. Receipt of a Heartbeat implies that the Datanode is functioning properly. A Blockreport contains a list of all blocks on a Datanode. 
    </p>
<div id="" style="text-align: center;">
<img id="" class="figure" alt="HDFS Datanodes" src="images/hdfsdatanodes.gif"></div>
<a name="N100AC"></a><a name="Replica+Placement%3A+The+First+Baby+Steps"></a>
<h3 class="h4"> Replica Placement: The First Baby Steps </h3>
<p>
        The placement of replicas is critical to HDFS reliability and performance. Optimizing replica placement distinguishes HDFS from most other distributed file systems. This is a feature that needs lots of tuning and experience. The purpose of a rack-aware replica placement policy is to improve data reliability, availability, and network bandwidth utilization. The current implementation for the replica placement policy is a first effort in this direction. The short-term goals of implementing this policy are to validate it on production systems, learn more about its behavior, and build a foundation to test and research more sophisticated policies. 
        </p>
<p>
        Large HDFS instances run on a cluster of computers that commonly spread across many racks. Communication between two nodes in different racks has to go through switches. In most cases, network bandwidth between machines in the same rack is greater than network bandwidth between machines in different racks.  
        </p>
<p>
        At startup time, each Datanode determines the rack it belongs to and notifies the Namenode of its rack id upon registration. HDFS provides <acronym title="Application Programming Interface">API</acronym>s to facilitate pluggable modules that can be used to determine the rack id of a machine. A simple but non-optimal policy is to place replicas on unique racks. This prevents losing data when an entire rack fails and allows use of bandwidth from multiple racks when reading data. This policy evenly distributes replicas in the cluster which makes it easy to balance load on component failure. However, this policy increases the cost of writes because a write needs to transfer blocks to multiple racks. 
        </p>
<p>
        For the common case, when the replication factor is three, HDFS&rsquo;s placement policy is to put one replica on one node in the local rack, another on a different node in the local rack, and the last on a different node in a different rack. This policy cuts the inter-rack write traffic which generally improves write performance. The chance of rack failure is far less than that of node failure; this policy does not impact data reliability and availability guarantees. However, it does reduce the aggregate network bandwidth used when reading data since a block is placed in only two unique racks rather than three. With this policy, the replicas of a file do not evenly distribute across the racks. One third of replicas are on one node, two thirds of replicas are on one rack, and the other third are evenly distributed across the remaining racks. This policy improves write performance without compromising data reliability or read performance.
        </p>
<p>
        The current, default replica placement policy described here is a work in progress.
        </p>
<a name="N100C6"></a><a name="Replica+Selection"></a>
<h3 class="h4"> Replica Selection </h3>
<p>
        To minimize global bandwidth consumption and read latency, HDFS tries to satisfy a read request from a replica that is closest to the reader. If there exists a replica on the same rack as the reader node, then that replica is preferred to satisfy the read request. If angg/ HDFS cluster spans multiple data centers, then a replica that is resident in the local data center is preferred over any remote replica.
        </p>
<a name="N100D0"></a><a name="SafeMode"></a>
<h3 class="h4"> SafeMode </h3>
<p>
        On startup, the Namenode enters a special state called <em>Safemode</em>. Replication of data blocks does not occur when the Namenode is in the Safemode state. The Namenode receives Heartbeat and Blockreport messages from the Datanodes. A Blockreport contains the list of data blocks that a Datanode is hosting. Each block has a specified minimum number of replicas. A block is considered <em>safely replicated</em> when the minimum number of replicas of that data block has checked in with the Namenode. After a configurable percentage of safely replicated data blocks checks in with the Namenode (plus an additional 30 seconds), the Namenode exits the Safemode state. It then determines the list of data blocks (if any) that still have fewer than the specified number of replicas. The Namenode then replicates these blocks to other Datanodes.
        </p>
</div>

    
<a name="N100E1"></a><a name="The+Persistence+of+File+System+Metadata"></a>
<h2 class="h3"> The Persistence of File System Metadata </h2>
<div class="section">
<p>
        The HDFS namespace is stored by the Namenode. The Namenode uses a transaction log called the <em>EditLog</em> to persistently record every change that occurs to file system <em>metadata</em>. For example, creating a new file in HDFS causes the Namenode to insert a record into the EditLog indicating this. Similarly, changing the replication factor of a file causes a new record to be inserted into the EditLog. The Namenode uses a file in its <em>local</em> host OS file system to store the EditLog. The entire file system namespace, including the mapping of blocks to files and file system properties, is stored in a file called the <em>FsImage</em>. The FsImage is stored as a file in the Namenode&rsquo;s local file system too.
        </p>
<p>
        The Namenode keeps an image of the entire file system namespace and file <em>Blockmap</em> in memory. This key metadata item is designed to be compact, such that a Namenode with 4 GB of RAM is plenty to support a huge number of files and directories. When the Namenode starts up, it reads the FsImage and EditLog from disk, applies all the transactions from the EditLog to the in-memory representation of the FsImage, and flushes out this new version into a new FsImage on disk. It can then truncate the old EditLog because its transactions have been applied to the persistent FsImage. This process is called a <em>checkpoint</em>. In the current implementation, a checkpoint only occurs when the Namenode starts up. Work is in progress to support periodic checkpointing in the near future.
        </p>
<p>
        The Datanode stores HDFS data in files in its local file system. The Datanode has no knowledge about HDFS files. It stores each block of HDFS data in a separate file in its local file system. The Datanode does not create all files in the same directory. Instead, it uses a heuristic to determine the optimal number of files per directory and creates subdirectories appropriately. It is not optimal to create all local files in the same directory because the local file system might not be able to efficiently support a huge number of files in a single directory. When a Datanode starts up, it scans through its local file system, generates a list of all HDFS data blocks that correspond to each of these local files and sends this report to the Namenode: this is the Blockreport. 
        </p>
</div>


    
<a name="N10103"></a><a name="The+Communication+Protocols"></a>
<h2 class="h3"> The Communication Protocols </h2>
<div class="section">
<p>
      All HDFS communication protocols are layered on top of the TCP/IP protocol. A client establishes a connection to a configurable <acronym title="Transmission Control Protocol">TCP</acronym> port on the Namenode machine. It talks the <em>ClientProtocol</em> with the Namenode. The Datanodes talk to the Namenode using the <em>DatanodeProtocol</em>. A Remote Procedure Call (<acronym title="Remote Procedure Call">RPC</acronym>) abstraction wraps both the ClientProtocol and the DatanodeProtocol. By design, the Namenode never initiates any RPCs. Instead, it only responds to RPC requests issued by Datanodes or clients. 
      </p>
</div>
 

    
<a name="N1011B"></a><a name="Robustness"></a>
<h2 class="h3"> Robustness </h2>
<div class="section">
<p>
      The primary objective of HDFS is to store data reliably even in the presence of failures. The three common types of failures are Namenode failures, Datanode failures and network partitions.
      </p>
<a name="N10124"></a><a name="Data+Disk+Failure%2C+Heartbeats+and+Re-Replication"></a>
<h3 class="h4"> Data Disk Failure, Heartbeats and Re-Replication </h3>
<p>
        Each Datanode sends a Heartbeat message to the Namenode periodically. A network partition can cause a subset of Datanodes to lose connectivity with the Namenode. The Namenode detects this condition by the absence of a Heartbeat message. The Namenode marks Datanodes without recent Heartbeats as dead and does not forward any new <acronym title="Input/Output">IO</acronym> requests to them. Any data that was registered to a dead Datanode is not available to HDFS any more. Datanode death may cause the replication factor of some blocks to fall below their specified value. The Namenode constantly tracks which blocks need to be replicated and initiates replication whenever necessary. The necessity for re-replication may arise due to many reasons: a Datanode may become unavailable, a replica may become corrupted, a hard disk on a Datanode may fail, or the replication factor of a file may be increased. 
        </p>
<a name="N10132"></a><a name="Cluster+Rebalancing"></a>
<h3 class="h4"> Cluster Rebalancing </h3>
<p>
        The HDFS architecture is compatible with <em>data rebalancing schemes</em>. A scheme might automatically move data from one Datanode to another if the free space on a Datanode falls below a certain threshold. In the event of a sudden high demand for a particular file, a scheme might dynamically create additional replicas and rebalance other data in the cluster. These types of data rebalancing schemes are not yet implemented. 
        </p>
<a name="N1013F"></a><a name="Data+Integrity"></a>
<h3 class="h4"> Data Integrity </h3>
<p>
        <!-- XXX "checksum checking" sounds funny -->
        It is possible that a block of data fetched from a Datanode arrives corrupted. This corruption can occur because of faults in a storage device, network faults, or buggy software. The HDFS client software implements checksum checking on the contents of HDFS files. When a client creates an HDFS file, it computes a checksum of each block of the file and stores these checksums in a separate hidden file in the same HDFS namespace. When a client retrieves file contents it verifies that the data it received from each Datanode matches the checksum stored in the associated checksum file. If not, then the client can opt to retrieve that block from another Datanode that has a replica of that block.
        </p>
<a name="N1014B"></a><a name="Metadata+Disk+Failure"></a>
<h3 class="h4"> Metadata Disk Failure </h3>
<p>
        The FsImage and the EditLog are central data structures of HDFS. A corruption of these files can cause the HDFS instance to be non-functional. For this reason, the Namenode can be configured to support maintaining multiple copies of the FsImage and EditLog. Any update to either the FsImage or EditLog causes each of the FsImages and EditLogs to get updated synchronously. This synchronous updating of multiple copies of the FsImage and EditLog may degrade the rate of namespace transactions per second that a Namenode can support. However, this degradation is acceptable because even though HDFS applications are very <em>data</em> intensive in nature, they are not <em>metadata</em> intensive. When a Namenode restarts, it selects the latest consistent FsImage and EditLog to use.
        </p>
<p> 
        The Namenode machine is a single point of failure for an HDFS cluster. If the Namenode machine fails, manual intervention is necessary. Currently, automatic restart and failover of the Namenode software to another machine is not supported.
        </p>
<a name="N1015E"></a><a name="Snapshots"></a>
<h3 class="h4"> Snapshots </h3>
<p>
        Snapshots support storing a copy of data at a particular instant of time. One usage of the snapshot feature may be to roll back a corrupted HDFS instance to a previously known good point in time. HDFS does not currently support snapshots but will in a future release.
        </p>
</div>
 

    
<a name="N10169"></a><a name="Data+Organization"></a>
<h2 class="h3"> Data Organization </h2>
<div class="section">
<a name="N10171"></a><a name="Data+Blocks"></a>
<h3 class="h4"> Data Blocks </h3>
<p>
        HDFS is designed to support very large files. Applications that are compatible with HDFS are those that deal with large data sets. These applications write their data only once but they read it one or more times and require these reads to be satisfied at streaming speeds. HDFS supports write-once-read-many semantics on files. A typical block size used by HDFS is 64 MB. Thus, an HDFS file is chopped up into 64 MB chunks, and if possible, each chunk will reside on a different Datanode.
        </p>
<a name="N1017B"></a><a name="Staging"></a>
<h3 class="h4"> Staging </h3>
<p>
        A client request to create a file does not reach the Namenode immediately. In fact, initially the HDFS client caches the file data into a temporary local file. Application writes are transparently redirected to this temporary local file. When the local file accumulates data worth over one HDFS block size, the client contacts the Namenode. The Namenode inserts the file name into the file system hierarchy and allocates a data block for it. The Namenode responds to the client request with the identity of the Datanode and the destination data block. Then the client flushes the block of data from the local temporary file to the specified Datanode. When a file is closed, the remaining un-flushed data in the temporary local file is transferred to the Datanode. The client then tells the Namenode that the file is closed. At this point, the Namenode commits the file creation operation into a persistent store. If the Namenode dies before the file is closed, the file is lost. 
        </p>
<p>
        The above approach has been adopted after careful consideration of target applications that run on HDFS. These applications need streaming writes to files. If a client writes to a remote file directly without any client side buffering, the network speed and the congestion in the network impacts throughput considerably. This approach is not without precedent. Earlier distributed file systems, e.g. <acronym title="Andrew File System">AFS</acronym>, have used client side caching to improve performance. A POSIX requirement has been relaxed to achieve higher performance of data uploads. 
        </p>
<a name="N1018E"></a><a name="Replication+Pipelining"></a>
<h3 class="h4"> Replication Pipelining </h3>
<p>
        When a client is writing data to an HDFS file, its data is first written to a local file as explained in the previous section. Suppose the HDFS file has a replication factor of three. When the local file accumulates a full block of user data, the client retrieves a list of Datanodes from the Namenode. This list contains the Datanodes that will host a replica of that block. The client then flushes the data block to the first Datanode. The first Datanode starts receiving the data in small portions (4 KB), writes each portion to its local repository and transfers that portion to the second Datanode in the list. The second Datanode, in turn starts receiving each portion of the data block, writes that portion to its repository and then flushes that portion to the third Datanode. Finally, the third Datanode writes the data to its local repository. Thus, a Datanode can be receiving data from the previous one in the pipeline and at the same time forwarding data to the next one in the pipeline. Thus, the data is pipelined from one Datanode to the next.
        </p>
</div>

    
<a name="N10199"></a><a name="Accessibility"></a>
<h2 class="h3"> Accessibility </h2>
<div class="section">
<p>
      HDFS can be accessed from applications in many different ways. Natively, HDFS provides a <a href="http://lucene.apache.org/hadoop/api/">Java API</a> for applications to use. A C language wrapper for this Java API is also available. In addition, an HTTP browser can also be used to browse the files of an HDFS instance. Work is in progress to expose HDFS through the <acronym title="Web-based Distributed Authoring and Versioning">WebDAV</acronym> protocol. 
      </p>
<a name="N101AE"></a><a name="DFSShell"></a>
<h3 class="h4"> DFSShell </h3>
<p>
        HDFS allows user data to be organized in the form of files and directories. It provides a commandline interface called <em>DFSShell</em> that lets a user interact with the data in HDFS. The syntax of this command set is similar to other shells (e.g. bash, csh) that users are already familiar with. Here are some sample action/command pairs:
        </p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
          
<tr>
            
<th colspan="1" rowspan="1"> Action </th><th colspan="1" rowspan="1"> Command </th>
          
</tr>
          
<tr>
            
<td colspan="1" rowspan="1"> Create a directory named <span class="codefrag">/foodir</span> </td> <td colspan="1" rowspan="1"> <span class="codefrag">bin/hadoop dfs -mkdir /foodir</span> </td>
          
</tr>
          
<tr>
            
<td colspan="1" rowspan="1"> Create a directory named <span class="codefrag">/foodir</span> </td> <td colspan="1" rowspan="1"> <span class="codefrag">bin/hadoop dfs -mkdir /foodir</span> </td>
          
</tr>
          
<tr>
            
<td colspan="1" rowspan="1"> View the contents of a file named <span class="codefrag">/foodir/myfile.txt</span> </td> <td colspan="1" rowspan="1"> <span class="codefrag">bin/hadoop dfs -cat /foodir/myfile.txt</span> </td>
          
</tr>
        
</table>
<p>
        DFSShell is targeted for applications that need a scripting language to interact with the stored data.
        </p>
<a name="N10206"></a><a name="DFSAdmin"></a>
<h3 class="h4"> DFSAdmin </h3>
<p>
        The <em>DFSAdmin</em> command set is used for administering an HDFS cluster. These are commands that are used only by an HDFS administrator. Here are some sample action/command pairs:
        </p>
<table class="ForrestTable" cellspacing="1" cellpadding="4">
          
<tr>
            
<th colspan="1" rowspan="1"> Action </th><th colspan="1" rowspan="1"> Command </th>
          
</tr>
          
<tr>
            
<td colspan="1" rowspan="1"> Put a cluster in SafeMode </td> <td colspan="1" rowspan="1"> <span class="codefrag">bin/hadoop dfsadmin -safemode enter</span> </td>
          
</tr>
          
<tr>
            
<td colspan="1" rowspan="1"> Generate a list of Datanodes </td> <td colspan="1" rowspan="1"> <span class="codefrag">bin/hadoop dfsadmin -report</span> </td>
          
</tr>
          
<tr>
            
<td colspan="1" rowspan="1"> Decommission Datanode <span class="codefrag">datanodename</span> </td><td colspan="1" rowspan="1"> <span class="codefrag">bin/hadoop dfsadmin -decommission datanodename</span> </td>
          
</tr>
        
</table>
<a name="N10254"></a><a name="Browser+Interface"></a>
<h3 class="h4"> Browser Interface </h3>
<p>
        A typical HDFS install configures a web server to expose the HDFS namespace through a configurable TCP port. This allows a user to navigate the HDFS namespace and view the contents of its files using a web browser.
       </p>
</div> 

    
<a name="N1025F"></a><a name="Space+Reclamation"></a>
<h2 class="h3"> Space Reclamation </h2>
<div class="section">
<a name="N10265"></a><a name="File+Deletes+and+Undeletes"></a>
<h3 class="h4"> File Deletes and Undeletes </h3>
<p>
        When a file is deleted by a user or an application, it is not immediately removed from HDFS.  Instead, HDFS first renames it to a file in the <span class="codefrag">/trash</span> directory. The file can be restored quickly as long as it remains in <span class="codefrag">/trash</span>. A file remains in <span class="codefrag">/trash</span> for a configurable amount of time. After the expiry of its life in <span class="codefrag">/trash</span>, the Namenode deletes the file from the HDFS namespace. The deletion of a file causes the blocks associated with the file to be freed. Note that there could be an appreciable time delay between the time a file is deleted by a user and the time of the corresponding increase in free space in HDFS.
        </p>
<p>
        A user can Undelete a file after deleting it as long as it remains in the <span class="codefrag">/trash</span> directory. If a user wants to undelete a file that he/she has deleted, he/she can navigate the <span class="codefrag">/trash</span> directory and retrieve the file. The <span class="codefrag">/trash</span> directory contains only the latest copy of the file that was deleted. The <span class="codefrag">/trash</span> directory is just like any other directory with one special feature: HDFS applies specified policies to automatically delete files from this directory. The current default policy is to delete files from <span class="codefrag">/trash</span> that are more than 6 hours old. In the future, this policy will be configurable through a well defined interface.
        </p>
<a name="N1028D"></a><a name="Decrease+Replication+Factor"></a>
<h3 class="h4"> Decrease Replication Factor </h3>
<p>
        When the replication factor of a file is reduced, the Namenode selects excess replicas that can be deleted. The next Heartbeat transfers this information to the Datanode. The Datanode then removes the corresponding blocks and the corresponding free space appears in the cluster. Once again, there might be a time delay between the completion of the <span class="codefrag">setReplication</span> API call and the appearance of free space in the cluster.
        </p>
</div>


    
<a name="N1029B"></a><a name="References"></a>
<h2 class="h3"> References </h2>
<div class="section">
<p>
      HDFS Java API: 
      <a href="http://lucene.apache.org/hadoop/api/"> 
        http://lucene.apache.org/hadoop/api/
      </a>
      
</p>
<p>
      HDFS source code: 
      <a href="http://lucene.apache.org/hadoop/version_control.html"> 
        http://lucene.apache.org/hadoop/version_control.html
      </a>
      
</p>
</div> 

  
<p align="right">
<font size="-2">by&nbsp;Dhruba Borthakur</font>
</p>
</div>
<!--+
    |end content
    +-->
<div class="clearboth">&nbsp;</div>
</div>
<div id="footer">
<!--+
    |start bottomstrip
    +-->
<div class="lastmodified">
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<div class="copyright">
        Copyright &copy;
         2007 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
</div>
<!--+
    |end bottomstrip
    +-->
</div>
</body>
</html>
