7. 部署Hbase分布式列数据库
7.1 部署HBase
进入先电大数据平台主界面,点击左侧的动作按钮,添加HBase服务。
7.2 HBase用户指南
7.2.1 测试验证
#su – hbase
$ hbase shell
7.2.2 HBase Shell常用命令
HBase Shell常用的几个命令如下:
名称 | 命令表达式 |
---|---|
创建表 | create ‘表名称’, ‘列名称1’,‘列名称2’,‘列名称N’ |
添加记录 | put ‘表名称’, ‘行名称’, ‘列名称:’, ‘值’ |
查看记录 | get ‘表名称’, ‘行名称’ |
查看表中的记录总数 | count ‘表名称’ |
删除记录 | delete ‘表名’ ,‘行名称’ , ‘列名称’ |
删除一张表 | 先要屏蔽该表,才能对该表进行删除,第一步 disable ‘表名称’ 第二步 drop ‘表名称’ |
查看所有记录 | scan “表名称” |
查看某个表某个列中所有数据 | scan “表名称” , [‘列名称:’] |
更新记录 | 就是重写一遍进行覆盖 |
1.一般操作
1) 查询服务器状态
hbase(main):001:0> status
2 servers, 0 dead, 1.5000 average load
2) 查询hive版本
hbase(main):002:0> version
1.0.1.1, re1dbf4df30d214fca14908df71d038081577ea46, Sun May 17 12:34:26 PDT 2015
2.DDL操作
1) 创建一个表
hbase(main):003:0>create 'member','member_id','address','info'
0 row(s) in 1.2210seconds
2) 获得表的描述
hbase(main):005:0> list
TABLE
member
1 row(s) in 0.0470 seconds
=> ["member"]
3) 删除一个列族,alter,disable,enable
我们之前建了3个列族,但是发现member_id这个列族是多余的,因为他就是主键,所以我们要将其删除。
hbase(main):006:0> alter 'member',{NAME=>'member_id',METHOD=>'delete'}
hbase(main):014:0> describe 'member'
Table member is ENABLED
member
COLUMN FAMILIES DESCRIPTION
{NAME => 'address', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOR
EVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
{NAME => 'info', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVE
R', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'}
2 row(s) in 0.0350 seconds
4) drop一个表
hbase(main):029:0>disable 'temp_table'
0 row(s) in 2.0590seconds
hbase(main):030:0>drop 'temp_table'
0 row(s) in 1.1070seconds
5) 判断表是否enable
hbase(main):016:0> is_enabled 'member'
true
0 row(s) in 0.0190 seconds
6) 判断表是否disable
hbase(main):032:0>is_disabled 'member'
false
0 row(s) in 0.0110seconds
3.DML操作
1) 插入几条记录
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:contry','china'
put'member','scutshuxue','address:province','zhejiang'
put'member','scutshuxue','address:city','hangzhou'
put'member','xiaofeng','info:birthday','1987-4-17'
put'member','xiaofeng','info:favorite','movie'
put'member','xiaofeng','info:company','alibaba'
put'member','xiaofeng','address:contry','china'
put'member','xiaofeng','address:province','guangdong'
put'member','xiaofeng','address:city','jieyang'
put'member','xiaofeng','address:town','xianqiao'
2) 获取一条数据
获取一个id的所有数据
hbase(main):003:0> get 'member','scutshuxue'
COLUMN CELL
address:city timestamp=1441600601563, value=hangzhou
address:contry timestamp=1441600601500, value=china
address:province timestamp=1441600601534, value=zhejiang
info:age timestamp=1441600579088, value=24
info:birthday timestamp=1441600601412, value=1987-06-17
info:company timestamp=1441600601451, value=alibaba
6 row(s) in 0.4320 seconds
获取一个id的所有数据获取一个id,一个列族中一个列的所有数据
hbase(main):026:0> get 'member','scutshuxue','info'
COLUMN CELL
info:age timestamp=1441600579088, value=24
info:birthday timestamp=1441600601412, value=1987-06-17
info:company timestamp=1441600601451, value=alibaba
3 row(s) in 0.0200 seconds
3) .更新一条记录
hbase(main):027:0> put 'member','scutshuxue','info:age' ,'99'
0 row(s) in 0.1460 seconds
4) 通过timestamp来获取两个版本的数据
hbase(main):028:0> get 'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}
COLUMN CELL
0 row(s) in 0.0160 seconds
5) 全表扫描
hbase(main):029:0> scan 'member'
ROW COLUMN+CELL
scutshuxue column=address:city, timestamp=1441600601563, value=hangzhou
scutshuxue column=address:contry, timestamp=1441600601500, value=china
scutshuxue column=address:province, timestamp=1441600601534, value=zhejiang
scutshuxue column=info:age, timestamp=1441601138357, value=99
scutshuxue column=info:birthday, timestamp=1441600601412, value=1987-06-17
scutshuxue column=info:company, timestamp=1441600601451, value=alibaba
xiaofeng column=address:city, timestamp=1441600601782, value=jieyang
xiaofeng column=address:contry, timestamp=1441600601725, value=china
xiaofeng column=address:province, timestamp=1441600601757, value=guangdong
xiaofeng column=address:town, timestamp=1441600601809, value=xianqiao
xiaofeng column=info:birthday, timestamp=1441600601608, value=1987-4-17
xiaofeng column=info:company, timestamp=1441600601694, value=alibaba
xiaofeng column=info:favorite, timestamp=1441600601640, value=movie
2 row(s) in 0.1060 seconds
6) 删除id为temp的值的‘info:age’字段
hbase(main):030:0> delete 'member','temp','info:age'
0 row(s) in 0.0450 seconds
7) 删除整行
hbase(main):031:0> deleteall 'member','xiaofeng'
0 row(s) in 0.0120 seconds
8) 查询表中有多少行
hbase(main):032:0> count 'member'
1 row(s) in 0.0380 seconds
=> 1
9) 给‘xiaofeng’这个id增加'info:age'字段,并使用counter实现递增获
hbase(main):033:0> incr 'member','xiaofeng','info:age'
COUNTER VALUE = 1
0 row(s) in 0.0230 seconds
取当前count的值hbase(main):034:0> get_counter 'member','xiaofeng','info:age'
COUNTER VALUE = 1
10) 将整张表清空
hbase(main):035:0> truncate 'member'
Truncating 'member' table (it may take a while):
\- Disabling table...
\- Truncating table...
0 row(s) in 1.6560 seconds