BigData-Notes/notes/Hbase简介.md
2019-04-14 18:25:51 +08:00

71 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Hbase简介
<nav>
<a href="#一Hadoop的局限">一、Hadoop的局限</a><br/>
<a href="#二HBase简介">二、HBase简介</a><br/>
<a href="#三HBase-Table">三、HBase Table</a><br/>
<a href="#四Phoenix">四、Phoenix</a><br/>
</nav>
## 一、Hadoop的局限
HBase是一个构建在Hadoop文件系统之上的面向列的数据库管理系统。既然有了Hadoop为什么还需要HBase ? 这里首先介绍一下Hadoop的限制。
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/hbase.jpg"/> </div>
Hadoop擅长存储任意的、半结构甚至非结构化的数据主要通过HDFS来存储使用MapReduce来处理。但是Hadoop只能执行批处理并且只能以顺序方式访问数据。这意味着即使是最简单的工作也必须搜索整个数据集。面对日益复杂的业务需求需要一个新的解决方案来实现对海量数据的随机访问。实现数据的随机访问是传统的RDBMS所擅长的但其却不能存储海量的数据。在这种情况下必须有一种新的方案来解决海量数据存储和随机访问并存的问题HBase就是其中之一。
> HBaseCassandracouchDBDynamo和MongoDB都能存储海量数据并支持随机访问。
## 二、HBase简介
HBase是一个构建在Hadoop文件系统之上的面向列的数据库管理系统。
HBase是一种类似于Googles big table的数据模型它是Hadoop生态系统的一部分它将数据存储在HDFS上客户端可以通过HBase实现对HDFS上数据的随机访问。它具有以下特性
- 线性和模块化的可扩展性;
- 提供一致的读写操作;
- 支持数据分片;
- 支持RegionServers之间的自动故障转移
- 易于使用的Java 客户端 API
- 支持BlockCache和布隆过滤器
- 过滤器支持谓词下推。
## 三、HBase Table
HBase是一个面向列的数据库管理系统这里更为确切的而说HBase是一个面向列族的数据库管理系统。表 schema 仅定义列族表具有多个列族每个列族可以包含任意数量的列列由多个单元格cell )组成,单元格可以存储多个版本的数据,多个版本数据以时间戳进行区分。
下图为Hbase中一张表的
+ RowKey为行的唯一标识所有行按照RowKey的字典序进行排序
+ 该表具有两个列族分别是personal和office;
+ 其中列族personal拥有name、city、phone三个列office拥有tel、addres两个列。
<div align="center"> <img src="https://github.com/heibaiying/BigData-Notes/blob/master/pictures/HBase_table-iteblog.png"/> </div>
> 图片引用自博客HBase 是列式存储数据库吗https://www.iteblog.com/archives/2498.html
## 四、Phoenix
Phoenix是HBase的开源SQL中间层。使得您可以使用标准JDBC API而不是常规HBase客户端API来操作HBase上的数据。
简单来说如果你要直接使用HBase你就只能通过它的Java API来进行调用虽然官网介绍它的API是简单易用的但相比于使用一行SQL就能实现数据的查询过滤原生的API还是过于复杂Phoenix 的理念是`we put sql SQL back in NOSQL`即你可以使用标准的SQL就能完成对HBase中数据的操作。
Phoenix完全使用Java编写作为HBase内嵌的JDBC驱动。Phoenix查询引擎会将SQL查询转换为一个或多个HBase scan并编排并行执行以生成标准的JDBC结果集同时Phoenix还拥有二级索引等Hbase不具备的特性这使得Phoenix具有接近原生HBase API的性能表现。
## 参考资料
1. [HBase - Overview](https://www.tutorialspoint.com/hbase/hbase_overview.htm)