HBase是强一致性的海量数据库,无论是读写性能,或是数据容量,还是一致性方面,HBase都有非常优秀的表现。
一、架构
HBase的架构由DFS+Zookeeper+HMaster+HRegionServer四个部分组成。
1、HRegionServer作为数据的实际存取服务器,主要负责数据的最终存取,一般情况都是多台,RegionServer根据不同的rowKey划分为多个region,每个region按顺序存放从startKey到endKey的数据。
2、Zookeeper负责保持多台HMaster中只有一台是活跃的;存储HBase的schema、table、CF等元信息,存储所有的region入口,监控HRegionServer的状态,并将该信息通知给HMaster。可以看出来,Zookeeper几乎是负责整个集群的关键信息的存取以及核心状态的监控。如果Zookeeper挂了,那么整个HBase集群就是不可用的状态。
3、HMaster是是负责对table元数据的管理;对HRegion的负载均衡,调整HRegion的布局,比如分裂和合并;包括恢复数据的迁移等。HMaster相当于对HRegionServer的后台管理,对于一些定制化的管理行为,zookeeper不可能完成,于是就有了HMaster。如果HMaster挂了,除了不能对table进行配置管理,不能扩展region,并不会影响整体服务的可用性。
二、客户端首次读写的流程:
1、客户端首先从zookeeper中得到META table的位置,根据META table存储的位置得到具体的HRegionServer是哪台。
2、查询具体的HRegionServer。