从BigTable说起:
HBase的前身是BigTable,BigTable谷歌的一个分布式存储系统,利用谷歌提出的MapReduce分布式并行计算模型来处理海量数据,使用谷歌分布式文件系统GFS作为底层数据存储,采用Chubby提供协同服务管理,可以扩展到PB级别的数据和上千台机器,具备广泛应用性、可扩展性、高性能和高可用性等特点。
HBase介绍:
HBase是一个通过廉价机器集群来完成海量数据高速存储及读取的分布式面向列的开源数据库解决方案。
HBase数据模型:
表:HBase的数据同样是用表来组织的,表由行和列组成,列分为若干个列族,行和列的坐 标交叉决定了一个单元格。
行:每个表由若干行组成,每个行有一个行键作为这一行的唯一标识。访问表中的行只有三种方式:通过单个行键进行查询、通过一个行键的区间来访问、全表扫描。
列族:一个HBase表被分组成许多“列族”的集合,它是基本的访问控制单元。
列修饰符(列限定符):列族里的数据通过列限定符(或列)来定位
单元格:在HBase表中,通过行、列族和列限定符确定一个“单元格”(cell),单元格中存储的数据没有数据类型,总被视为字节数组byte[]
时间戳:每个单元格都保存着同一份数据的多个版本,这些版本采用时间戳进行索引
HBase特点:
1. HBase有4个维度来确定某个具体的值
Hbase中具体的数值,叫单元格, Hbase的读写都是以单元格进行的
维度为: RowKey/ColumnFamily/Column/Timestamp
Row Key键是唯一确定的标记,按字典序进行排序。只能存64k的字节数据。实际上,row key存满64k的几率不大,因为row key弄太大了,效率就低了
Time Stamp时间戳即版本信息 默认为1
2. 数据强一致性
3. 是稀疏多维的列表
4. 有稀疏多维的Map
BigTable本质上是一个Map结构数据库,Hbsae亦然,也是由一系列KV构成
HBaseMap有很多限定词:稀松的/持久的/排序的/多维的/持久性的
它与普通Map不同虽然都是KV组成但HBaseMap的Key是一个复合健
由 rowkey、ColumnFamily、Column、Timestamp组成
5. 拥有HDFS压缩存储
6. 自动水平扩展
7. 服务器自动调整平衡
(1) HDFS为Hbase提供可靠的底层数据存储服务
(2) MapReduce为Hbase提供稳定的计算能力
(3) Zookeeper为Hbase提供稳定的服务以及Failover机制
因此我们说Hbase是一个通过大量廉价的机器解决海量数据的高速存储和读取的分布式数据库解决方案