HBase Shell命令速查

HBase Shell中涉及到命名空间、表、数据增删改查、工具、权限等命令,这些命令对于掌握并管理HBase是非常关键的。

HBase管理命令分类

HBase Shell命令分为13组,包括通用命令、DDL命令、DML命令、命名空间、工具、快照、安全、可视化标签、复制等。这些命令通过HBase Shell与HBase数据库交互,可以帮助管理与操作HBase集群。

在HBase Shell中输入help命令,可以查看所有分类及其所属命令的清单。

hbase> help

每一类命令的具体作用如下表:

分类 作用 常用命令
general 通用命令,用于信息查看等,如HBase版本、HBase当前状态 processlist, status, table_help, version, whoami
ddl 数据定义语言,如表的定义、修改、删除 alter, create, describe, disable, drop, enable, list, ...
dml 数据操纵语言,如记录的新增、修改、删除、事务处理 append, count, delete, deleteall, get, put, scan, ...
namespace 命名空间,用于表的逻辑分组管理,如,一个命名空间可包括多张表 create_namespace, describe_namespace, drop_namespace, list_namespace,...
tools HBase工具,用于集群管理,如调整Region等 balancer,compact,normalize, stop_master,split,major_compact, merge_region, ...
replication 节点管理,如添加节点、删除节点、数据复制,使用前hbase.replication必须为true add_peer, disable_peer,enable_peer, disable_table_replication,...
snapshots HBase快照,如删除快照、创建快照 delete_snapshot, list_snapshots,restore_snapshot, snapshot, ...
security 权限与安全管理,如分配权限、回收权限 grant, revoke, user_permission, ...
visibility labels 可视化标签,是HBase用户或表信息的描述标签,如添加标签 add_labels, clear_auths, get_auths, list_labels, set_auths, set_visibility
rsgroup RegionServer分组隔离管理命令 add_rsgroup, balance_rsgroup, get_rsgroup,...
quotas 集群资源管理命令,为用户、表或命名空间设置和管理资源配额 list_quotas, list_snapshot_sizes, set_quota, ...
configuration 集群配置管理命令 update_all_config, update_config
procedures 进程管理命令 list_locks, list_procedures

可以通过在HBase shell上运行help '<command>' | '<group-name>'或只输入不带参数的命令名来获取每个命令的用法。

例如,查看list命令的帮助:

hbase> help 'list'

会输出类似下面这样的帮助信息:

hbase(main):001:0> help 'list'
List all user tables in hbase. Optional regular expression parameter could
be used to filter the output. Examples:

  hbase> list
  hbase> list 'abc.*'
  hbase> list 'ns:abc.*'
  hbase> list 'ns:.*'

也可以查看整组命令的帮助。例如,查看general组所有命令的用法:

hbase> help 'general'

则会列出general组中每个命令的说明和使用示例。

下面我们将介绍每组命令的用法、语法、描述和示例。在练习这些命令时,确保表名、行、列都用引号括起来。

HBase General Shell命令

这些shell命令通常用于识别数据库的版本、状态。

命令 用法和示例
status 查看HBase当前状态。
hbase> status
hbase> status 'simple'
version 查看HBase当前版本。
hbase> version
whoami 查看HBase的当前用户。
hbase> whoami

数据操纵语言(DML) Shell命令

DML HBase shell命令包括用来修改数据的最常用的命令,例如,put用于向表中插入行,get和scan用于检索数据,delete和truncate用于删除数据,append用于追加cell,等等。

命令 用法和示例
append

在指定的table/row/column坐标处追加一个单元格“value”。

hbase> append 't1', 'r1', 'c1', 'value', ATTRIBUTES=>{'mykey'=>'myvalue'}
hbase> append 't1', 'r1', 'c1', 'value', {VISIBILITY=>'PRIVATE|SECRET'}

同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.append 'r1', 'c1', 'value', ATTRIBUTES=>{'mykey'=>'myvalue'}
hbase> t.append 'r1', 'c1', 'value', {VISIBILITY=>'PRIVATE|SECRET'}
count

计算表中的行数。返回值为行数。

此操作可能需要较长时间(运行'$HADOOP_HOME/bin/hadoop jar hbase.jar rowcount'来运行计数mapreduce作业)。

默认情况下,当前计数每1000行显示一次。可以选择指定计数间隔。默认情况下,在计数扫描时启用扫描缓存。默认缓存大小为10行。

如果行很小,可能需要增加这个参数。例如:

hbase> count 'ns1:t1'
hbase> count 't1'
hbase> count 't1', INTERVAL => 100000
hbase> count 't1', CACHE => 1000
hbase> count 't1', INTERVAL => 10, CACHE => 1000

同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.count
hbase> t.count INTERVAL => 100000
hbase> t.count CACHE => 1000
hbase> t.count INTERVAL => 10, CACHE => 1000
delete

在指定的table/row/column和(可选的)时间戳坐标处放置一个删除单元格值。删除必须与被删除单元格的坐标精确匹配。扫描时,删除单元格会抑制旧版本。要从't1'表的'r1'行的'c1'列中删除一个单元格,执行以下操作:

hbase> delete 'ns1:t1', 'r1', 'c1', ts1
hbase> delete 't1', 'r1', 'c1', ts1
hbase> delete 't1', 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}

同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.delete 'r1', 'c1', ts1
hbase> t.delete 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}
deleteall

删除给定行的所有单元格;传递表名、行、可选的列和时间戳。例如:

hbase> deleteall 'ns1:t1', 'r1'
hbase> deleteall 't1', 'r1'
hbase> deleteall 't1', 'r1', 'c1'
hbase> deleteall 't1', 'r1', 'c1', ts1
hbase> deleteall 't1', 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}

同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.deleteall 'r1'
hbase> t.deleteall 'r1', 'c1'
hbase> t.deleteall 'r1', 'c1', ts1
hbase> t.deleteall 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}
get

获取行或单元格内容;传递表名、行和一个由列、时间戳、时间范围和版本组成的字典(可选)。例如:

