<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.11.1 from src/site/xdoc/supportingprojects.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; Supporting Projects</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>
  </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="https://www.apache.org/licenses/" title="License">License</a></li>
            <li><a href="downloads.html" 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="mail-lists.html" title="Mailing Lists">Mailing Lists</a></li>
            <li><a href="team-list.html" title="Team">Team</a></li>
            <li><a href="sponsors.html" title="HBase Sponsors">HBase Sponsors</a></li>
            <li><a href="https://www.apache.org/foundation/thanks.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="project-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="source-repository.html" title="Source Repository">Source Repository</a></li>
            <li><a href="issue-tracking.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="devapidocs/index.html" target="_blank" title="Developer API">Developer API</a></li>
            <li><a href="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="https://cwiki.apache.org/confluence/display/HADOOP2/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="book.html#replication" target="_blank" title="Cluster replication">Cluster replication</a></li>
            <li class="dropdown-submenu">
<a href="" title="1.4 Documentation">1.4 Documentation</a>
              <ul class="dropdown-menu">
                  <li><a href="1.4/book.html" target="_blank" title="Ref Guide">Ref Guide</a></li>
                  <li><a href="1.4/book.pdf" target="_blank" title="Reference Guide (PDF)">Reference Guide (PDF)</a></li>
                  <li><a href="1.4/apidocs/index.html" target="_blank" title="User API">User API</a></li>
                  <li><a href="1.4/devapidocs/index.html" target="_blank" title="Developer API">Developer API</a></li>
              </ul>
            </li>
            <li class="dropdown-submenu">
<a href="" title="2.3 Documentation">2.3 Documentation</a>
              <ul class="dropdown-menu">
                  <li><a href="2.3/book.html" target="_blank" title="Ref Guide">Ref Guide</a></li>
                  <li><a href="2.3/apache_hbase_reference_guide.pdf" target="_blank" title="Reference Guide (PDF)">Reference Guide (PDF)</a></li>
                  <li><a href="2.3/apidocs/index.html" target="_blank" title="User API">User API</a></li>
                  <li><a href="2.3/testapidocs/index.html" target="_blank" title="User API (Test)">User API (Test)</a></li>
                  <li><a href="2.3/devapidocs/index.html" target="_blank" title="Developer API">Developer API</a></li>
                  <li><a href="2.3/testdevapidocs/index.html" target="_blank" title="Developer API (Test)">Developer API (Test)</a></li>
              </ul>
            </li>
            <li class="dropdown-submenu">
<a href="" title="2.4 Documentation">2.4 Documentation</a>
              <ul class="dropdown-menu">
                  <li><a href="2.4/book.html" target="_blank" title="Ref Guide">Ref Guide</a></li>
                  <li><a href="2.4/apache_hbase_reference_guide.pdf" target="_blank" title="Reference Guide (PDF)">Reference Guide (PDF)</a></li>
                  <li><a href="2.4/apidocs/index.html" target="_blank" title="User API">User API</a></li>
                  <li><a href="2.4/testapidocs/index.html" target="_blank" title="User API (Test)">User API (Test)</a></li>
                  <li><a href="2.4/devapidocs/index.html" target="_blank" title="Developer API">Developer API</a></li>
                  <li><a href="2.4/testdevapidocs/index.html" target="_blank" title="Developer API (Test)">Developer API (Test)</a></li>
              </ul>
            </li>
            <li class="dropdown-submenu">
<a href="" title="2.5 Documentation">2.5 Documentation</a>
              <ul class="dropdown-menu">
                  <li><a href="2.5/apidocs/index.html" target="_blank" title="User API">User API</a></li>
                  <li><a href="2.5/testapidocs/index.html" target="_blank" title="User API (Test)">User API (Test)</a></li>
                  <li><a href="2.5/devapidocs/index.html" target="_blank" title="Developer API">Developer API</a></li>
                  <li><a href="2.5/testdevapidocs/index.html" target="_blank" title="Developer API (Test)">Developer API (Test)</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" >

  
<section>
<h2><a name="Supporting_Projects"></a>Supporting Projects</h2>
  
<p>This page is a list of projects that are related to HBase. To
    have your project added, file a documentation JIRA or email
    <a class="externalLink" href="mailto:dev@hbase.apache.org">hbase-dev</a> with the relevant
    information. If you notice out-of-date information, use the same avenues to
    report it.
  </p>
  
<p><b>These items are user-submitted and the HBase team assumes no responsibility for their accuracy.</b></p>
  <section>
<h3><a name="Projects_that_add_new_features_to_HBase"></a>Projects that add new features to HBase</h3>
  
<dl>
   
<dt><a class="externalLink" href="https://github.com/XiaoMi/themis/">Themis</a></dt>
   
<dd>Themis provides cross-row/cross-table transaction on HBase based on
    Google's Percolator.</dd>
   
<dt><a class="externalLink" href="https://github.com/caskdata/tephra">Tephra</a></dt>
   
<dd>Cask Tephra provides globally consistent transactions on top of Apache
    HBase.</dd>
   
