Transferred from: http://www.cnblogs.com/nexiyi/p/hbase_shell.html
Two months ago used HBase, now the most basic commands are forgotten, leave a reference ~
- Enter HBase Shell Console
$HBASE _home/bin/hbase Shell
If you have Kerberos authentication, you need to use the appropriate keytab for authentication (using the Kinit command), and then use the HBase shell to enter the certificate successfully. You can use the WhoAmI command to view the current user
- Management of Tables
1) See what tables are available
2) Create a table
# 语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>} # 例如:创建表t1,有两个family name:f1,f2,且版本数均为2 hbase(main)> create ‘t1‘ ,{NAME => ‘f1‘ , VERSIONS => 2},{NAME => ‘f2‘ , VERSIONS => 2} |
3) Delete Table
Two steps: First disable, then drop
Example: Delete Table T1
hbase(main)> disable ‘t1‘ hbase(main)> drop ‘t1‘ |
4) View the structure of the table
# 语法:describe <table> # 例如:查看表t1的结构 hbase(main)> describe ‘t1‘ |
5) Modify Table structure
To modify a table structure, you must first disable
# 语法:alter ‘t1‘, {NAME => ‘f1‘}, {NAME => ‘f2‘, METHOD => ‘delete‘} # 例如:修改表test1的cf的TTL为180天 hbase(main)> disable ‘test1‘ hbase(main)> alter ‘test1‘ ,{NAME=> ‘body‘ ,TTL=> ‘15552000‘ },{NAME=> ‘meta‘ , TTL=> ‘15552000‘ } hbase(main)> enable ‘test1‘ |
- Rights Management
1) Assigning Permissions
# 语法 : grant <user> <permissions> <table> <column family> <column qualifier> 参数后面用逗号分隔 # 权限用五个字母表示: "RWXCA". # READ(‘R‘), WRITE(‘W‘), EXEC(‘X‘), CREATE(‘C‘), ADMIN(‘A‘) # 例如,给用户‘test‘分配对表t1有读写的权限, hbase(main)> grant ‘test‘ , ‘RW‘ , ‘t1‘ |
2) View Permissions
# 语法:user_permission <table> # 例如,查看表t1的权限列表 hbase(main)> user_permission ‘t1‘ |
3) Revoke permissions
# 与分配权限类似,语法:revoke <user> <table> <column family> <column qualifier> # 例如,收回test用户在表t1上的权限 hbase(main)> revoke ‘test‘ , ‘t1‘ |
- table Data Deletion and modification
1) Add data
# 语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp> # 例如:给表t1的添加一行记录:rowkey是rowkey001,family name:f1,column name:col1,value:value01,timestamp:系统默认 hbase(main)> put ‘t1‘ , ‘rowkey001‘ , ‘f1:col1‘ , ‘value01‘ 用法比较单一。 |
2) query data
A) query a row of records
# 语法:get <table>,<rowkey>,[<family:column>,....]
# 例如:查询表t1,rowkey001中的f1下的col1的值
hbase(main)> get
‘t1‘
,
‘rowkey001‘
,
‘f1:col1‘
# 或者:
hbase(main)> get
‘t1‘
,
‘rowkey001‘
, {COLUMN=>
‘f1:col1‘
}
# 查询表t1,rowke002中的f1下的所有列值
hbase(main)> get
‘t1‘
,
‘rowkey001‘
|
b) Scan table
# 语法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num} # 另外,还可以添加STARTROW、TIMERANGE和FITLER等高级功能 # 例如:扫描表t1的前5条数据 hbase(main)> scan ‘t1‘ ,{LIMIT=>5} |
c) Number of data rows in the query table
# 语法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum} # INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度 # 例如,查询表t1中的行数,每100条显示一次,缓存区为500 hbase(main)> count ‘t1‘ , {INTERVAL => 100, CACHE => 500} |
3) Delete data
A) Delete a column value from the row
# 语法:delete <table>, <rowkey>, <family:column> , <timestamp>,必须指定列名 # 例如:删除表t1,rowkey001中的f1:col1的数据 hbase(main)> delete ‘t1‘ , ‘rowkey001‘ , ‘f1:col1‘ |
Note: Data for all versions of the row f1:col1 column will be deleted
b) Delete Row
# 语法:deleteall <table>, <rowkey>, <family:column> , <timestamp>,可以不指定列名,删除整行数据 # 例如:删除表t1,rowk001的数据 hbase(main)> deleteall ‘t1‘ , ‘rowkey001‘ |
c) Delete all data from the table
# 语法: truncate <table> # 其具体过程是:disable table -> drop table -> create table # 例如:删除表t1的所有数据 hbase(main)> truncate ‘t1‘ |
- Region Management
1) Move Region
# 语法:move ‘encodeRegionName‘, ‘ServerName‘ # encodeRegionName指的regioName后面的编码,ServerName指的是master-status的Region Servers列表 # 示例 hbase(main)>move ‘4343995a58be8e5bbc739af1e91cd72d‘ , ‘db-41.xxx.xxx.org,60020,1390274516739‘ |
2) Open/close region
# 语法:balance_switch true|false hbase(main)> balance_switch |
3) Manual Split
# 语法:split ‘regionName‘, ‘splitKey‘ |
4) manual Trigger major compaction
#语法: #Compact all regions in a table: #hbase> major_compact ‘t1‘ #Compact an entire region: #hbase> major_compact ‘r1‘ #Compact a single column family within a region: #hbase> major_compact ‘r1‘, ‘c1‘ #Compact a single column family within a table: #hbase> major_compact ‘t1‘, ‘c1‘ |
- Configuration Management and node restart
1) Modify the HDFs configuration
HDFs Configuration Location:/etc/hadoop/conf
# 同步hdfs配置
cat
/home/hadoop/slaves
|
xargs
-i -t
scp
/etc/hadoop/conf/hdfs-site
.xml [email protected]{}:
/etc/hadoop/conf/hdfs-site
.xml
#关闭:
cat /home/hadoop/slaves
|
xargs
-i -t
ssh
[email protected]{}
"sudo /home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh --config /etc/hadoop/conf stop datanode"
#启动:
cat
/home/hadoop/slaves
|
xargs
-i -t
ssh [email protected]{}
"sudo /home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh --config /etc/hadoop/conf start datanode"
|
2) Modify HBase configuration
HBase Configuration Location:
# 同步hbase配置 cat /home/hadoop/hbase/conf/regionservers | xargs -i -t scp /home/hadoop/hbase/conf/hbase-site .xml [email protected]{}: /home/hadoop/hbase/conf/hbase-site .xml # graceful重启 cd ~ /hbase bin /graceful_stop .sh --restart --reload --debug inspurXXX.xxx.xxx.org |
HBase Common shell commands