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.counthbase> 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', ts1hbase> delete 't1', 'r1', 'c1', ts1 hbase> delete 't1', 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'} 同样的命令也可以在表引用上运行。假设有一个对表't1'的引用t,相应的命令是: hbase> t.delete 'r1', 'c1', ts1hbase> 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。 如果未指定列,则扫描所有列。若要扫描一个列族的所有成员,请将该列族的列限定符保留为空。
如果希望看到关于扫描执行的度量,那么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可以规定为:
将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_namespacehbase> 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 truehbase> 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 truehbase> 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 truehbase> 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 peerhbase> 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_tableshbase> 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 peerhbase> 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_snapshotshbase> 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_quotashbase> 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_permissionhbase> 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_idhbase> 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:”。 过滤器可以通过两种方式指定:
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_rsgroupshbase> 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' |