hbase> get 'ns1:t1', 'r1'
hbase> get 't1', 'r1'
hbase> get 't1', 'r1', {TIMERANGE => [ts1, ts2]}
hbase> get 't1', 'r1', {COLUMN => 'c1'}
hbase> get 't1', 'r1', {COLUMN => ['c1', 'c2', 'c3']}
hbase> get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}
hbase> get 't1', 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}
hbase> get 't1', 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}
hbase> get 't1', 'r1', {FILTER => "ValueFilter(=, 'binary:abc')"}
hbase> get 't1', 'r1', 'c1'
hbase> get 't1', 'r1', 'c1', 'c2'
hbase> get 't1', 'r1', ['c1', 'c2']
hbase> get 't1', 'r1', {COLUMN => 'c1', ATTRIBUTES => {'mykey'=>'myvalue'}}
hbase> get 't1', 'r1', {COLUMN => 'c1', AUTHORIZATIONS => ['PRIVATE','SECRET']}
hbase> get 't1', 'r1', {CONSISTENCY => 'TIMELINE'}
hbase> get 't1', 'r1', {CONSISTENCY => 'TIMELINE', REGION_REPLICA_ID => 1}

除了默认的'toStringBinary'格式外,'get'还支持按列自定义格式。用户可以通过将FORMATTER添加到get规范中的列名中来定义FORMATTER。FORMATTER可以规定为:

1. 可以是org.apache.hadoop.hbase.util.Bytes方法名(例如,toInt, toString)

2. 或者作为后跟方法名的自定义类:例如。“c(MyFormatterClass).format”。

将cf:qualifier1和cf:qualifier2格式化为Integers:

hbase> get 't1', 'r1' {COLUMN => ['cf:qualifier1:toInt','cf:qualifier2:c(org.apache.hadoop.hbase.util.Bytes).toInt'] }

注意,通过列指定FORMATTER的仅限于(cf:qualifier)。不能为一个列族的所有列指定FORMATTER。

同样的命令也可以在表引用(通过get_table或create_table获取)上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.get 'r1'
hbase> t.get 'r1', {TIMERANGE => [ts1, ts2]}
hbase> t.get 'r1', {COLUMN => 'c1'}
hbase> t.get 'r1', {COLUMN => ['c1', 'c2', 'c3']}
hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1}
hbase> t.get 'r1', {COLUMN => 'c1', TIMERANGE => [ts1, ts2], VERSIONS => 4}
hbase> t.get 'r1', {COLUMN => 'c1', TIMESTAMP => ts1, VERSIONS => 4}
hbase> t.get 'r1', {FILTER => "ValueFilter(=, 'binary:abc')"}
hbase> t.get 'r1', 'c1'
hbase> t.get 'r1', 'c1', 'c2'
hbase> t.get 'r1', ['c1', 'c2']
hbase> t.get 'r1', {CONSISTENCY => 'TIMELINE'}
hbase> t.get 'r1', {CONSISTENCY => 'TIMELINE', REGION_REPLICA_ID => 1}
get_counter

返回在指定的table/row/column坐标处的计数器单元格值。

计数器单元应该用HBase上的原子增量函数来管理,数据应该用二进制编码(作为long值)。

示例:

hbase> get_counter 'ns1:t1', 'r1', 'c1'
hbase> get_counter 't1', 'r1', 'c1'

同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.get_counter 'r1', 'c1'
get_splits 获取命名表的split分区: hbase> get_splits 't1'
hbase> get_splits 'ns1:t1'

同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.get_splits
incr

在指定的table/row/column坐标处增加单元格的“value”。

将表'ns1:t1'或't1'中行'r1'下列'c1'中的单元格值增加(可以省略)或10,执行:

hbase> incr 'ns1:t1', 'r1', 'c1'
hbase> incr 't1', 'r1', 'c1'
hbase> incr 't1', 'r1', 'c1', 1
hbase> incr 't1', 'r1', 'c1', 10
hbase> incr 't1', 'r1', 'c1', 10, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> incr 't1', 'r1', 'c1', {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> incr 't1', 'r1', 'c1', 10, {VISIBILITY=>'PRIVATE|SECRET'}

同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.incr 'r1', 'c1'
hbase> t.incr 'r1', 'c1', 1
hbase> t.incr 'r1', 'c1', 10, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> t.incr 'r1', 'c1', 10, {VISIBILITY=>'PRIVATE|SECRET'}
put

在指定的table/row/column和时间戳坐标处放置一个单元格“value”。

将一个单元格值放入表“ns1:t1”或“t1”的“r1”行的“c1”列,并标记为“ts1”的时间戳,执行:

hbase> put 'ns1:t1', 'r1', 'c1', 'value'
hbase> put 't1', 'r1', 'c1', 'value'
hbase> put 't1', 'r1', 'c1', 'value', ts1
hbase> put 't1', 'r1', 'c1', 'value', {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> put 't1', 'r1', 'c1', 'value', ts1, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
hbase> put 't1', 'r1', 'c1', 'value', ts1, {VISIBILITY=>'PRIVATE|SECRET'}

同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是:

hbase> t.put 'r1', 'c1', 'value', ts1, {ATTRIBUTES=>{'mykey'=>'myvalue'}}
scan

扫描一个表;传递表名和扫描规范的字典(可选)。扫描规范可能包括一个或多个:TIMERANGE, FILTER, LIMIT, STARTROW, STOPROW, ROWPREFIXFILTER, TIMESTAMP, MAXLENGTH 或 COLUMNS, CACHE 或 RAW, VERSIONS, ALL_METRICS 或 METRICS。

如果未指定列,则扫描所有列。若要扫描一个列族的所有成员,请将该列族的列限定符保留为空。

  • 使用filterString;
  • 使用过滤器的整个包名。

如果希望看到关于扫描执行的度量,那么ALL_METRICS布尔值应该设置为true。

或者,如果希望只看到度量的一个子集,那么可以将metrics数组定义为只包含我们所关心的度量的名称。

示例:

hbase> scan 'hbase:meta'
hbase> scan 'hbase:meta', {COLUMNS => 'info:regioninfo'}
hbase> scan 'ns1:t1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
hbase> scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}
hbase> scan 't1', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}
hbase> scan 't1', {REVERSED => true}
hbase> scan 't1', {ALL_METRICS => true}
hbase> scan 't1', {METRICS => ['RPC_RETRIES', 'ROWS_FILTERED']}
hbase> scan 't1', {ROWPREFIXFILTER => 'row2', FILTER => "(QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"}
hbase> scan 't1', {FILTER => org.apache.hadoop.hbase.filter.ColumnPaginationFilter.new(1, 0)}
hbase> scan 't1', {CONSISTENCY => 'TIMELINE'}

