Apache HBase Native Client

Clone this repo:


  1. 1cffeab HBASE-26737 addendum for parallel stage node label by Sean Busbey · 8 months ago master
  2. 5019bc3 HBASE-26737 run PR checks on the hbase specific worker nodes (#16) by Sean Busbey · 8 months ago
  3. 926a6f9 HBASE-24642 (addendum): Reduce make concurrency and increase container mem limit by Bharath Vissapragada · 2 years, 2 months ago
  4. 3b81c3d HBASE-24810: Download Boost with other dependencies by Bharath Vissapragada · 2 years, 2 months ago
  5. 3b86174 HBASE-24642 (addendum): Do not run the container as root (#13) by Bharath Vissapragada · 2 years, 2 months ago


Native client for HBase

This is a C/C++ library that implements a HBase client.

Design Philosphy

Synchronous and Async versions will both be built on the same foundation. The core foundation will be C++. External users wanting a C library will have to choose either async or sync. These libraries will be thin veneers ontop of the C++.

We should try and follow pthreads example as much as possible:

  • Consistent naming.
  • Opaque pointers as types so that binary compat is easy.
  • Simple setup when the defaults are good.
  • Attr structs when lots of paramters could be needed.


All public C files will start with hbase_*.{h, cc}. This is to keep naming conflicts to a minimum. Anything without the hbase_ prefix is assumed to be implementation private.

All C apis and typedefs will be prefixed with hb_.

All typedefs end with _t.


The build environment is docker. This should keep a consistent build environment for everyone. Buck the build system works best with mmap'd files. On OSX this means that vmwarefusion works the best. However it should work with just the defaults.