HBase学习心得

Hadoop Database简称HBase,是一个高可靠性、高性能、面向列,可伸缩的分布式存储系统。

               利用HBase可在廉价的PC Server上搭建起大规模结构化存储集群。利用HDFS作为其文件存储系统、利用MapReduce处理HBase中海量数据、利用Zookeeper作为协调工具。

 

一:HBase主要包含三种属性:

   主键:Row Key

              用来检索记录的主键,访问HBase table中的行。只有三种方式:

                                                                                                                  1.通过单个Row Key访问

                                                                                                                  2.通过Row Key的range

                                                                                                                  3.通过全表扫描

   列族:Column Family

              在创建表时声明,一个列族可以包含多个列。列中数据都是以二进制形式存在,没有数据类型。(可以动态添加列)

 

   时间戳:Timestamp

               通过row和columns确定的为一个存储单元称为cell。每个cell都保存着同一份数据的多个版本。即一个cell里可以存着多个数据,每个数据都有版本号。各个版本通过时间戳来索引。

 

二:HBase的Shell语言总结:

create 'people' {NAME => 'info',VERSIONS =>3}, {NAME =>'data', VERSIONS =>1}        //创建people表。两个列族分别为 info,data

1.列出所有表

    list                

2.描述people表结构

   describe ‘people’    

3.插入rk0001的主键,info列族下的name列中插入值xxx

   put 'people', 'rk0001', 'info:name', 'xxx'     

4.查看

   scan 'people'                

5.给列族添加一列sex,并赋值为man

   put  'people' ,'rk0001', 'info:sex', 'man'      

6.查看历史版本

   scan 'people' ,{COLUMN => 'info', VERSIONS=3}          

   PS:

         put 相同列的时候,原数据不是被覆盖,VERSIONS=3,意味着每次只能有三个版本的数据存在,当一个数据修改次数大于3时,第一个版本的数据将会消失(delete)。而只保存后三个版本的数据。在HMaster进程退出之前,能用scan 'people', {RAW =>true,VERSIONS =>10 } 查看到被delete的版本数据(所有版本数据)。

7.获取people表中row key 为rk0001的所有信息

   get 'people' ,'rk0001'

8....info列族中所有信息

   get ‘people', 'rk0001', 'info'

9....info列族中的name,age列

   get 'people', 'rk0001', 'info:name','info:age'

10....获取info,data列族

    get 'people' ,'rk0001','info','data'

    OR

    get 'people','rk0001',{COLUMN =>['info', 'data']}

11...   

     get 'people','rk0001',{COLUMN=>['info:name', 'data:age']}

12.获取列族,rowkey,版本号

     get 'people','rk0001', {'COLUMN=> 'info', 'VERSIONS=>3}

     OR

     get 'people', 'rk0001', {'COLUMN=> 'info:name', VERSIONS=>2}

     OR

     get 'people', 'rk0001', {COLUMN=>'info:name', VERSIONS =>5, TIMERANGE=>[135..., 135...]}

13.获取表中rowkey,cell值为张三的信息

     get 'people','rk0001', {FILTER=> "ValueFilter(=, 'binary:张三')"}

     PS:

           binary:指明数据以二进制方式编码

14.获取rowkey,列名中包含a字符的信息

     get 'people' ,'rk0001',{FILTER =>"(QualifierFilter(=, 'substring :a'))"}

15.删

     delete 'people','rk0001', 'info:name'

16.清空表

     turncate 'people'

17.修

     1.首先停用表

        disable 'people'

     2.添加两个列族 ’f1‘,’f2‘

        alter 'people' ,NAME= >'f1'

        alter 'people', NAME= >'f2'

     3.启动表

        enable 'people'

18.删除一个列族

     alter 'people', NAME=> 'f1', METHOD=>'delete'

     OR

     alter 'people', 'delete'=>'f1'

19.删除表

     1.首先停用表

        disable 'people'

      2.删

        drop  'people'

 

 三:HBase原理总结

         HBase中的table表在行的方向上分割成多个HRegion,一个Region由[startkey,endkey)(前包含后排除)表示。每个HRegion分散在不同的RegionServer中。(不在HDFS中)。

         PS:Region是分布式,负载均衡的基本单位。

                 HMaster和HRegionServer之间通过Zookeeper进行协调。

              

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值