DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

HBase


HBase is an open source, distributed, non-relational, scalable big data store that runs on top of Hadoop Distributed Filesystem. Hbase is suitable for storing large quantities of data, but it lacks many of the features that relational database management systems usually have, such as column types, secondary indexes, advanced query languages, etc. HBase stores the data in rows and columns. A row is referenced by a row key, and columns are grouped into "column families". HBase is written in Java, and is supported by Apache Software Foundation.[01]

Country of Origin
US
Start Year
2007 [22]
Project Type
Open Source
Written in
Java
Operating System
All OS with Java VM

Database Entry

HBase


HBase is an open source, distributed, non-relational, scalable big data store that runs on top of Hadoop Distributed Filesystem. Hbase is suitable for storing large quantities of data, but it lacks many of the features that relational database management systems usually have, such as column types, secondary indexes, advanced query languages, etc. HBase stores the data in rows and columns. A row is referenced by a row key, and columns are grouped into "column families". HBase is written in Java, and is supported by Apache Software Foundation.[01]

History[03]


HBase was initially a project by the company Powerset, a San Francisco-based search and natural language company. Microsoft acquired Powerset in 2008.

Checkpoints[04]


HBase Snapshots allows the users to make checkpoints of a table with little impact on RegionServers. Creating snapshots does not block reads and writes, but for each table only one snapshot can be created at a time.

Concurrency Control[05]


HBase guarantees ACID semantics per-row. HBase uses a form of Multiversion Concurrency Control (MVCC) to avoid row locks for read operations. Write operations still need to acquire row locks.

Data Model[06]


An HBase table consists of rows and columns. Rows are referenced by row keys which are raw byte arrays and are sorted by row key. The sort is byte-ordered. Each row contains columns. A column's content is also an uninterpreted array of bytes. All columns belong to a column family.

Foreign Keys[07]


HBase does not directly support refential integrity. Users can use a coprocessor to enforce foreign keys.

Indexes[08]


For each table, HBase only provide an B+Tree like index on row keys. HBase does not natively support secondary indexes. Users can use filters for querying on non-rowkey columns. There are some techniques to create another table which can be used as a secondary index.

Isolation Levels[09][10]


HBase only provide "read committed" isolation level. Users can downgrade the isolation level to "read uncommitted" by modifying the source code.

Joins[11]


HBase does not support join operations. Users can implement joins in their application code.

Logging[12][13]


HBase's write-ahead-log is named HLog.

Query Compilation


Query Execution[14]


Query Interface[15]


HBase does not provide native support for SQL. Unlike RDBMS, HBase has four primary operations: Get, Put, Scan and Delete. It also has some DDL operations, e.g., Create. HBase provides a shell which users can fire queries from. Users can specify table name, column names and apply filters in their query. HBase also offers Java Client API and Thrift/REST API. Some third-party drivers are also available for other programming languages.

Storage Architecture[01]


HBase leverages HDFS as the backend storage. Currently HDFS is disk-oriented.

Storage Model[16][17]


HBase is schema-less column-oriented datastore.

Stored Procedures[18]


Stored procedures are not directly supported in HBase. But users can use coprocessors to resemble store procedures.

System Architecture[19][20]


HBase is organized as a cluster of HBase nodes that complies with the master-slave architecture. There are two types of nodes: a master node, and one or more slave nodes called RegionServers. RegionServers serve data for reads and writes. An HBase Region is a subset of an HBase table that has a continuous range of sorted rowkeys. Region assignment and DDL operations are handled by the HBase Master. HBase is built on top of Hadoop. The Hadoop DataNodes store the data that RegionServers are managing. The HDFS Zookeeper maintains the server status in the cluster.

Views[21]


HBase does not provide views. But users can write MapReduce programs to approximate views. Apache Phoenix, a SQL interface for HBase, provides support for views.

Citations

22 sources
  1. Apache HBase apache.org
  2. https://hbase.apache.org/source-repository.html apache.org Dead — Check Archive
  3. Powerset team resumes HBase contributions | Microsoft Learn microsoft.com
  4. Apache HBase® Reference Guide apache.org
  5. Apache HBase Internals: Locking and Multiversion Concurrency Control | Blogs Archive apache.org
  6. Apache HBase® Reference Guide apache.org
  7. Apache HBase® Reference Guide apache.org
  8. Apache HBase® Reference Guide apache.org
  9. ACID Semantics - Apache HBase apache.org
  10. https://git-wip-us.apache.org/repos/asf?p=hbase.git;a=tree apache.org
  11. Apache HBase® Reference Guide apache.org
  12. https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/wal/HLog.html apache.org Dead — Check Archive
  13. Lineland: HBase Architecture 101 - Write-ahead-Log larsgeorge.com
  14. Apache HBase® Reference Guide apache.org
  15. Apache HBase® Reference Guide apache.org
  16. https://link.springer.com/chapter/10.1007/978-3-642-54341-8_4 springer.com
  17. https://netwoven.com/data-engineering-and-analytics/data-engineering/hbase-overview-of-architecture-and-data-model netwoven.com Dead — Check Archive
  18. Coprocessor Introduction | Blogs Archive apache.org
  19. https://www.mapr.com/blog/in-depth-look-hbase-architecture mapr.com Dead — Check Archive
  20. Apache HBase® Reference Guide apache.org
  21. https://phoenix.apache.org/docs/features/views apache.org Dead — Check Archive
  22. https://git-wip-us.apache.org/repos/asf?p=hbase.git;a=shortlog;h=refs/heads/trunk_on_hadoop-0.19.1-dev_with_hadoop-4379;pg=10 apache.org
Revision #4 Last Updated: