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]
- @HBase
- Developer
- Governance
- Apache Software Foundation
- Country of Origin
- US
- Start Year
- 2007 [24]
- Project Type
- Open Source
- Written in
- Java
- Inspired By
- Cloud BigTable
- Operating System
- All OS with Java VM
- License
- Apache v2
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[05]
HBase was initially a project by the company Powerset, a San Francisco-based search and natural language company. Microsoft acquired Powerset in 2008.
Checkpoints[06]
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[07]
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[08]
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[09]
HBase does not directly support refential integrity. Users can use a coprocessor to enforce foreign keys.
Indexes[10]
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[11][12]
HBase only provide "read committed" isolation level. Users can downgrade the isolation level to "read uncommitted" by modifying the source code.
Joins[13]
HBase does not support join operations. Users can implement joins in their application code.
Query Interface[17]
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.
Stored Procedures[20]
Stored procedures are not directly supported in HBase. But users can use coprocessors to resemble store procedures.
System Architecture[21][22]
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 File System, thereby making it shared-disk. The Hadoop DataNodes store the data that RegionServers are managing. The HDFS Zookeeper maintains the server status in the cluster.
Views[23]
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
24 sources- Apache HBase apache.org
- https://hbase.apache.org/source-repository.html apache.org
- https://hbase.apache.org/book.html apache.org
- Apache HBase - Wikipedia wikipedia.org
- Powerset team resumes HBase contributions | Microsoft Learn microsoft.com
- Apache HBase® Reference Guide apache.org
- Apache HBase Internals: Locking and Multiversion Concurrency Control | Blogs Archive apache.org
- Apache HBase® Reference Guide apache.org
- Apache HBase® Reference Guide apache.org
- Apache HBase® Reference Guide apache.org
- ACID Semantics - Apache HBase apache.org
- https://git-wip-us.apache.org/repos/asf?p=hbase.git;a=tree apache.org
- Apache HBase® Reference Guide apache.org
- https://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/wal/HLog.html apache.org
- Lineland: HBase Architecture 101 - Write-ahead-Log larsgeorge.com
- Apache HBase® Reference Guide apache.org
- Apache HBase® Reference Guide apache.org
- https://link.springer.com/chapter/10.1007/978-3-642-54341-8_4 springer.com
- https://netwoven.com/data-engineering-and-analytics/data-engineering/hbase-overview-of-architecture-and-data-model netwoven.com
- Coprocessor Introduction | Blogs Archive apache.org
- https://www.mapr.com/blog/in-depth-look-hbase-architecture mapr.com
- Apache HBase® Reference Guide apache.org
- https://phoenix.apache.org/docs/features/views apache.org
- 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