设置操作属性:

hbase> scan 't1', { COLUMNS => ['c1', 'c2'], ATTRIBUTES => {'mykey' => 'myvalue'}}
hbase> scan 't1', { COLUMNS => ['c1', 'c2'], AUTHORIZATIONS => ['PRIVATE','SECRET']}

对于专家来说,还有一个额外的选项——CACHE_BLOCKS——它可以打开(true)或关闭(false)扫描器的块缓存。默认情况下,启用该功能。例如:

hbase> scan 't1', {COLUMNS => ['c1', 'c2'], CACHE_BLOCKS => false}

对于专家来说,还有一个高级选项——RAW——它指示扫描器返回所有cell单元格(包括删除标记和未收集的删除cell)。此选项不能与请求特定的COLUMNS结合使用。默认情况下禁用。例如:

hbase> scan 't1', {RAW => true, VERSIONS => 10}

除了默认的'toStringBinary'格式外,'scan'还支持按列自定义格式。用户可以通过将FORMATTER添加到扫描规范中的列名中来定义FORMATTER。FORMATTER可以规定为:

  • 可以是org.apache.hadoop.hbase.util.Bytes方法名(例如,toInt, toString);
  • 或者作为后跟方法名的自定义类:例如。“c(MyFormatterClass).format”。

将cf:qualifier1和cf:qualifier2格式化为Integers的示例如下:

hbase> scan 't1', {COLUMNS => ['cf:qualifier1:toInt', 'cf:qualifier2:c(org.apache.hadoop.hbase.util.Bytes).toInt'] }

注意,可以通过列指定FORMATTER,仅限(cf:qualifier)。不能为一个列族的所有列指定FORMATTER。

Scan也可以直接从表中使用,首先获取对表的引用,如下所示:

hbase> t = get_table 't'
hbase> t.scan

注意,在上述情况下,仍然可以提供所有过滤、列、选项等。


truncate 禁用、删除和重新创建指定的表。
truncate_preserve 禁用、删除和重新创建指定的表,同时仍然保持以前的region边界。

数据定义语言(DDL)Shell 命令

DDL HBase shell命令是另一组主要用于更改表结构的命令,例如alter -用于从表中删除列族或对表进行任何更改。在运行alter之前,确保先禁用该表。create -用于创建表,drop -用于删除表等等。

命令 用法和示例
alter

如果"hbase.online.schema.update.enable"属性设置为false,则该表必须被禁用(参见help 'disable')。如果"hbase.online.schema.update.enable"属性设置为true,可以在不首先禁用表的情况下修改它们。更改启用的表在过去会导致问题,因此要谨慎使用,并在生产中使用之前进行测试。

可以使用alter命令来添加、修改或删除列家族或更改表配置选项。

列族的工作方式类似于“create”命令。列族规范可以是名称字符串,也可以是带有name属性的字典。词典在'help'命令的输出中描述,不带参数。

例如,要更改为添加表't1'的'f1'列族,将当前值修改为保持最多5个单元格版本,执行:

hbase> alter 't1', NAME => 'f1', VERSIONS => 5

可以对多个列族进行操作:

hbase> alter 't1', 'f1', {NAME => 'f2', IN_MEMORY => true}, {NAME => 'f3', VERSIONS => 5}

要在表“ns1:t1”中删除“f1”列族,请使用下面命令中的任意之一:

hbase> alter 'ns1:t1', NAME => 'f1', METHOD => 'delete'
hbase> alter 'ns1:t1', 'delete' => 'f1'

还可以更改表范围属性,如MAX_FILESIZE、READONLY、MEMSTORE_FLUSHSIZE、DURABILITY等。这些可以放在最后。例如,要将一个region的max size更改为128MB,执行以下操作:

hbase> alter 't1', MAX_FILESIZE => '134217728'

可以通过设置一个表coprocessor 属性来添加一个表协处理器:

hbase> alter 't1', 'coprocessor'=>'hdfs:///foo.jar|com.foo.FooRegionObserver|1001|arg1=1,arg2=2'

由于可以为一个表配置多个协处理器,一个序列号将自动添加到属性名,以惟一地标识它。

coprocessor 属性必须匹配下面的模式,以便框架理解如何加载协处理器类:

[coprocessor jar file location] | class name | [priority] | [arguments]

还可以设置特定于该表或列族的configuration设置:

hbase> alter 't1', CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}
hbase> alter 't1', {NAME => 'f2', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}

也可以删除table-scope属性:

hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'MAX_FILESIZE'
hbase> alter 't1', METHOD => 'table_att_unset', NAME => 'coprocessor$1'

也可以设置REGION_REPLICATION:

hbase> alter 't1', {REGION_REPLICATION => 2}

在一个命令中可能有多个更改:

hbase> alter 't1', { NAME => 'f1', VERSIONS => 3 }, { MAX_FILESIZE => '134217728' }, { METHOD => 'delete', NAME => 'f2' }, OWNER => 'johndoe', METADATA => {'mykey' => 'myvalue'}
alter_async

修改列族模式,不必等待所有region接收模式更改。传递表名和指定新列族模式的字典。在主help命令输出中描述了字典。字典必须包含要修改的列族名称。例如,

要将表't1'中的'f1'列族从默认值更改或添加为最多保留5个单元格版本,执行:

hbase> alter_async 't1', NAME => 'f1', VERSIONS => 5

要删除表“ns1:t1”中的“f1”列族,执行:

