Hbase 简介
Hbase 是一个开源的非关系型的分布式数据库,运用于HDFS文件系统之上,可以容错地存储海量稀疏的数据。Hbase是一个高可靠、高性能、面向列、可伸缩、实时读写的分布式数据库,主要用来存储非结构化和半结构化的松散数据 。
Hbase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。
重点:
Hbase 是基于列存储的,主要用来存储非结构化和半结构化的松散数据,适合大数据的实时查询;
利用HDFS作可靠的底层文件存储系统;
利用MapReduce高性能的处理Hbase中的海量数据
利用Zookeeper作为其分布式协同服务有稳定服务和Failover(故障转移)机制;
Hbase 特点
1. Hbase 有四个维度来确定某个具体的值,行间,列族,列名 ,时间戳
2. 强一致性
3. 多维稀疏列表
4. 稀疏多维排序map
BigTable 本质上是一个Map结构数据库,Hbase亦然,也是由一系列的KV构成的。然而Hbase这个Map系统却有很多的限定词--稀疏的、分布式的、排序的、持久的、多维的。Hbase Map和普通的Map 不一样,Hbase Map的Key是复合键,由rowKey,column family,qualif ier,type 以及timestamp组成,value即为cell的值。
下面我们来介绍一下 多维、稀疏、排序等关键词:
(1)多维:这个特征比较容易理解。Hbase中Map与普通的Map最大的不同在于,key是一个复合数据结构,由多维元素构成,包括rowkey,columnfamily,qualifier,type以及timestamp。
(2)稀疏:稀疏性是Hbase一个突出的特点。从上面这个图可以看出一行上是有空值。在其他的数据库中,会对这些空值进行null的填充,而对于Hbase,空值是不需要进行任何填充。这个特性很重要,因为Hbase的列在理论上是可以无限扩展的,对于成百万列的表来说,进行填充null的策略,势必会导致造成大量空间的浪费。因此稀疏性是Hbase的列可以无限拓展的重要条件。
(3)排序:构成Hbase的KV在同一个文件中都是有序的,但规则并不是仅仅按照rowkey排序,而是按照KV中的key进行排序--先比较rowkey,小的在前,rowkey相同,在比较column,即column family:qualifier ,小在前,column还相同,再比较timestamp,即版本信息,timestamp大的排在前面。
(4)分布式:很容易理解,构成Hbase的所有Map并不集中在某台机器上,而是分布在整个集群中。
5. HDFS压缩存储
6. 自动水平扩展
7.服务器自动调整平衡
Hbase 架构各个角色的功能
一.Client
Client包含了访问Hbase的接口,另外Client还维护了对应的 cache来加速Hbase的访问,比如cache的.META.元数据信息。
二.Zookeeper
Hbase通过Zookeeper来做master高可用,regionServer的监控,元数据的入口以及集群
配置的维护。具体如下
1.通过Zookeeper来保证集群中只有1个master在运行,如果master异常,会通过竞争机制产生新的master提供服务;
2.通过Zookeeper来监控RegionServer的状态,当RegionServer有异常的时候,通过回调的形式通知Master RegionServer上下限的信息;
3.通过Zookeeper存储元数据的统一入口地址;
三.Hmaster
master结点主要职责如下:
1.为RegionServer分配Region
2.管理整个集群的负载均衡
3.管理集群的元数据信息
4.当发现失效的Region,并将失效的Region分配到正常的RegionServer
5.放RegionServer失效的时候,协对应的Hlog进行拆分
四.HregionServer
HregionServer直接对接用户的读写请求,“干活”节点。功能如下:
1.管理master为其分配的Region
2.处理来自客户端的读写请求
3.负责和底层HDFS交换,存储数据到HDFS
4.负责Region变大以后的拆分
5.负责Storefile的合并工作
五.HDFS
HDFS为Hbase提供最终的底层存储服务,同时提供了Hbase高可用,功能如下:
1.提供元数据和表数据的底层分布式存储服务
2.数据多副本,保证的高可靠和高可用性