<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 from src/site/xdoc/index.xml
 | Rendered using Apache Maven Fluido Skin 1.7.1-HBase
-->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="Content-Language" content="en" />
    <title>Apache HBase &#x2013; Apache HBase™ Home</title>
    <link rel="stylesheet" href="./css/apache-maven-fluido-1.7.1-HBase.min.css" />
    <link rel="stylesheet" href="./css/site.css" />
    <link rel="stylesheet" href="./css/print.css" media="print" />
    <script type="text/javascript" src="./js/apache-maven-fluido-1.7.1-HBase.min.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/css/bootstrap-responsive.min.css"/>
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/styles/github.min.css"/>
      <link rel="stylesheet" href="css/site.css"/>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.9.1/highlight.min.js"></script>
<link rel="shortcut icon" href="/images/favicon.ico" />  </head>
  <body class="topBarEnabled">
    <div id="topbar" class="navbar navbar-fixed-top ">
      <div class="navbar-inner">
            <div class="container">
              <a data-target=".nav-collapse" data-toggle="collapse" class="btn btn-navbar">
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
                  <span class="icon-bar"></span>
              </a>
              <div class="nav-collapse">
            <ul class="nav">
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Apache HBase Project <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="index.html" title="Overview">Overview</a></li>
            <li><a href="licenses.html" title="License">License</a></li>
            <li><a href="http://www.apache.org/dyn/closer.cgi/hbase/" title="Downloads">Downloads</a></li>
            <li><a href="https://issues.apache.org/jira/browse/HBASE?report=com.atlassian.jira.plugin.system.project:changelog-panel#selectedTab=com.atlassian.jira.plugin.system.project%3Achangelog-panel" title="Release Notes">Release Notes</a></li>
            <li><a href="coc.html" title="Code Of Conduct">Code Of Conduct</a></li>
            <li><a href="http://blogs.apache.org/hbase/" title="Blog">Blog</a></li>
            <li><a href="mailing-lists.html" title="Mailing Lists">Mailing Lists</a></li>
            <li><a href="team.html" title="Team">Team</a></li>
            <li><a href="https://reviews.apache.org/" title="ReviewBoard">ReviewBoard</a></li>
            <li><a href="sponsors.html" title="Thanks">Thanks</a></li>
            <li><a href="poweredbyhbase.html" title="Powered by HBase">Powered by HBase</a></li>
            <li><a href="resources.html" title="Other resources">Other resources</a></li>
        </ul>
      </li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Project Information <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="summary.html" title="Project Summary">Project Summary</a></li>
            <li><a href="dependency-info.html" title="Dependency Information">Dependency Information</a></li>
            <li><a href="scm.html" title="Source Repository">Source Repository</a></li>
            <li><a href="issue-management.html" title="Issue Tracking">Issue Tracking</a></li>
            <li><a href="dependency-management.html" title="Dependency Management">Dependency Management</a></li>
            <li><a href="dependencies.html" title="Dependencies">Dependencies</a></li>
            <li><a href="dependency-convergence.html" title="Dependency Convergence">Dependency Convergence</a></li>
            <li><a href="plugin-management.html" title="Plugin Management">Plugin Management</a></li>
            <li><a href="plugins.html" title="Plugins">Plugins</a></li>
        </ul>
      </li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation and API <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="book.html" target="_blank" title="Reference Guide">Reference Guide</a></li>
            <li><a href="apache_hbase_reference_guide.pdf" target="_blank" title="Reference Guide (PDF)">Reference Guide (PDF)</a></li>
            <li><a href="book.html#quickstart" target="_blank" title="Getting Started">Getting Started</a></li>
            <li><a href="apidocs/index.html" target="_blank" title="User API">User API</a></li>
            <li><a href="testapidocs/index.html" target="_blank" title="User API (Test)">User API (Test)</a></li>
            <li><a href="2.0/devapidocs/index.html" target="_blank" title="Developer API">Developer API</a></li>
            <li><a href="2.0/testdevapidocs/index.html" target="_blank" title="Developer API (Test)">Developer API (Test)</a></li>
            <li><a href="http://abloz.com/hbase/book.html" target="_blank" title="中文参考指南(单页)">中文参考指南(单页)</a></li>
            <li><a href="book.html#faq" target="_blank" title="FAQ">FAQ</a></li>
            <li><a href="book.html#other.info" target="_blank" title="Videos/Presentations">Videos/Presentations</a></li>
            <li><a href="http://wiki.apache.org/hadoop/Hbase" target="_blank" title="Wiki">Wiki</a></li>
            <li><a href="acid-semantics.html" target="_blank" title="ACID Semantics">ACID Semantics</a></li>
            <li><a href="book.html#arch.bulk.load" target="_blank" title="Bulk Loads">Bulk Loads</a></li>
            <li><a href="metrics.html" target="_blank" title="Metrics">Metrics</a></li>
            <li><a href="cygwin.html" target="_blank" title="HBase on Windows">HBase on Windows</a></li>
            <li><a href="book.html#replication" target="_blank" title="Cluster replication">Cluster replication</a></li>
            <li class="dropdown-submenu">