hbase> alter_async 'ns1:t1', NAME => 'f1', METHOD => 'delete'

或者更简短的版本:

hbase> alter_async 'ns1:t1', 'delete' => 'f1'

还可以更改表范围属性,比如MAX_FILESIZE、MEMSTORE_FLUSHSIZE、READONLY和DEFERRED_LOG_FLUSH。

例如,要将一个列族的max size更改为128MB,执行以下操作:

hbase> alter 't1', METHOD => 'table_att', MAX_FILESIZE => '134217728'

在一个命令中可能有多个更改:

hbase> alter 't1', {NAME => 'f1'}, {NAME => 'f2', METHOD => 'delete'}

要检查是否所有region 都已更新,请使用alter_status

alter_status

获取alter命令的状态。表示表中接收到更新模式的region 数。需要向该命令传递表名。

hbase> alter_status 't1'
hbase> alter_status 'ns1:t1'
create

创建一个表。传递一个表名和一组列族规范(至少一个),以及表配置(可选)。

列说明规范可以是一个简单的字符串(名称),也可以是一个字典,必须包括NAME属性。

例如:

创建一个namespace=ns1和表限定符=t1的表

hbase> create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}

创建一个namespace=default和表限定符=t1的表

hbase> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
hbase> create 't1', 'f1', 'f2', 'f3' # 上一个命令的简写
hbase> create 't1', {NAME => 'f1', VERSIONS => 1, TTL => 2592000, BLOCKCACHE => true}
hbase> create 't1', {NAME => 'f1', CONFIGURATION => {'hbase.hstore.blockingStoreFiles' => '10'}}
hbase> create 't1', {NAME => 'f1', IS_MOB => true, MOB_THRESHOLD => 1000000, MOB_COMPACT_PARTITION_POLICY => 'weekly'}

表配置选项可以放在最后。例如:

hbase> create 'ns1:t1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase> create 't1', 'f1', SPLITS => ['10', '20', '30', '40']
hbase> create 't1', 'f1', SPLITS_FILE => 'splits.txt', OWNER => 'johndoe'
hbase> create 't1', {NAME => 'f1', VERSIONS => 5}, METADATA => { 'mykey' => 'myvalue' }
hbase> # 可选地将表预先分割为NUMREGIONS,使用SPLITALGO ("HexStringSplit", "UniformSplit" 或类名)
hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}
hbase> create 't1', 'f1', {NUMREGIONS => 15, SPLITALGO => 'HexStringSplit', REGION_REPLICATION => 2, CONFIGURATION => {'hbase.hregion.scan.loadColumnFamiliesOnDemand' => 'true'}}
hbase> create 't1', {NAME => 'f1', DFS_REPLICATION => 1}

也可以保持一个对已创建表的引用:

hbase> t1 = create 't1', 'f1'

这给我们一个名为't1'的表的引用,然后可以在上面调用方法。

describe

描述命名表。例如:

hbase> describe 't1'
hbase> describe 'ns1:t1'

或者,也可以用“desc”来表达同样的意思。

hbase> desc 't1'
hbase> desc 'ns1:t1'
disable

启动禁用命名表:

hbase> disable 't1'
hbase> disable 'ns1:t1'
disable_all 禁用所有表。
drop

删除命名表。表必须首先被禁用:

hbase> drop 't1'
hbase> drop 'ns1:t1'
drop_all

删除所有匹配给定正则表达式的表:

hbase> drop_all 't.*'
hbase> drop_all 'ns:t.*'
hbase> drop_all 'ns:.*'
enable

启用命名表:

hbase> enable 't1'
hbase> enable 'ns1:t1'
enable_all

启用所有匹配给定正则表达式的表:

hbase> enable_all 't.*'
hbase> enable_all 'ns:t.*'
hbase> enable_all 'ns:.*'
exists

命名表是否存在?

hbase> exists 't1'
hbase> exists 'ns1:t1'
get_table

获取给定的表名,并将其作为用户要操作的实际对象返回。

hbase> t1 = get_table 't1'
hbase> t1 = get_table 'ns1:t1'

返回名为“t1”的表作为表对象。然后可以:

hbase> t1.help

然后它将打印该表的帮助。

is_disabled

命名表禁用了吗?例如:

hbase> is_disabled 't1'
hbase> is_disabled 'ns1:t1'
is_enabled

是否启用命名表?例如:

hbase> is_enabled 't1'
hbase> is_enabled 'ns1:t1'
list

列出所有的表。

hbase> list
locate_region

根据表名和行键定位region:

hbase> locate_region 'tableName', 'key0'
show_filters

显示所有的过滤器:

hbas> show_filters

命名空间Shell命令

该组包含修改和创建HBase数据库命名空间的命令。

命令 用法和示例
alter_namespace

改变名称空间的属性。

添加/修改属性:

hbase> alter_namespace 'ns1', {METHOD => 'set', 'PROPERTY_NAME' => 'PROPERTY_VALUE'}

删除一个属性:

hbase> alter_namespace 'ns1', {METHOD => 'unset', NAME=>'PROPERTY_NAME'}
create_namespace

创建名称空间。需要传递命名空间名称,以及命名空间配置的字典(可选)。

例如:

hbase> create_namespace 'ns1'
hbase> create_namespace 'ns1', {'PROPERTY_NAME'=>'PROPERTY_VALUE'}
describe_namespace

描述命名空间。例如:

hbase> describe_namespace 'ns1'
drop_namespace

删除命名的命名空间。命名空间必须为空。

hbase> drop_namespace 'ns1'
list_namespace

列出hbase中所有的命名空间。可选正则表达式参数可用于过滤输出。例如:

hbase> list_namespace
hbase> list_namespace 'abc.*'
list_namespace_tables

列出该名称空间成员的所有表。例如:

hbase> list_namespace_tables 'ns1'

tools语法和用法

命令 用法和示例
assign

分配一个region。谨慎使用。如果region已经分配,这个命令将执行强制重新分配。仅供专家使用。

示例:

