HBase 常用Shell命令

参考

http://www.cnblogs.com/nexiyi/p/hbase_shell.html

进入hbaseshellconsole

$HBASE_HOME/bin/hbaseshell

如果有kerberos认证,需要事先使用相应的keytab进行一下认证(使用kinit命令),认证成功之后再使用hbaseshell进入可以使用whoami命令可查看当前用户

hbase(main)>whoami

表的管理

1)查看有哪些表

hbase(main)>list

2)创建表

#语法:create<table>,{NAME=><family>,VERSIONS=><VERSIONS>}

#例如:创建表t1,有两个familyname:f1,f2,且版本数均为2

hbase(main)>create't1',{NAME=>'f1',VERSIONS=>2},{NAME=>'f2',VERSIONS=>2}

3)删除表

分两步:首先disable,然后drop

例如:删除表t1

hbase(main)>disable't1'

hbase(main)>drop't1'

4)查看表的结构

#语法:describe<table>

#例如:查看表t1的结构

hbase(main)>describe't1'

5)修改表结构

修改表结构必须先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'

权限管理

1)分配权限

#语法:grant<user><permissions><table><columnfamily><columnqualifier>参数后面用逗号分隔

#权限用五个字母表示:"RWXCA".

#READ('R'),WRITE('W'),EXEC('X'),CREATE('C'),ADMIN('A')

#例如,给用户‘test'分配对表t1有读写的权限,

hbase(main)>grant'test','RW','t1'

2)查看权限

#语法:user_permission<table>

#例如,查看表t1的权限列表

hbase(main)>user_permission't1'

3)收回权限

#与分配权限类似,语法:revoke<user><table><columnfamily><columnqualifier>

#例如,收回test用户在表t1上的权限

hbase(main)>revoke'test','t1'

表数据的增删改查

1)添加数据

#语法:put<table>,<rowkey>,<family:column>,<value>,<timestamp>

#例如:给表t1的添加一行记录:rowkey是rowkey001,familyname:f1,columnname:col1,value:value01,timestamp:系统默认

hbase(main)>put't1','rowkey001','f1:col1','value01'

用法比较单一。

2)查询数据

a)查询某行记录

#语法: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>,{COLUMNS=>[<family:column>,....],LIMIT=>num}

#另外,还可以添加STARTROW、TIMERANGE和FITLER等高级功能

#例如:扫描表t1的前5条数据

hbase(main)>scan't1',{LIMIT=>5}

c)查询表中的数据行数

#语法:count<table>,{INTERVAL=>intervalNum,CACHE=>cacheNum}

#INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度

#例如,查询表t1中的行数,每100条显示一次,缓存区为500

hbase(main)>count't1',{INTERVAL=>100,CACHE=>500}

3)删除数据

a)删除行中的某个列值

#语法:delete<table>,<rowkey>,<family:column>,<timestamp>,必须指定列名

#例如:删除表t1,rowkey001中的f1:col1的数据

hbase(main)>delete't1','rowkey001','f1:col1'

注:将删除改行f1:col1列所有版本的数据

b)删除行

#语法:deleteall<table>,<rowkey>,<family:column>,<timestamp>,可以不指定列名,删除整行数据

#例如:删除表t1,rowk001的数据

hbase(main)>deleteall't1','rowkey001'

c)删除表中的所有数据

#语法:truncate<table>

#其具体过程是:disabletable->droptable->createtable

#例如:删除表t1的所有数据

hbase(main)>truncate't1'

Region管理

1)移动region

#语法:move'encodeRegionName','ServerName'

#encodeRegionName指的regioName后面的编码,ServerName指的是master-status的RegionServers列表

#示例

hbase(main)>move'4343995a58be8e5bbc739af1e91cd72d','db-41.xxx.xxx.org,60020,1390274516739'

2)开启/关闭region

#语法:balance_switchtrue|false

hbase(main)>balance_switch

3)手动split

#语法:split'regionName','splitKey'

4)手动触发majorcompaction

#语法:

#Compactallregionsinatable:

#hbase>major_compact't1'

#Compactanentireregion:

#hbase>major_compact'r1'

#Compactasinglecolumnfamilywithinaregion:

#hbase>major_compact'r1','c1'

#Compactasinglecolumnfamilywithinatable:

#hbase>major_compact't1','c1'

配置管理及节点重启

1)修改hdfs配置

hdfs配置位置:/etc/hadoop/conf

#同步hdfs配置

cat/home/hadoop/slaves|xargs-i-tscp/etc/hadoop/conf/hdfs-site.xmlhadoop@{}:/etc/hadoop/conf/hdfs-site.xml

#关闭:

cat/home/hadoop/slaves|xargs-i-tsshhadoop@{}"sudo/home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh--config/etc/hadoop/confstopdatanode"

#启动:

cat/home/hadoop/slaves|xargs-i-tsshhadoop@{}"sudo/home/hadoop/cdh4/hadoop-2.0.0-cdh4.2.1/sbin/hadoop-daemon.sh--config/etc/hadoop/confstartdatanode"

2)修改hbase配置

hbase配置位置:

#同步hbase配置

cat/home/hadoop/hbase/conf/regionservers|xargs-i-tscp/home/hadoop/hbase/conf/hbase-site.xmlhadoop@{}:/home/hadoop/hbase/conf/hbase-site.xml

#graceful重启

cd~/hbase

bin/graceful_stop.sh--restart--reload--debuginspurXXX.xxx.xxx.org

分类:HBase

相关推荐