<dt><a class="externalLink" href="https://github.com/VCNC/haeinsa">Haeinsa</a></dt>
   
<dd>Haeinsa is linearly scalable multi-row, multi-table transaction library
    for HBase.</dd>
   
<dt><a class="externalLink" href="https://github.com/juwi/HBase-TAggregator">HBase TAggregator</a></dt>
   
<dd>An HBase coprocessor for timeseries-based aggregations.</dd>
   
<dt><a class="externalLink" href="http://trafodion.incubator.apache.org/">Apache Trafodion</a></dt>
   
<dd>Apache Trafodion is a webscale SQL-on-Hadoop solution enabling
    transactional or operational workloads on Hadoop.</dd>
   
<dt><a class="externalLink" href="http://phoenix.apache.org/">Apache Phoenix</a></dt>
   
<dd>Apache Phoenix is a relational database layer over HBase delivered as a
    client-embedded JDBC driver targeting low latency queries over HBase data.</dd>
   
<dt><a class="externalLink" href="https://github.com/cloudera/hue/tree/master/apps/hbase">Hue HBase Browser</a></dt>
   
<dd>An Easy &amp; Powerful WebUI for HBase, distributed with <a class="externalLink" href="https://www.gethue.com">Hue</a>.</dd>
   
<dt><a class="externalLink" href="https://github.com/NGDATA/hbase-indexer/tree/master/hbase-sep">HBase SEP</a></dt>
   
<dd>the HBase Side Effect Processor, a system for asynchronously and reliably listening to HBase
    mutation events, based on HBase replication.</dd>
   
<dt><a class="externalLink" href="https://github.com/ngdata/hbase-indexer">Lily HBase Indexer</a></dt>
   
<dd>indexes HBase content to Solr by listening to the replication stream
    (uses the HBase SEP).</dd>
   
<dt><a class="externalLink" href="https://github.com/sonalgoyal/crux/">Crux</a></dt>
   
<dd> - HBase Reporting and Analysis with support for simple and composite keys,
    get and range scans, column based filtering, charting.</dd>
   
<dt><a class="externalLink" href="https://github.com/yahoo/omid/">Omid</a></dt>
   
<dd> - Lock-free transactional support on top of HBase providing Snapshot
    Isolation.</dd>
   
<dt><a class="externalLink" href="http://dev.tailsweep.com/projects/parhely">Parhely</a></dt>
   
<dd>ORM for HBase</dd>
   
<dt><a class="externalLink" href="http://code.google.com/p/hbase-writer/">HBase-Writer</a></dt>
   
<dd> Heritrix2 Processor for writing crawls to HBase.</dd>
   
<dt><a class="externalLink" href="http://www.pigi-project.org/">Pigi Project</a></dt>
   
<dd>The Pigi Project is an ORM-like framework. It includes a configurable
    index system and a simple object to HBase mapping framework (or indexing for
    HBase if you like).  Designed for use by web applications.</dd>
   
<dt><a class="externalLink" href="http://code.google.com/p/hbase-thrift/">hbase-thrift</a></dt>
   
<dd>hbase-thrift generates and installs Perl and Python Thrift bindings for
    HBase.</dd>
   
<dt><a class="externalLink" href="http://belowdeck.kissintelligentsystems.com/ohm">OHM</a></dt>
   
<dd>OHM is a weakly relational ORM for HBase which provides Object Mapping and
    Column indexing. It has its own compiler capable of generating interface
    code for multiple languages. Currently C# (via the Thrift API), with support
    for Java currently in development. The compiler is easily extensible to add
    support for other languages.</dd>
   
<dt><a class="externalLink" href="http://datastore.googlecode.com">datastore</a></dt>
   
<dd>Aims to be an implementation of the
    <a class="externalLink" href="http://code.google.com/appengine/docs/python/datastore/">Google app-engine datastore</a>
    in Java using HBase instead of bigtable.</dd>
   
<dt><a class="externalLink" href="http://datanucleus.org">DataNucleus</a></dt>
   
<dd>DataNucleus is a Java JDO/JPA/REST implementation. It supports HBase and
    many other datastores.</dd>
   
<dt><a class="externalLink" href="http://github.com/impetus-opensource/Kundera">Kundera</a></dt>
   
<dd>Kundera is a JPA 2.0 based object-datastore mapping library for HBase,
    Cassandra and MongoDB.</dd>
   
<dt><a class="externalLink" href="http://github.com/zohmg/zohmg/tree/master">Zohmg</a></dt>
   
<dd>Zohmg is a time-series data store that uses HBase as its backing store.</dd>
   
<dt><a class="externalLink" href="http://grails.org/plugin/gorm-hbase">Grails Support</a></dt>
   
<dd>Grails HBase plug-in.</dd>
   
<dt><a class="externalLink" href="http://www.bigrecord.org">BigRecord</a></dt>
   
<dd>is an active_record-based object mapping layer for Ruby on Rails.</dd>
   
<dt><a class="externalLink" href="http://github.com/greglu/hbase-stargate">hbase-stargate</a></dt>
   
<dd>Ruby client for HBase Stargate.</dd>
   
