Apache HBase Native Client

Clone this repo:


  1. 6cd0071 HBASE-24261: Initial version of ASF infra integration configuration by Bharath Vissapragada · 3 weeks ago master
  2. 11be99a HBASE-22201 Fixing a number of issues with test cases (#1) by Ian Buss · 1 year, 1 month ago
  3. 10f1283 HBASE-22024 Clean up BUCK related things for C++ native client by xujunhong · 1 year, 3 months ago
  4. 5eaad7c HBASE-22038 fix buiding failures by xujunhong · 1 year, 2 months ago
  5. 5785b60 HBASE-20009 Add license header to krb5.conf by tedyu · 2 years, 3 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.