首先,HBase是分布式NoSQL数据库。
构建在Hadoop平台上的一个应用。
?
与Hadoop类似,属于Master-slave架构。
其中,存在一个运行的HMaster,和若干个HMaster备用,通过Zookeeper协调进行HA。
HMaster主要是处理Table的增删改查,HRegion的负载均衡,Region Split 和 新Region的重新分配。
存在一个或多个HRegion 的slave架构,用于实际数据的存储。
?? ??????? [HMaster]
??? ??????? /????????? \
[HRegion]....[HRegion]
?
HRegion Server是一个存储数据的服务。
对于一张表而言,一张表被拆开成多块,每一块就是一个Region。
每个Region会保存一个表里面某段连续的数据。
?
通过RDBMS的基本存储架构来思考。
????? 数据库的Block? --> 就是Region
????? 操作系统的Block-->就是HDFS BLOCK
?
HRegion Server中的Region由多个HStore组成。
每个HStore对应Table中的一个Column Family 。
所以经常一起使用的数据就要放到Column Family里面去。
?
数据写入到Region的时候,先会写入到内存中的MemStore对象里。
然后当MemStore到大一定大小的时候,就会Flush到HStore里面。
?
为了保证一致性,HBase有一个HLog对象,会在写入MemStore之前,先记录操作。
HLog其物理上是一个Hadoop Sequence File。
?
当HStore 文件不断变大到一定阀值的时候,就会进行Split Region的请求,由HMaster进行重新分配。
?
?
?