<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">

<document>
  <header>
    <title>Overview</title>
  </header>
  <body>
  
  <p>
  The HDFS Documentation provides the information you need to get started using the Hadoop Distributed File System. 
  Begin with the <a href="hdfs_user_guide.html">HDFS Users Guide</a> to obtain an overview of the system and then
  move on to the <a href="hdfs_design.html">HDFS Architecture Guide</a> for more detailed information.
  </p>
  
  <p>
   HDFS commonly works in tandem with a cluster environment and MapReduce applications. 
   For information about Hadoop clusters (single or multi node) see the 
 <a href="http://hadoop.apache.org/common/docs/current/index.html">Hadoop Common Documentation</a>.
   For information about MapReduce see the 
 <a href="http://hadoop.apache.org/mapreduce/docs/current/index.html">MapReduce Documentation</a>.
  </p>   
  
<p>
If you have more questions, you can ask on the <a href="ext:lists">HDFS Mailing Lists</a> or browse the <a href="ext:archive">Mailing List Archives</a>.
</p>

</body>
</document>