hbase> assign 'REGIONNAME'
hbase> assign 'ENCODED_REGIONNAME'
balance_switch

启用/禁用均衡器(balancer)。返回先前的均衡器(balancer)状态。

示例:

hbase> balance_switch true
hbase> balance_switch false
balancer

触发集群均衡器。如果均衡器运行了,并且能够告诉region server取消分配所有的region以进行平衡(重新分配本身是异步的),则返回true。否则为false(如果region 处于转换中,则不会运行)。

示例:

hbase> balancer

查询balancer状态:

hbase> balancer_enabled
catalogjanitor_enabled

查询CatalogJanitor状态(启用/禁用?)

hbase> catalogjanitor_enabled
catalogjanitor_run

Catalog janitor命令从命令行运行(垃圾收集)扫描。

hbase> catalogjanitor_run
catalogjanitor_switch

启用/禁用CatalogJanitor。返回以前的CatalogJanitor 状态。

hbase> catalogjanitor_switch true
hbase> catalogjanitor_switch false
close_region

关闭单个region。请求master关闭集群上的一个region,或者如果提供了'SERVER_NAME',请求指定的托管regionserver直接关闭该region。关闭一个region时,master期望'REGIONNAME'是一个完全限定的region名。当要求托管regionserver直接关闭一个region时,只传递该region的编码名称。一个region名称看起来像这样:

TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.
或 Namespace:TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.

末尾的句号是regionserver名称的一部分。region的编码名称是region名称末尾的哈希值;如527db22f95c8a9e0116f0cc13c680396(没有最后的句号.)。“SERVER_NAME”是它的主机、端口和startcode。例如:host187.example.com,60020,1289493121758(在主UI中查找servername,或者在shell中查看详细状态)

该命令最终将在region托管regionserver上运行关闭。关闭是在没有master参与的情况下完成的(它不会知道该close)。一旦关闭,该region将停留在closed状态。使用assign重新打开/重新分配。使用unassign或move来将该region分配到集群上其他地方。谨慎使用,仅供专家。

示例:

hbase> close_region 'REGIONNAME'
hbase> close_region 'REGIONNAME', 'SERVER_NAME'
hbase> close_region 'ENCODED_REGIONNAME'
hbase> close_region 'ENCODED_REGIONNAME', 'SERVER_NAME'
compact

压缩已传递表中的所有region,或者传入一个region row来压缩单个region。还可以在一个region内压缩单个列族。

例如:

在一个表中压缩所有region:

hbase> compact 'ns1:t1'
hbase> compact 't1'

压缩整个region:

hbase> compact 'r1'

只压缩一个region内的一个列族:

hbase> compact 'r1', 'c1'

压缩一个表内的一个列族:

hbase> compact 't1', 'c1'
compact_mob

对一个启用了mob的列族或者一个表中所有启用了mob的列族运行压缩。例如,

压缩一个表内的一个列族:

hbase> compact_mob 't1', 'c1'

压缩所有mob启用的列族:

hbase> compact_mob 't1'
compact_rs

压缩传入的regionserver上的所有region。例如,

压缩一个regionserver上的所有region:

hbase> compact_rs 'host187.example.com,60020'

或者

hbase> compact_rs 'host187.example.com,60020,1289493121758'

对一个regionserver上的所有region执行major compact:

hbase> compact_rs 'host187.example.com,60020,1289493121758', true
flush

如果传入的是一个表,则刷新该表的所有region;如果传入的是一个region row,则刷新单个region。例如:

hbase> flush 'TABLENAME'
hbase> flush 'REGIONNAME'
hbase> flush 'ENCODED_REGIONNAME'
major_compact

在传入的表上运行主压缩(major compact),或传入的是一个region row,则对单个region运行主压缩(major compact)。若要压缩region内的单个列族,需指定region名后跟列族名。例如,

压缩一个表中的所有region:

hbase> major_compact 't1'
hbase> major_compact 'ns1:t1'

压缩整个region:

hbase> major_compact 'r1'

在一个region内压缩单个列族:

hbase> major_compact 'r1', 'c1'

在一个表中压缩单个列族:

hbase> major_compact 't1', 'c1'
major_compact_mob

对一个表中启用了mob的列族或所有启用了mob的列族运行major compaction。例如,

在一个表中压缩一个列族:

hbase> major_compact_mob 't1', 'c1'

在一个表中压缩所有启用了mob的列族:

hbase> major_compact_mob 't1'
merge_region

合并两个region。通过'true'作为可选的第三个参数将强制合并。

注意:必须传递经过编码的region名称,而不是完整的region名称,因此此命令与其他region操作略有不同。编码后的region名称是region名称上的哈希后缀:例如,如果region名称是TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.,那么编码的region名称部分为527db22f95c8a9e0116f0cc13c680396。

示例:

hbase> merge_region 'ENCODED_REGIONNAME', 'ENCODED_REGIONNAME'
hbase> merge_region 'ENCODED_REGIONNAME', 'ENCODED_REGIONNAME', true
move

移动一个region。可选择指定目标regionserver,否则我们随机选择一个。

注意:必须传递经过编码的region名称,而不是完整的region名称,因此此命令与其他region操作略有不同。编码后的region名称是region名称上的哈希后缀:例如,如果region名称是TestTable,0094429456,1289497600452.527db22f95c8a9e0116f0cc13c680396.,那么编码的region名称部分为527db22f95c8a9e0116f0cc13c680396。

服务器名是它的主机、端口和起始代码。如:host187.example.com,60020,1289493121758

示例:

hbase> move 'ENCODED_REGIONNAME'
hbase> move 'ENCODED_REGIONNAME', 'SERVER_NAME'
normalize

为所有设置了NORMALIZATION_ENABLED标志的表触发region normalizer。如果normalizer运行成功,返回true,否则返回false。注意,如果禁用了region normalizer,这个命令就不起作用(确保使用'normalizer_switch'命令打开了它)。

hbase> normalize
normalizer_enabled

查询region normalizer的状态。

hbase> normalizer_enabled
normalizer_switch

启用/禁用region normalizer。返回之前的normalizer状态。

