<!DOCTYPE html>
<!--
 | Generated by Apache Maven Doxia Site Renderer 1.8.1 from src/main/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="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="https://hbase.apache.org/2.0/devapidocs/index.html" target="_blank" title="Developer API">Developer API</a></li>
            <li><a href="https://hbase.apache.org/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="./" 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="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>
  
<div class="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>
  </dl>
  </div>
<div class="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>
</div></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-03-18</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>
