一:HBase
1.使用hbase 命令之前先检查一下hbase是否运行正常,通过JPS查看进程
hadoop@master:/mysoftware/hbase-1.2.1/bin$ jps
4051 HQuorumPeer
3776 QuorumPeerMain
2818 NameNode
4149 HMaster
3140 SecondaryNameNode
2966 DataNode
4549 Jps
4304 HRegionServer
3365 ResourceManager
2.进入HBase shell 客户端
hadoop@master:/mysoftware/hbase-1.2.1$ bin/hbase shell
二:HBase 基本命令概览
HBase Shell的一些基本操作命令,列出了几个常用的HBase Shell命令,如下:
名称 | 命令表达式 |
创建表 | create '表名称', '列名称1','列名称2','列名称N' |
添加记录 | put '表名称', '行名称', '列名称:xxx', '值' |
查看记录 | get '表名称', '行名称' |
查看表中的记录总数 | count '表名称' |
删除记录 | delete '表名' ,'行名称' , '列名称' |
删除一张表 | 先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步 drop '表名称' |
查看所有记录 | scan "表名称" |
查看某个表某个列中所有数据 | scan "表名称" , ['列名称:'] |
更新记录 | 就是重写一遍进行覆盖 |
三:HBase基本命令小实用,以下步骤
四:.一般操作
1.查询服务器状态:status
hbase(main):002:0> status
1 active master, 0 backup masters, 1 servers, 0 dead, 3.0000 average load
2.查询Hbase版本:version
hbase(main):003:0> vesion
NameError: undefined local variable or method `vesion' for #<Object:0x52ac9a2c>
五:DDL操作
1.创建一张表userinfo :create 'userinfo','name','age'
hbase(main):011:0> create 'userinfo','name','age'
0 row(s) in 1.3220 seconds
=> Hbase::Table - userinfo
2.列出所有表:list
hbase(main):013:0> list
TABLE
table1
userinfo
2 row(s) in 0.0230 seconds
=> ["table1", "userinfo"]
3.获得表的描述:describe
hbase(main):014:0> describe 'userinfo'
Table userinfo is ENABLED
userinfo
COLUMN FAMILIES DESCRIPTION
{NAME => 'age', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSI
ON => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'f
alse', BLOCKCACHE => 'true'}
{NAME => 'name', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESS
ION => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => '
false', BLOCKCACHE => 'true'}
2 row(s) in 0.0430 seconds
4.查看表是否存在:exists
hbase(main):017:0> exists 'table2'
Table table2 does not exist
0 row(s) in 0.0210 seconds
5.判断表是否为:‘enable’
hbase(main):018:0> is_enabled 'userinfo'
true
6.判断表是否为:‘disable’
hbase(main):019:0> is_disabled 'userinfo'
false
7.删除一个列族 disable alter enable
hbase(main):003:0> disable 'table1'
0 row(s) in 0.0230 seconds
hbase(main):004:0> alter 'table1',{ NAME => 't2' , METHOD => 'delete'}
Updating all regions with the new schema...
1/1 regions updated.
Done.
0 row(s) in 2.2240 seconds
hbase(main):005:0> enable 'table1'
0 row(s) in 1.2990 seconds
然后在查看该列是否删除,看通过获得表的描述查看,如下: 只剩下列 ‘t1‘。
hbase(main):006:0> describe 'table1'
Table table1 is ENABLED
table1
COLUMN FAMILIES DESCRIPTION
{NAME => 't1', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', VERSIONS => '1', COMPRESSIO
N => 'NONE', MIN_VERSIONS => '0', TTL => 'FOREVER', KEEP_DELETED_CELLS => 'FALSE', BLOCKSIZE => '65536', IN_MEMORY => 'fa
lse', BLOCKCACHE => 'true'}
1 row(s) in 0.0290 seconds
8.删除一个表:drop , 删除表前,需要先屏蔽该表。
hbase(main):007:0> disable 'table1'
0 row(s) in 2.2910 seconds
hbase(main):008:0> drop 'table1'
0 row(s) in 1.3030 seconds
六:DML操作
1.往userinfo中插入几条记录: put ’表名‘,’行名‘,’列族名:xxx‘,'value'
hbase(main):016:0> put 'userinfo','row1','name:col1','Berg'
0 row(s) in 0.0870 seconds
hbase(main):017:0> put 'userinfo','row1','age:col2','22'
0 row(s) in 0.0180 seconds
hbase(main):018:0> put 'userinfo','row2','name:col1','hadoophbase'
0 row(s) in 0.0190 seconds
hbase(main):019:0> put 'userinfo','row2','age:col2','20'
0 row(s) in 0.0180 seconds
2.全表扫描:scan
hbase(main):001:0> scan 'userinfo'
ROW COLUMN+CELL
row1 column=age:col2, timestamp=1463066528653, value=22
row1 column=name:col1, timestamp=1463066505217, value=Berg
row2 column=age:col2, timestamp=1463066598770, value=20
row2 column=name:col1, timestamp=1463066577206, value=hadoophbase
3. 获得某一行的所有数据,也是获得某一行名的所有数据
hbase(main):003:0> get 'userinfo', 'row1'
COLUMN CELL
age:col2 timestamp=1463066528653, value=22
name:col1 timestamp=1463066505217, value=Berg
4.获得某行,某列族,某列的所有数据
hbase(main):004:0> get 'userinfo','row1','name:col1'
COLUMN CELL
name:col1 timestamp=1463066505217, value=Berg
1 row(s) in 0.0190 seconds
5.更新一条记录 : put( name:col1的值更改为: BergBergBerg )
hbase(main):009:0> put 'userinfo','row2','name:col1','BergBergBerg'
0 row(s) in 0.0720 seconds
获取更新后的值:
hbase(main):011:0> get 'userinfo','row2','name:col1'
COLUMN CELL
name:col1 timestamp=1463067259346, value=BergBergBerg
1 row(s) in 0.0280 seconds
6.查询表中有多少行:count
hbase(main):012:0> count 'userinfo'
2 row(s) in 0.0450 seconds
=> 2
7.删除 某行 某列族的值:delete
hbase(main):023:0> delete 'userinfo','row2','age:col2'
0 row(s) in 0.0140 seconds
hbase(main):024:0> scan 'userinfo'
ROW COLUMN+CELL
row1 column=age:col2, timestamp=1463066528653, value=22
row1 column=name:col1, timestamp=1463066505217, value=Berg
row2 column=name:col1, timestamp=1463067259346, value=BergBergBerg
2 row(s) in 0.0300 seconds
8.删除整行的值:deleteall
hbase(main):026:0> deleteall 'userinfo','row2'
0 row(s) in 0.0190 seconds
hbase(main):027:0> scan 'userinfo'
ROW COLUMN+CELL
row1 column=age:col2, timestamp=1463066528653, value=22
row1 column=name:col1, timestamp=1463066505217, value=Berg
1 row(s) in 0.0320 seconds
9.给 row1 这行 age列,并使用counter实现递增 : incr (好吧,做这里的时候有点怪,原因无他,列族名没有取得好。。。。。)
hbase(main):024:0> incr 'userinfo','row1','age:id'
COUNTER VALUE = 1
0 row(s) in 0.0170 seconds
hbase(main):025:0> incr 'userinfo','row1','age:id'
COUNTER VALUE = 2
0 row(s) in 0.0210 seconds
hbase(main):026:0> incr 'userinfo','row1','age:id'
COUNTER VALUE = 3
0 row(s) in 0.1270 seconds
获取当前counter的值:
hbase(main):027:0> get_
get_auths get_counter get_splits get_table
hbase(main):027:0> get_counter 'userinfo','row1','age:id'
COUNTER VALUE = 3
10.将整个表清空:truncate
hbase(main):028:0> truncate 'userinfo'
Truncating 'userinfo' table (it may take a while):
- Disabling table...
- Truncating table...
0 row(s) in 4.3360 seconds
hbase(main):029:0> scan 'userinfo'
ROW COLUMN+CELL
0 row(s) in 0.3490 seconds