当normalizer被启用时,它处理'NORMALIZATION_ENABLED' => true的所有表。

hbase> normalizer_switch true
hbase> normalizer_switch false
split

分割整个表,或者传入一个region来分割单个region。使用第二个参数,可以为该region指定一个显式的split key。

hbase> split 'tableName'
hbase> split 'namespace:tableName'
hbase> split 'regionName' # format: 'tableName,startKey,id'
hbase> split 'tableName', 'splitKey'
hbase> split 'regionName', 'splitKey'
trace

启动或停止使用HTrace跟踪。

如果跟踪正在运行,总是返回true,否则返回false。

如果第一个参数是'start',则启动新的span。

如果第一个参数是'stop',当前的运行span将停止。('stop'成功返回false)

如果第一个参数是'status',则只返回跟踪是否正在运行。

在'start'-ing中,可以选择将span的名称作为第二个参数传入。span的默认名称是'HBaseShell'。

重复“start”不会启动嵌套的span。

hbase> trace 'start'
hbase> trace 'status'
hbase> trace 'stop'
hbase> trace 'start', 'MySpanName'
hbase> trace 'stop'
unassign

取消region分配。取消分配将关闭当前位置的region,然后再重新打开它。传递'true'来强制取消分配('force'将在重新分配之前清除master中的所有内存状态。如果导致双重分配,则使用hbck -fix来解决)。

谨慎使用。仅供专家使用。

hbase> unassign 'REGIONNAME'
hbase> unassign 'REGIONNAME', true
hbase> unassign 'ENCODED_REGIONNAME'
hbase> unassign 'ENCODED_REGIONNAME', true
wal_roll

滚动日志写入器。也就是说,开始将日志消息写入一个新文件。regionserver的名称应该作为参数给出。

一个'server_name'是由regionserver主机、端口和起始代码组成的。例如,host187.example.com,60020,1289493121758。(在master ui中查找servername,或者在shell中查看详细状态)

zk_dump

ZooKeeper查看HBase集群的转储状态。

为了使用这些tools工具,hbase.replication必须被设置为true。

replication的语法和用法

这一组命令主要用于在HBase集群中添加或删除一个peer。

命令 用法和示例
add_peer

一个peer可以是另一个HBase集群,也可以是一个自定义复制端点。无论哪种情况,都必须指定一个id来标识该peer。

对于一个HBase集群peer,必须提供一个集群key,其组成如下:hbase.zookeeper.quorum:hbase.zookeeper.property.clientPort:zookeeper.znode.parent。 这为HBase提供了一个连接到另一个HBase集群的完整路径。一个可选的表列族参数确定哪些列族将被复制到对等集群(peer cluster)。

hbase> add_peer '1', "server1.cie.com:2181:/hbase"
hbase> add_peer '2', "zk1,zk2,zk3:2182:/hbase-prod"
hbase> add_peer '3', "zk4,zk5,zk6:11000:/hbase-test", "table1; table2:cf1; table3:cf1,cf2"
hbase> add_peer '4', CLUSTER_KEY => "server1.cie.com:2181:/hbase"
hbase> add_peer '5', CLUSTER_KEY => "zk1,zk2,zk3:2182:/hbase-prod", TABLE_CFS => { "table1" => [], "ns2:table2" => ["cf1"], "ns3:table3" => ["cf1", "cf2"] }

对于自定义复制端点,可以提供ENDPOINT_CLASSNAME。两个可选参数是DATA和CONFIG,可以指定它们来为自定义复制端点设置不同的peer_data或配置。表列族是可选的,可以用键TABLE_CFS指定。

hbase> add_peer '6', ENDPOINT_CLASSNAME => 'org.apache.hadoop.hbase.MyReplicationEndpoint'
hbase> add_peer '7', ENDPOINT_CLASSNAME => 'org.apache.hadoop.hbase.MyReplicationEndpoint', DATA => { "key1" => 1 }
hbase> add_peer '8', ENDPOINT_CLASSNAME => 'org.apache.hadoop.hbase.MyReplicationEndpoint', CONFIG => { "config1" => "value1", "config2" => "value2" }
hbase> add_peer '9', ENDPOINT_CLASSNAME => 'org.apache.hadoop.hbase.MyReplicationEndpoint', DATA => { "key1" => 1 }, CONFIG => { "config1" => "value1", "config2" => "value2" },
hbase> add_peer '10', ENDPOINT_CLASSNAME => 'org.apache.hadoop.hbase.MyReplicationEndpoint', TABLE_CFS => { "table1" => [], "ns2:table2" => ["cf1"], "ns3:table3" => ["cf1", "cf2"] }
hbase> add_peer '11', ENDPOINT_CLASSNAME => 'org.apache.hadoop.hbase.MyReplicationEndpoint', DATA => { "key1" => 1 }, CONFIG => { "config1" => "value1", "config2" => "value2" }, TABLE_CFS => { "table1" => [], "table2" => ["cf1"], "table3" => ["cf1", "cf2"] }

注意:必须指定CLUSTER_KEY或ENDPOINT_CLASSNAME,但不能同时指定。

append_peer_tableCFs

为指定的peer附加一个可复制的table-cf配置。例如:

# append a table / table-cf to be replicable for a peer
hbase> append_peer_tableCFs '2', { "ns1:table4" => ["cfA", "cfB"] }
disable_peer

停止到指定集群的复制流,但仍然跟踪要复制的新edits。

hbase> disable_peer '1'
disable_table_replication

禁用一个表的复制开关(replication switch)。

hbase> disable_table_replication 'table_name'
enable_peer

重新启动到指定对等集群的复制,从禁用复制的位置继续。

hbase> enable_peer '1'
enable_table_replication

启用表的复制开关。

hbase> enable_table_replication 'table_name'
get_peer_config

输出集群键、复制端点类(如果存在)和任何复制配置参数

list_peer_configs

无参数方法,输出此集群上定义的每个peer的复制peer配置。

list_peers

列出所有复制对等集群。

hbase> list_peers
list_replicated_tables

列出从此集群复制的所有表和列族。

