Hbase架构深入学习
Hbase
Apache HBase建立在HDFS之上的分布式、基于列存储的非关系型数据库;具有可靠、稳定、自动容错、多版本等特性;HBase实际上是Google BigTable项目的开源实现,它适合海量大规模(数十亿行、数百万列)的结构化数据存储;当需要随机、实时读写访问大数据时,使用HBase;
架构
每个服务详解:
在整个Hbase架构中,采用的是Master/Slave架构,其组成部分包括Zookeeper集群,HMaster节点,HRegionServer节点,底层存储到Hdfs集群中。
Zookeeper的作用:管理多个HMaster保证只有一个HMaster处于Active状态,其余处于stanby状态;存储所有HRegion的访问地址入口,Zookerper中的Quorum节点存储表地址信息,HMaster地址;使用watch机制监控HRegionServer的上线和下线信息,并及时通知给HMaster;存放整个 HBase集群的元数据以及集群的状态信息;还有容错机制,active状态的Hmaster宕机或者出故障之后,将正常的Stanby状态节点切换为Active状态。
Hmaster作用:管理HRegionServer,实现HRegion的负载均衡;在Region切片后负责新的Region的分布,当某个HRegionServer退出时迁移其中的Hegion到其他HRegionServer中,管理用户对命名空间以及table的元数据(实际存储在HDFS上)。
HRegionServer作用:负责监控正在运行的HRegion,处理访问HRegion的IO请求,向HDFS中读写数据;负责切分运作过程中正在变大的HRegion,拆分机制为HRegion的大小 >= HRegion数量的平方 * 128MB时继续进行切分,当HRegion数量达到9时,之后的拆分大小为10GB;Client访问HBase中的数据只需要访问zookeeper中存储的相关元数据信息,直接访问HRegionServer进行数据的读写,HMaster仅仅维护了Table和Region的元数据,因此负载很低;
Client端:整个HBase集群的访问入口;使用HBase RPC机制与HMaster和HRegionServer进行通信;与HMaster进行通信进行管理表的操作;与HRegionServer进行数据读写类操作;包含访问HBase的接口,并维护cache来加快对HBase的访问
HRegion:是HBase根据rowkey切割后的产物,里面存储着切割后的StartKey和EndKey,由于rowkey是排序的,所以Client可以通过HMaster快速的定位每个RowKey在哪个HRegion中。
HRegionServer一般和DataNode在同一台机器上运行,实现数据的本地性。HRegionServer包含多个HRegion(0~1000)
HRegion由WAL(HLog)、store组成 Store由MemStore、StoreFile组成
HRegion由WAL(HLog)、store组成 Store由MemStore、StoreFile组成
Store是由列簇Column Family切分而成的
MemStore是一个写缓存(In Memory Sorted Buer),所有数据的写在完成WAL日志写后,会 写入MemStore中,由MemStore根据一定的算法将数据Flush到底层HDFS文件中(HFile),通常每个HRegion中的每个Column Family有一个自己的MemStore。