<dt><a class="externalLink" href="http://github.com/ghelmling/meetup.beeno">Meetup.Beeno</a></dt>
   
<dd>Meetup.Beeno is a simple HBase Java &quot;beans&quot; mapping framework based on
    annotations. It includes a rudimentary high level query API that generates
    the appropriate server-side filters.</dd>
   
<dt><a class="externalLink" href="http://www.springsource.org/spring-data/hadoop">Spring Hadoop</a></dt>
   
<dd> - The Spring Hadoop project provides support for writing Apache Hadoop
    applications that benefit from the features of Spring, Spring Batch and
    Spring Integration.</dd>
   
<dt><a class="externalLink" href="https://jira.springsource.org/browse/SPR-5950">Spring Framework HBase Template</a></dt>
   
<dd>Spring Framework HBase Template provides HBase data access templates
    similar to what is provided in Spring for JDBC, Hibernate, iBatis, etc.
    If you find this useful, please vote for its inclusion in the Spring Framework.</dd>
   
<dt><a class="externalLink" href="http://github.com/davidsantiago/clojure-hbase">Clojure-HBase</a></dt>
   
<dd>A library for convenient access to HBase from Clojure.</dd>
   
<dt><a class="externalLink" href="http://www.lilyproject.org/lily/about/playground/hbaseindexes.html">HBase indexing library</a></dt>
   
<dd>A library for building and querying HBase-table-based indexes.</dd>
   
<dt><a class="externalLink" href="http://github.com/akkumar/hbasene">HBasene</a></dt>
   
<dd>Lucene+HBase - Using HBase as the backing store for the TF-IDF
    representations needed by Lucene. Also, contains a library for constructing
    lucene indices from HBase schema.</dd>
   
<dt><a class="externalLink" href="http://github.com/larsgeorge/jmxtoolkit">JMXToolkit</a></dt>
   
<dd>A HBase tailored JMX toolkit enabling monitoring with Cacti and checking
    with Nagios or similar.</dd>
   
<dt><a class="externalLink" href="http://github.com/ykulbak/ihbase">IHBASE</a></dt>
   
<dd>IHBASE provides faster scans by indexing regions, each region has its own
    index. The indexed columns are user-defined and indexes can be intersected or
    joined in a single query.</dd>
   
<dt><a class="externalLink" href="http://github.com/apurtell/hbase-ec2">HBASE EC2 scripts</a></dt>
   
<dd>This collection of bash scripts allows you to run HBase clusters on
    Amazon's Elastic Compute Cloud (EC2) service with best practices baked in.</dd>
   
<dt><a class="externalLink" href="http://github.com/apurtell/hbase-stargate">Stargate</a></dt>
   
<dd>Stargate provides an enhanced RESTful interface.</dd>
   
<dt><a class="externalLink" href="http://github.com/hbase-trx/hbase-transactional-tableindexed">HBase-trx</a></dt>
   
<dd>HBase-trx provides Transactional (JTA) and indexed extensions of HBase.</dd>
   
<dt><a class="externalLink" href="http://github.com/simplegeo/python-hbase-thrift">HBase Thrift Python client Debian package</a></dt>
   
<dd>Debian packages for the HBase Thrift Python client (see readme for
    sources.list setup)</dd>
   
<dt><a class="externalLink" href="http://github.com/amitrathore/capjure">capjure</a></dt>
   
<dd>capjure is a persistence helper for HBase. It is written in the Clojure
    language, and supports persisting of native hash-maps.</dd>
   
<dt><a class="externalLink" href="http://github.com/sematext/HBaseHUT">HBaseHUT</a></dt>
   
<dd>(High Update Throughput for HBase) It focuses on write performance during
    records update (by avoiding doing Get on every Put to update record).</dd>
   
<dt><a class="externalLink" href="http://github.com/sematext/HBaseWD">HBaseWD</a></dt>
   
<dd>HBase Writes Distributor spreads records over the cluster even when their
    keys are sequential, while still allowing fast range scans over them</dd>
   
<dt><a class="externalLink" href="http://code.google.com/p/hbase-jdo/">HBase UI Tool &amp; Util</a></dt>
   
<dd>HBase UI Tool &amp; Util is an HBase UI client and simple util module.
    It can handle hbase more easily like jdo(not persistence api)</dd>
   
<dt><a class="externalLink" href="https://github.com/flipkart-incubator/hbase-orm">HBase ORM</a></dt>
   
<dd>A light-weight HBase ORM library that enables object-oriented access of HBase records with minimal coding and good testability</dd>
  </dl>
  </section><section>
<h3><a name="Example_HBase_Applications"></a>Example HBase Applications</h3>
  
<ul>
    
<li><a class="externalLink" href="http://github.com/andreisavu/feedaggregator">HBase powered feed aggregator</a>
    by Savu Andrei -- 200909</li>
  </ul>
</section></section>


        </div>
    </div>
    <hr/>
    <footer>
      <div class="container">
        <div class="row">
            <p>Copyright &copy;2007&#x2013;2023
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All rights reserved.        <li id="publishDate" class="pull-right">Last Published: 2023-05-25</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>