<a href="" title="1.2 Documentation">1.2 Documentation</a>
              <ul class="dropdown-menu">
                  <li><a href="1.2/apidocs/index.html" target="_blank" title="API">API</a></li>
                  <li><a href="1.2/xref/index.html" target="_blank" title="X-Ref">X-Ref</a></li>
                  <li><a href="1.2/book.html" target="_blank" title="Ref Guide (single-page)">Ref Guide (single-page)</a></li>
              </ul>
            </li>
            <li class="dropdown-submenu">
<a href="" title="1.1 Documentation">1.1 Documentation</a>
              <ul class="dropdown-menu">
                  <li><a href="1.1/apidocs/index.html" target="_blank" title="API">API</a></li>
                  <li><a href="1.1/xref/index.html" target="_blank" title="X-Ref">X-Ref</a></li>
                  <li><a href="1.1/book.html" target="_blank" title="Ref Guide (single-page)">Ref Guide (single-page)</a></li>
              </ul>
            </li>
        </ul>
      </li>
      <li class="dropdown">
        <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
        <ul class="dropdown-menu">
            <li><a href="http://www.apache.org/foundation/" target="_blank" title="Apache Software Foundation">Apache Software Foundation</a></li>
            <li><a href="http://www.apache.org/foundation/how-it-works.html" target="_blank" title="How Apache Works">How Apache Works</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html" target="_blank" title="Sponsoring Apache">Sponsoring Apache</a></li>
        </ul>
      </li>
            </ul>
    <div id="search-form" class="navbar-search pull-right">
      <script type="text/javascript">
      var cx = '000385458301414556862:sq1bb0xugjg';

      (function() {
        var gcse = document.createElement('script');
        gcse.type = 'text/javascript';
        gcse.async = true;
        gcse.src = 'https://cse.google.com/cse.js?cx=' + cx;
        var s = document.getElementsByTagName('script')[0];
        s.parentNode.insertBefore(gcse, s);
      })();

      </script>
      <gcse:search></gcse:search>
  </div>
            </div>
        </div>
      </div>
    </div>
    <div class="container">
      <div id="banner">
        <div class="pull-left"><a href="./" id="bannerLeft"><img src=""  alt=""/></a></div>
        <div class="pull-right"><a href="http://hbase.apache.org/" id="bannerRight"><img src="images/hbase_logo_with_orca_large.png"  alt="Apache HBase"/></a></div>
        <div class="clear"><hr/></div>
      </div>

      <div id="breadcrumbs">
        <ul class="breadcrumb">
        </ul>
      </div>
        <div id="bodyColumn" >

  
    
<div class="section">
<h2><a name="Welcome_to_Apache_HBase.E2.84.A2"></a>Welcome to Apache HBase&#x2122;</h2>
        
<p><a class="externalLink" href="http://www.apache.org/">Apache</a> HBase&#x2122; is the <a class="externalLink" href="http://hadoop.apache.org/">Hadoop</a> database, a distributed, scalable, big data store.
    </p>
    
<p>Use Apache HBase&#x2122; when you need random, realtime read/write access to your Big Data.
    This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware.
Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's <a class="externalLink" href="http://research.google.com/archive/bigtable.html">Bigtable: A Distributed Storage System for Structured Data</a> by Chang et al.
 Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS.
    </p>
  </div>
    
<div class="section">
<h2><a name="Download"></a>Download</h2>
    
<p>
    Click <b><a class="externalLink" href="http://www.apache.org/dyn/closer.cgi/hbase/">here</a></b> to download Apache HBase&#x2122;.
    </p>
    </div>
    
<div class="section">
<h2><a name="Features"></a>Features</h2>
    
<p>
</p>
<ul>
    
<li>Linear and modular scalability.
</li>
    
<li>Strictly consistent reads and writes.
</li>
    
<li>Automatic and configurable sharding of tables
</li>
    
<li>Automatic failover support between RegionServers.
</li>
    
<li>Convenient base classes for backing Hadoop MapReduce jobs with Apache HBase tables.
</li>
    
<li>Easy to use Java API for client access.
</li>
    
<li>Block cache and Bloom Filters for real-time queries.
</li>
    
<li>Query predicate push down via server side Filters
</li>
    
<li>Thrift gateway and a REST-ful Web service that supports XML, Protobuf, and binary data encoding options
</li>
    
<li>Extensible jruby-based (JIRB) shell
</li>
    
