大数据之HBase入门
Posted Mr.zhou_Zxy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之HBase入门相关的知识,希望对你有一定的参考价值。
HBase从入门到精通
1.HBase介绍
分布式的数据库,它的本质是将数据存放在HDFS。它和Hive的最大区别就是,Hive的本质相当于封装了Mapreduce,HBase的本质相当于封装了HDFS。帮助我们存储一些非结构化的数据。他是一个Nosql的数据库。
使用场景:
1.海量非结构化或者结构化的数据的存储
2.需要实现近实时的读写管理的数据
2.HBase结构
1.client:hbase的客户端,使用shell命令或者API向HBase发出请求,并且客户端其实会缓存region的位置。
2.zookeeper:监控hmaster的状态,如果active的挂了,通知backup的master上位,存储所有region的寻址入口,监控regionserver的状态,并且通知hmaster,存储部分hbase的元数据
3.hmaster:为所有的hregionserver分配region,为regionserver做负载均衡,负责region的裂变,负责hdfs中的垃圾回收
4.regionserver:维护hmaster分配给他们的region,处理client发过来的读写请求,具体来执行负责切过大的region。
5.hlog:对hbase的读写操作,WAL的写数据保证数据安全
6.region:hbase中分布式存储的最小单位和负载均衡的最小单位,它表示表或者表的一部分
7.store:列簇
8.memstore:缓冲区,数据的写入先写入到缓冲区,然后再溢出到hdfs,默认128M
9.storefile:和hfile是同一种含义,不过storefile是逻辑上的名称,hfile是物理上的名称
3.HBase命令
3.1 基础命令
- help
- help ‘create_namespace’
- status
- version
- whoami
3.2 namespace(库操作)
-
create_namespace(创建一个命名空间)
类型1:create_namespace 'zxy' 类型2:create_namespace 'zxy',{'hbasename'=>'hadoop'}
-
list_namespace(列举当前有多少namespace)
类型1:list_namespace (显示全部namespace) 类型2:list_namespace 'zx*' (显示以zx开头的namespace)
-
describe_namespace(查看指定namespace的详情)
describe_namespace 'zxy'
-
list_namespace_tables(查看指定namespace中的所有table)
list_namespace_tables 'zxy'
-
drop_namespace(删除指定的namespace)
drop_namespace 'zxy'
-
alter_namespace(修改namespace的属性)
类型1:alter_namespace 'zxy',{METHOD=>'set','PROPERTY_NAME'=>'PROPERTY_VALUE'} (添加,修改) 类型2:alter_namespace 'zxy',{METHOD=>'unset',NAME='PROPERTY_NAME'} (删除)
3.3DDL(表操作)
-
建表(create)
类型1:create 'zxy:q1',{NAME=>'f1',VERSIONS=>5} (表名为q1,列簇为f1,可以保存5个版本数据) 类型2:create 'q2', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'} (同时创建多个列簇) 类型3:create 't1', 'f1', 'f2', 'f3' (同上) 类型4: create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true} (表示在默认namespace下创建t1表且列簇为f1,只能保存1个版本数据,表存活时间(TTL:Time to Live)259200毫秒,并且开启块缓存) 类型5:create 't1', {NAME => 'f1', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}} (在建表的同时指定hbase的相关的配置信息)
-
删表
-
distable
disable 'zxy:q1' is_disabled 'zxy:q1'
-
enable
enable 'zxy:q1' is_enabled 'zxy:q1'
-
drop
只有当表的is_disabled 'zxy:q1'为true时才可以删除 hbase(main):079:0> drop 'q1' ERROR: Table t1 is enabled. Disable it first. hbase(main):081:0> disable 'q1' 0 row(s) in 2.2460 seconds hbase(main):090:0> drop 'q1' 0 row(s) in 1.2540 seconds
-
-
查看表(list)
list 'zxy:.*'
-
查看表详情(desc/describe)
desc/describe命令: hbase(main):097:0> describe 'zxy:q1' Table ns1:t1 is ENABLED ns1:t1 COLUMN FAMILIES DESCRIPTION {NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '5', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FAL SE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOC KCACHE => 'true', BLOCKSIZE => '65536', REPLICATION_SCOPE => '0'} 1 row(s) in 0.0200 seconds
-
修改表(alter)
类型1:alter 'zxy:q1',NAME=>'f1',VERSSIONS=>1 (修改列簇的版本信息) 类型2:alter 'zxy:q1',NAME=>'f1',{NAME=>'f2',IN_MEMORY=>true},{NAME=>'f3',VERSIONS=>5} (同时修改多个列簇,如果指定列簇不存在就添加,存在就修改) 类型3:alter 'zxy:q1','f1','f2','f3' (使用默认属性,直接声明) 类型4:alter 'zxy:q1',NAME='f1',METHOD=>'delete' 类型4:alter 'zxy:q1','delete'=>'f1' (删除列簇)
-
表是否存在(exists)
exists 'zxy:q1'
3.4 DML(表数据操作)
-
插入(put)
put 'zxy:q1','r1','f1:name','zxy' (在表q1中插入一条数据)
-
获取(get)
类型1:get 'zxy:q1','r1' (显示r1行的数据) hbase(main):015:0> get 'zxy:q1', 'r1' COLUMN CELL f1:name timestamp=1621240902844, value=zxy 1 row(s) in 0.0200 seconds ## 默认查看最新的时间的值 hbase(main):018:0> get 'zxy:q1', 'r1' COLUMN CELL f1:name timestamp=1621241107495, value=zxy2 1 row(s) in 0.0080 seconds 类型2:get 'zxy:q1', 'r1', {TIMERANGE => [1621240902844, 1621241107494]} (查看指定范围时间的数据值) 类型3:get 'zxy:q1','r1',{COLUMN=>['f1','f2','f3']} (查看一个表中多个指定的列簇信息) 类型4:get 'zxy:q1','r1',{COLUMN=>'f1',TIMESTAMP=>1621241107495} (查看1621241107495瞬间的值)
-
查看(scan)
类型1:scan 'zxy:q1' (查询指定表的数据) 类型2:scan 'zxy:q1',{COLUMNS=>'f1:name'} (查询q1表中所有的有name属性的数据) 类型3:scan 'zxy:q1',{COLUMNS=>['f1'],LIMIT=>2,STARTROW=>'r1'} (查询q1表中的列簇f1,一共查询两行,从r1行开始,同一行的意思是行键相同) 类型4:scan 'zxy:q1',{COLUMNS=>'f1',TIMESTAMP=>[1621240902844, 1621241107494]} (查看指定时间范围内的表中所有的最新值)
-
追加数据(append)
append 'zxy:q1','r1','f1:name','zxy3' (zxy3即为追加值)
-
删除(delete)
类型1:delete 'zxy:q1','r1','f1:name' (删除一个kv数据) 类型2:delete 'zxy:q1','r1' (删除一行) 类型3:delete 'zxy:q1','r1','f1:name','zxy' (删除指定版本-时间戳)
-
自增(incr)
incr 'zxy:q1','001','f1:age' (在age设置自增键)
-
行数(count)
count 'zxy:q1' (q1表的行数)
-
截断(truncate)
truncate 'zxy:q1'
以上是关于大数据之HBase入门的主要内容,如果未能解决你的问题,请参考以下文章
大数据技术之HBaseHBase简介HBase快速入门HBase进阶