HBase存储概念的一些理解
首先,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进行重新分配。