HBase系列(二)

来源:互联网 发布:depaul university知乎 编辑:程序博客网 时间:2024/05/01 16:56

1 HRegion结构


参看http://blog.csdn.net/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操作


hbase(main):007:0* status
hbase(main):008:0> version
创建表    格式 : create  '表名','列族1','列族2'
hbase(main):009:0> create 'member','address','no'
查看所有表
hbase(main):010:0> list
查看具体表信息
hbase(main):013:0> describe 'member'
删除表中一个列族
hbase(main):014:0> alter 'member',{NAME=>'no',METHOD=>'delete'}
禁用/启动表
hbase(main):017:0> disable/enable 'member'
删除表
hbase(main):018:0> drop 'member'
判断一个表是否存在
hbase(main):021:0> exists 'member'
插入一条数据   格式  : put 表名,行键,列,值
hbase(main):025:0> put 'member','wyl','info:age',24
获取一条数据   格式  : get 表名,行键(,列)
hbase(main):027:0> get 'member','wyl','info:age'
全表扫描
hbase(main):033:0> scan 'member'


0 0
原创粉丝点击