hbase> list_replicated_tables
hbase> list_replicated_tables 'abc.*'
remove_peer

停止指定的复制流并删除保留的所有元信息。

hbase> remove_peer '1'
remove_peer_tableCFs

从指定peer的table-cfs配置中删除一个table/table-cf。例如:

# Remove a table / table-cf from the replicable table-cfs for a peer
hbase> remove_peer_tableCFs '2', { "ns1:table1" => [] }
hbase> remove_peer_tableCFs '2', { "ns1:table1" => ["cf1"] }
set_peer_tableCFs

为指定的peer设置可复制的table-cf配置。例如:

# 将所有表都设置为peer可复制的
hbase> set_peer_tableCFs '1', ""
hbase> set_peer_tableCFs '1'
# 将table / table-cf设置为peer可复制的, 对于一个没有显式列族列表的表,所有可复制的列族(使用replication_scope == 1)都将被复制
hbase> set_peer_tableCFs '2', { "ns1:table1" => [], "ns2:table2" => ["cf1", "cf2"], "ns3:table3" => ["cfA", "cfB"] }
show_peer_tableCFs

显示指定peer的可复制table-cf配置。

hbase> show_peer_tableCFs
update_peer_config

更新指定peer的配置。

一个peer可以是另一个HBase集群,也可以是一个自定义复制端点。无论哪种情况,都必须指定一个id来标识该peer。此命令不会中断已启用的复制peer上的进程。

两个可选参数是DATA和CONFIG,可以指定它们为自定义复制端点的peer_data或配置设置不同的值。任何未被此命令更新的现有值将保持不变。

CLUSTER_KEY, REPLICATION_ENDPOINT,和TABLE_CFs不能用这个命令更新。

要更新TABLE_CFs,请参见append_peer_tableCFs和remove_peer_tableCFs命令。

hbase> update_peer_config '1', DATA => { "key1" => 1 }
hbase> update_peer_config '2', CONFIG => { "config1" => "value1", "config2" => "value2" }
hbase> update_peer_config '3', DATA => { "key1" => 1 }, CONFIG => { "config1" => "value1", "config2" => "value2" }

Snapshot Shell命令

这组命令用于在任何给定时间获取数据库的快照。

命令 用法和示例
clone_snapshot

通过克隆快照内容创建一个新表。不涉及数据的拷贝。

对新创建的表进行写入操作不会影响快照数据。

hbase> clone_snapshot 'snapshotName', 'tableName'
hbase> clone_snapshot 'snapshotName', 'namespace:tableName'
delete_all_snapshot

删除所有匹配给定正则表达式的快照。例如:

hbase> delete_all_snapshot 's.*'
delete_snapshot

删除一个指定快照。例如:

hbase> delete_snapshot 'snapshotName',
list_snapshots

列出所有的快照(通过打印名称和相关信息)。

可选择的正则表达式参数可以用来通过快照名筛选输出。

hbase> list_snapshots
hbase> list_snapshots 'abc.*'
restore_snapshot

恢复指定的快照。

还原将替换原始表的内容,将内容恢复到快照状态。

该表必须禁用。

hbase> restore_snapshot 'snapshotName'
snapshot

获取指定表的快照。例如:

hbase> snapshot 'sourceTable', 'snapshotName'
hbase> snapshot 'namespace:sourceTable', 'snapshotName', {SKIP_FLUSH => true}

Configuration的shell命令语法和用法

命令 用法和示例
update_all_config

在集群中的所有服务器上重新加载一个配置子集。详细信息请参考文档

hbase> update_all_config
update_config

在服务器'servername'上重新加载一个配置子集,其中servername是由主机、端口号和startcode组成。例如,host187.example.com,60020,1289493121758。详细信息请参考文档

hbase> update_config 'servername'

quota shell命令语法和用法

命令 用法和示例
list_quotas

列出已添加到系统中的配额设置。可以根据USER、TABLE或NAMESPACE过滤结果。

hbase> list_quotas
hbase> list_quotas USER => 'bob.*'
hbase> list_quotas USER => 'bob.*', TABLE => 't1'
hbase> list_quotas USER => 'bob.*', NAMESPACE => 'ns.*'
hbase> list_quotas TABLE => 'myTable'
hbase> list_quotas NAMESPACE => 'ns.*'
set_quota

为用户、表或命名空间设置配额。语法: set_quota TYPE =>,TYPE => THROTTLE

用户可以对读、写请求设置配额,也可以对两个请求同时设置配额(例如,read+write)。

read、write或read+write(默认节流类型)请求限制可以使用100req/sec、100req/min形式来表示。read、write或read+write(默认节流类型)限制可以使用100K/sec、100M/min,(B、K、M、G、T、P)做为有效尺寸单位,(sec, min, hour, day)做为有效时间单位。

目前的节流限制是每台机器——100req/min的限制意味着每台机器可以执行100req/min。

示例:

hbase> set_quota TYPE => THROTTLE, USER => 'u1', LIMIT => '10req/sec'
hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => READ, USER => 'u1', LIMIT => '10req/sec'

hbase> set_quota TYPE => THROTTLE, USER => 'u1', LIMIT => '10M/sec'
hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => WRITE, USER => 'u1', LIMIT => '10M/sec'

hbase> set_quota TYPE => THROTTLE, USER => 'u1', TABLE => 't2', LIMIT => '5K/min'
hbase> set_quota TYPE => THROTTLE, USER => 'u1', NAMESPACE => 'ns2', LIMIT => NONE

hbase> set_quota TYPE => THROTTLE, NAMESPACE => 'ns1', LIMIT => '10req/sec'
hbase> set_quota TYPE => THROTTLE, TABLE => 't1', LIMIT => '10M/sec'
hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => WRITE, TABLE => 't1', LIMIT => '10M/sec'
hbase> set_quota TYPE => THROTTLE, USER => 'u1', LIMIT => NONE
hbase> set_quota TYPE => THROTTLE, THROTTLE_TYPE => WRITE, USER => 'u1', LIMIT => NONE

