1 HRegion结构
参看http://blog.youkuaiyun.com/wyl6019/article/details/52995909结构图可以看出HRegion的结构包括:
当向HBase中写入数据时,会向HLog中写入日记,之后在向HRegion的MemStore中写入,接着异步写入到StoreFile中,存储到HDFS中;
Client先询问zookeeper的.META.信息,找到对应的HRegionServer;
将操作日记同步写入到HLog中;
将数据写入到对应的HRegion的MemStore中;
返回客户端写入成功;
当MemStore达到一定大小,再将数据存储到磁盘(StoreFile),这一步是异步进行,这是保证HBase写操作高效的原因所在;
当StoreFile的数量达到一定阈值,触发Compact合并,此时多个storeFile合并成一个较大的StoreFile;
当StoreFile的大小超过阈值,会触发split分割,将这个HRegion分割为两个子HRegion;
最后HMaster决定是否需要负载均衡,若需要,将HRegion分配到不用的HRegion Server上;
2 HBase内部表
.META. :存储HRegion的列表和HRegion Server 的服务地址;
Namespace:存储命名空间表;
3 HBase shell
hbase(main):006:0> list_namespace //列出HBase的命名空间
hbase(main):009:0> list_namespace_tables ‘hbase’; //列出指定命名空间的表
hbase(main):002:0> scan 'hbase:namespace' //列出表信息
hbase(main):003:0> create_namespace 'wyl' //创建命名空间
hbase(main):006:0> scan 'hbase:meta' //列出所有元数据
hbase(main):007:0> create 'table_wyl','info' //创建一张表名为table_wyl,列族info
hbase(main):011:0> put 'table_wyl','rowkey001','info:name','wangyl' //向表中插入一条数据
此时数据写入到内存中,并没有flush到磁盘,可以在管理界面上查看:
http://hadoop_master:50070
hbase(main):013:0> flush 'table_wyl' //内存中刷盘
当该目录下有三个文件时候(可以配置),将触发compact操作