<li>Support for exporting metrics via the Hadoop metrics subsystem to files or Ganglia; or via JMX
</li>
</ul>

</div>
     
<div class="section">
<h2><a name="More_Info"></a>More Info</h2>
   
<p>See the <a class="externalLink" href="http://hbase.apache.org/book.html#arch.overview">Architecture Overview</a>, the <a class="externalLink" href="http://hbase.apache.org/book.html#faq">Apache HBase Reference Guide FAQ</a>,
    and the other documentation links.
   </p>
   
<dl>
     
<dt>Export Control</dt>
   
<dd>
<p>The HBase distribution includes cryptographic software. See the export control notice <a href="export_control.html">here</a>
   </p></dd>
     
<dt>Code Of Conduct</dt>
   
<dd>
<p>We expect participants in discussions on the HBase project mailing lists, Slack and IRC channels, and JIRA issues to abide by the Apache Software Foundation's <a class="externalLink" href="http://apache.org/foundation/policies/conduct.html">Code of Conduct</a>. More information can be found <a href="coc.html">here</a>.
   </p></dd>
 </dl>
</div>

     
<div class="section">
<h2><a name="News"></a>News</h2>
       
<p>August 4th, 2017 <a class="externalLink" href="https://easychair.org/cfp/HBaseConAsia2017">HBaseCon Asia 2017</a> @ the Huawei Campus in Shenzhen, China</p>
       
<p>June 12th, 2017 <a class="externalLink" href="https://easychair.org/cfp/hbasecon2017">HBaseCon2017</a> at the Crittenden Buildings on the Google Mountain View Campus</p>
       
<p>April 25th, 2017 <a class="externalLink" href="https://www.meetup.com/hbaseusergroup/events/239291716/">Meetup</a> @ Visa in Palo Alto</p>
        
<p>December 8th, 2016 <a class="externalLink" href="https://www.meetup.com/hbaseusergroup/events/235542241/">Meetup@Splice</a> in San Francisco</p>
       
<p>September 26th, 2016 <a class="externalLink" href="http://www.meetup.com/HBase-NYC/events/233024937/">HBaseConEast2016</a> at Google in Chelsea, NYC</p>
         
<p>May 24th, 2016 <a class="externalLink" href="http://www.hbasecon.com/">HBaseCon2016</a> at The Village, 969 Market, San Francisco</p>
       
<p>June 25th, 2015 <a class="externalLink" href="http://www.zusaar.com/event/14057003">HBase Summer Meetup 2015</a> in Tokyo</p>
       
<p>May 7th, 2015 <a class="externalLink" href="http://hbasecon.com/">HBaseCon2015</a> in San Francisco</p>
       
<p>February 17th, 2015 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/219260093/">HBase meetup around Strata+Hadoop World</a> in San Jose</p>
       
<p>January 15th, 2015 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/218744798/">HBase meetup @ AppDynamics</a> in San Francisco</p>
       
<p>November 20th, 2014 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/205219992/">HBase meetup @ WANdisco</a> in San Ramon</p>
       
<p>October 27th, 2014 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/207386102/">HBase Meetup @ Apple</a> in Cupertino</p>
       
<p>October 15th, 2014 <a class="externalLink" href="http://www.meetup.com/HBase-NYC/events/207655552/">HBase Meetup @ Google</a> on the night before Strata/HW in NYC</p>
       
<p>September 25th, 2014 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/203173692/">HBase Meetup @ Continuuity</a> in Palo Alto</p>
         
<p>August 28th, 2014 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/197773762/">HBase Meetup @ Sift Science</a> in San Francisco</p>
         
<p>July 17th, 2014 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/190994082/">HBase Meetup @ HP</a> in Sunnyvale</p>
         
<p>June 5th, 2014 <a class="externalLink" href="http://www.meetup.com/Hadoop-Summit-Community-San-Jose/events/179081342/">HBase BOF at Hadoop Summit</a>, San Jose Convention Center</p>
         
<p>May 5th, 2014 <a class="externalLink" href="http://www.hbasecon.com/">HBaseCon2014</a> at the Hilton San Francisco on Union Square</p>
         
<p>March 12th, 2014 <a class="externalLink" href="http://www.meetup.com/hbaseusergroup/events/160757912/">HBase Meetup @ Ancestry.com</a> in San Francisco</p>
      
<p><small><a href="old_news.html">Old News</a></small></p>
    </div>
  


        </div>
    </div>
    <hr/>
    <footer>
      <div class="container">
        <div class="row">
            <p>Copyright &copy;2007&#x2013;2019
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2019-05-29</li>
</p>
        </div>
        <p id="poweredBy" class="pull-right"><a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy"><img class="builtBy" alt="Built by Maven" src="./images/logos/maven-feather.png" /></a>
</p>
      </div>
    </footer>
  </body>
</html>