hbase> set_quota USER => 'u1', GLOBAL_BYPASS => true

Security Shell命令语法和用法

安全命令仅适用于使用AccessController协处理器运行的情况。这些HBase shell命令主要由管理员使用,以确保数据库和表的安全性。

命令 用法和示例
grant

赋予用户特定的权限。

权限是从集合“RWXCA”来的零或多个字母。READ('R'), WRITE('W'), EXEC('X'), CREATE('C'), ADMIN('A')。

注意:组和用户以相同的方式被授予访问权限,但组的前缀是“@”字符。同样,也指定了表和命名空间,但命名空间的前缀是“@”字符。

示例:

hbase> grant 'hduser', 'RWXCA'
hbase> grant '@admins', 'RWXCA'
hbase> grant 'hduser', 'RWXCA', '@ns1'
hbase> grant 'hduser', 'RW', 't1', 'f1', 'col1'
hbase> grant 'hduser', 'RW', 'ns1:t1', 'f1', 'col1'
list_security_capabilities

列出支持的安全功能。

hbase> list_security_capabilities
revoke

取消用户的访问权限。

注意:组和用户以相同的方式被授予访问权限,但组的前缀是“@”字符。同样,也指定了表和命名空间,但命名空间的前缀是“@”字符。

hbase> revoke 'bobsmith'
hbase> revoke '@admins'
hbase> revoke 'bobsmith', '@ns1'
hbase> revoke 'bobsmith', 't1', 'f1', 'col1'
hbase> revoke 'bobsmith', 'ns1:t1', 'f1', 'col1'
user_permission

显示特定用户的所有权限。语法: user_permission table

注意:命名空间必须以'@'字符做为前缀。

示例:

hbase> user_permission
hbase> user_permission '@ns1'
hbase> user_permission '@.*'
hbase> user_permission '@^[a-c].*'
hbase> user_permission 'table1'
hbase> user_permission 'namespace1:table1'
hbase> user_permission '.*'
hbase> user_permission '^[A-C].*'

Procedure Shell命令语法和用法

命令 用法和示例
abort_procedure

给定一个进程Id(和可选的布尔参数may_interrupt_if_running,默认为true),在hbase中中止一个进程。谨慎使用。有些进程可能不能终止。仅供专家使用。

如果这个命令被接受,并且这个进程正在中止,它将返回true;如果进程不能被中止(例如,进程不存在,或进程已完成或中止,将导致损坏),此命令将返回false。

示例:

hbase> abort_procedure proc_id
hbase> abort_procedure proc_id, true
hbase> abort_procedure proc_id, false
list_procedures

列出hbase中的所有进程。例如:

hbase> list_procedures

可见性标签语法和用法

命令 用法和示例
add_labels

添加一组可见性标签。语法:add_labels [label1, label2]

hbase> add_labels ['SECRET','PRIVATE']
clear_auths

清除用户或组的可见性标签。语法:clear_auths 'user',[label1, label2]

hbase> clear_auths 'user1', ['SECRET','PRIVATE']
hbase> clear_auths '@group1', ['SECRET','PRIVATE']
get_auths

获取为特定用户或组设置的可见性标签集。语法:get_auths 'user'

hbase> get_auths 'user1'
hbase> get_auths '@group1'
list_labels

列出系统中定义的可见性标签。Syntax: list_labels

可选正则表达式参数可用于过滤返回的标签。

示例:

hbase> list_labels 'secret.*'
hbase> list_labels
set_auths

为用户或组添加一组可见性标签。语法:set_auths 'user',[label1, label2]

hbase> set_auths 'user1', ['SECRET','PRIVATE']
hbase> set_auths '@group1', ['SECRET','PRIVATE']
set_visibility

设置一个或多个现有单元格的可见性表达式。

传递表名、可见性表达式和包含扫描规范的字典。扫描规范可能包括一个或多个:TIMERANGE、FILTER、STARTROW、STOPROW、ROWPREFIXFILTER、TIMESTAMP或COLUMNS。

如果没有指定列,将包含所有列。

若要包含一个列族的所有成员,将限定符保留为空,如“col_family:”。

过滤器可以通过两种方式指定:

  • 1. 使用filterString
  • 2. 使用过滤器的整个包名
hbase> set_visibility 't1', 'A|B', {COLUMNS => ['c1', 'c2']}
hbase> set_visibility 't1', '(A&B)|C', {COLUMNS => 'c1', TIMERANGE => [1303668804, 1303668904]}
hbase> set_visibility 't1', 'A&B&C', {ROWPREFIXFILTER => 'row2', FILTER => "(QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"}

该命令只会影响现有的单元格,预计主要用于特性测试和功能验证。

Rsgroup HBase Shell命令

注:rsgroup协处理器端点必须在Master上启用,否则命令会失败,招出异常:UnknownProtocolException: No registered Master Coprocessor Endpoint found for RSGroupAdminService。

命令 用法和示例
add_rsgroup

创建一个新的RegionServer组。

hbase> add_rsgroup 'my_group'
balance_rsgroup

平衡RegionServer组。

hbase> balance_rsgroup 'my_group'
get_rsgroup

获取一个RegionServer组的信息。

hbase> get_rsgroup 'default'
get_server_rsgroup

获取给定RegionServer所属的组名。

hbase> get_server_rsgroup 'server1:port1'
get_table_rsgroup

获取给定表所属的RegionServer组名。

hbase> get_table_rsgroup 'myTable'
list_rsgroups

列出所有的RegionServer组。可选正则表达式参数用于过滤输出。

hbase> list_rsgroups
hbase> list_rsgroups 'abc.*'
move_servers_rsgroup

将一个region server 从一个RSGroup重新分配到另一个RSGroup。

hbase> move_servers_rsgroup 'dest',['server1:port','server2:port']
move_tables_rsgroup

将表从一个RSGroup重新分配到另一个RSGroup。

hbase> move_tables_rsgroup 'dest',['table1','table2']
remove_rsgroup

删除一个RegionServer组。

hbase> remove_rsgroup 'my_group'

《Spark原理深入与编程实战》