HBase Shell命令

Version 2.1.0-cdh6.1.1

1 基本操作

1.1 进入HBase客户端命令行

bin/hbase shell

1.2 查看帮助

hbase> help

命令是被分组的。输入help 'COMMAND_GROUP'(例如help 'general')获取有关命令组的帮助。

HBase Shell 中的所有名称都需要引号,例如表名和列名。逗号分隔命令参数。输入命令后按回车运行。用于创建和更改表的配置字典是Ruby Hashes。它们看起来是这样的:

{'key1' => 'value1', 'key2' => 'value2', ...}

用大括号包围。用'=>'分隔键值对。通常键是预定义的常量,如NAME、VERSIONS、COMPRESSION等,常量不需要引号。输入 Object.constants以查看环境中所有常量的列表。

hbase> Object.constants

有关HBase Shell的更多信息,请参阅http://hbase.apache.org/book.html

2 general

hbase> help 'general'

2.1 processlist

Show regionserver task list.

显示 regionserver 的任务列表

hbase> processlist
hbase> processlist 'all'
hbase> processlist 'general'
hbase> processlist 'handler'
hbase> processlist 'rpc'
hbase> processlist 'operation'
hbase> processlist 'all','host187.example.com'
hbase> processlist 'all','host187.example.com,16020'
hbase> processlist 'all','host187.example.com,16020,1289493121758'

2.2 status

Show cluster status. Can be 'summary', 'simple', 'detailed', or 'replication'. The default is 'summary'. Examples:

显示群集状态。可以是"summary"、"simple"、"detailed"或"replication"。默认值为"summary"。示例:

hbase> status
hbase> status 'simple'
hbase> status 'summary'
hbase> status 'detailed'
hbase> status 'replication'
hbase> status 'replication', 'source'
hbase> status 'replication', 'sink'

2.3 table_help

Help for table-reference commands.

关于表引用命令的帮助。

You can either create a table via 'create' and then manipulate the table via commands like 'put', 'get', etc.

您可以通过"create"创建一个表,然后通过"put"、"get"等命令操作该表。

See the standard help information for how to use each of these commands.

请参阅标准帮助信息,了解如何使用这些命令。

However, as of 0.96, you can also get a reference to a table, on which you can invoke commands.

但是,从0.96开始,您还可以获得对表的引用,在该表上可以调用命令。

For instance, you can get create a table and keep around a reference to it via:

例如,您可以通过一下命令创建一个表并保留对它的引用:

hbase> t = create 't', 'cf'

Or, if you have already created the table, you can get a reference to it:

或者,如果您已经创建了表,则可以获得对它的引用:

hbase> t = get_table 't'

You can do things like call 'put' on the table:

你可以做一些事情,比如执行"put":

hbase> t.put 'r', 'cf:q', 'v'

which puts a row 'r' with column family 'cf', qualifier 'q' and value 'v' into table t.

以上命令将具有列族"cf"、限定符"q"和值"v"的行"r"放入表t中。

To read the data out, you can scan the table:

要读取数据,您可以执行scan:

hbase> t.scan

which will read all the rows in table 't'.

以上命令将读取表't'中的所有行。

Essentially, any command that takes a table name can also be done via table reference.

从本质上讲,任何采用表名的命令也可以通过表引用来完成。

Other commands include things like: get, delete, deleteall,get_all_columns, get_counter, count, incr.

其他命令包括:get、delete、deleteall、get_all_columns、get_counter、count、incr。

These functions, along with the standard JRuby object methods are also available via tab completion.

这些函数以及标准的JRuby对象方法也可以通过选项卡完成使用。

For more information on how to use each of these commands, you can also just type:

有关如何使用这些命令的更多信息,您也可以键入:

hbase> t.help 'scan'

which will output more information on how to use that command.

其将输出关于如何使用该命令的更多信息。

You can also do general admin actions directly on a table; things like enable, disable,flush and drop just by typing:

您也可以直接在表上执行常规管理操作,例如:enable, disable,flush 和 drop;只需键入以下内容即可:

hbase> t.enable
hbase> t.flush
hbase> t.disable
hbase> t.drop

Note that after dropping a table, your reference to it becomes useless and further usage is undefined (and not recommended).

请注意,删除一个表后,对它的引用将变得无用,并且未定义进一步的用法(不建议使用)。

2.4 version

Output this HBase version

输出此HBase版本

hbase> version

2.5 whoami

显示当前HBase用户。

例如:

hbase> whoami

3 ddl

hbase> help 'ddl'

3.1 alter

更改表格。可以在不禁用表格的情况下更改表格。

在过去,更改已启用的表会导致问题,因此在生产中使用之前要小心并测试它。

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

列族的工作方式与"create"命令类似。列族规范可以是名称字符串,也可以是具有NAME属性的字典。

字典在"help"命令的输出中进行了描述,没有任何参数。

例如,要将表"t1"中的"f1"列族从当前值更改或添加为最多保持5个cell VERSIONS,请执行以下操作:

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_FLUSSIZE、NORMALIZATION_ENABLED、NORMALIZER_TARGET_REGION_COUNT、NORMALIZER_TARGET_REGION_SIZE(MB)、DURAILITY等。这些属性可以放在末尾;

例如,要将region的最大大小更改为128MB,请执行以下操作:

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

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

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

由于可以为一个表配置多个协处理器,因此会自动将序列号附加到属性名称后,以唯一标识该名称。

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

[coprocessor jar file location] | class name | [priority] | [arguments]
[协处理器jar文件位置]|类名|[优先级]|[参数]

也可以设置特定于此表族或列族的配置设置:

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

您也可以取消设置特定于此表的配置:

hbase> alter 't1', METHOD => 'table_conf_unset', NAME => 'hbase.hregion.majorcompaction'

还可以删除表范围属性:

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' }

3.2 alter_async

更改列族结构,不等待所有region接收结构更改。传递表名和指定新列族结构的字典。字典必须包含要更改的列族的名称。例如要将表"t1"中的"f1"列族从默认值更改或添加为最多保留5个单元格VERSIONS,请执行以下操作:

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_FLUSSIZE和READONLY。

例如,要将族的最大大小更改为128MB,请执行以下操作:

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

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

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

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

3.3 alter_status

获取alter命令的状态。指示已接收到更新的结构传递表名称的表的region数。

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

3.4 clone_table_schema

通过克隆现有的表结构来创建新表。

不涉及任何数据副本。

只复制表描述符和拆分键。

将"false"作为可选的第三个参数传递将不保留拆分键。

示例:

hbase> clone_table_schema 'table_name', 'new_table_name'
hbase> clone_table_schema 'table_name', 'new_table_name', false

3.5 create

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

列规范可以是简单的字符串(name),也可以是字典,必须包括NAME属性。

示例:

创建一个namespace=ns1、table qualifier=t1的表

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

创建一个namespace=default、table qualifier=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> # Optionally pre-split the table into NUMREGIONS, using
hbase> # SPLITALGO ("HexStringSplit", "UniformSplit" or classname)
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"的表的引用,然后您可以在该表上调用方法。

3.6 describe

描述表。例如

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

或者,您也可以使用缩写的"desc"来表示相同的内容。

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

3.7 disable

开始禁用指定的表:

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

3.8 disable_all

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

hbase> disable_all 't.*'
hbase> disable_all 'ns:t.*'
hbase> disable_all 'ns:.*'

3.9 drop

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

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

3.10 drop_all

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

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

3.11 enable

开始启用指定表:

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

3.12 enable_all

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

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

3.13 exists

给定的表是否存在?

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

3.14 get_table

获取给定的表名,并将其作为用户要操作的实际对象返回。有关如何使用该表的详细信息,请参阅table.help。

如。

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

将名为"t1"的表作为表对象返回。然后你可以

hbase> t1.help

然后将打印该表的帮助。

3.15 is_disabled

判断指定的表是否被禁用

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

3.16 is_enabled

判断指定的表是否启用

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

3.17 list

列出hbase中的所有用户表。可选的正则表达式参数可用于筛选输出。示例:

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

3.18 list_regions

将特定表的所有区域作为数组列出,并按服务器名称(可选)作为前缀和最大locality(可选)对其进行排序。默认情况下,它将返回具有任何位置的表的所有regions。

该命令显示服务器名称、region名称、开始关键字、结束关键字、region大小(MB)和请求数以及locality。该信息可以通过作为第三参数的数组来投影出来。默认情况下,所有这些信息都显示。可能的数组值有SERVER_NAME、REGION_NAME、START_KEY、END_KEY、SIZE、REQ和LOCALITY。不区分大小写。如果您不想按服务器名称进行排序,请传递一个空的hash/string,如下所示。

示例:

hbase> list_regions 'table_name'
hbase> list_regions 'table_name', 'server_name'
hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}
hbase> list_regions 'table_name', {SERVER_NAME => 'server_name', LOCALITY_THRESHOLD => 0.8}, ['SERVER_NAME']
hbase> list_regions 'table_name', {}, ['SERVER_NAME', 'start_key']
hbase> list_regions 'table_name', '', ['SERVER_NAME', 'start_key']

3.19 locate_region

找到给定表名和行键的region

hbase> locate_region 'tableName', 'key0'

3.20 show_filters

显示hbase中的所有筛选器。

hbase> show_filters

ColumnPrefixFilter
TimestampsFilter
PageFilter
.....
KeyOnlyFilter

4 namespace

hbase> help 'namespace'

4.1 alter_namespace

更改命名空间属性。

要添加/修改属性:

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

要删除属性:

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

4.2 create_namespace

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

示例:

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

4.3 describe_namespace

描述指定的命名空间。例如

hbase> describe_namespace 'ns1'

4.4 drop_namespace

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

4.5 list_namespace

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

hbase> list_namespace
hbase> list_namespace 'abc.*'

4.6 list_namespace_tables

列出命名空间的所有表。

示例:

hbase> list_namespace_tables 'ns1'

5 dml

hbase> help 'dml'

5.1 append

在指定的表/行/列坐标处追加单元格"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'}

5.2 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
hbase> count 't1', FILTER => "(QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"
hbase> count 't1', COLUMNS => ['c1', 'c2'], STARTROW => 'abc', STOPROW => 'xyz'

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

hbase> t.count
hbase> t.count INTERVAL => 100000
hbase> t.count CACHE => 1000
hbase> t.count INTERVAL => 10, CACHE => 1000
hbase> t.count FILTER => "(QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"
hbase> t.count COLUMNS => ['c1', 'c2'], STARTROW => 'abc', STOPROW => 'xyz'

5.3 delete

在指定的表/行/列以及时间戳坐标处放置一个删除单元格值。删除必须与已删除单元格的坐标完全匹配。扫描时,删除单元格会抑制旧版本。要删除"t1"表、"r1"列、"c1"行、时间戳"ts1"的cell,请执行以下操作:

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'}

5.4 deleteall

删除给定行中的所有单元格;传递表名、行以及可选的列和时间戳。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'}

ROWPREFIXFILTER可用于删除行范围

hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}
hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1'        //delete certain column family in the row ranges
hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1', ts1
hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix'}, 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}

CACHE可用于指定一次分批发送到服务器的删除数量,默认值为100

hbase> deleteall 't1', {ROWPREFIXFILTER => 'prefix', CACHE => 100}

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

hbase> t.deleteall 'r1', 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}
hbase> t.deleteall {ROWPREFIXFILTER => 'prefix', CACHE => 100}, 'c1', ts1, {VISIBILITY=>'PRIVATE|SECRET'}

5.5 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"还支持按列自定义格式。用户可以通过将FORMATER添加到get规范中的列名中来定义FORMATER。FORMATER可以规定:

1.作为org.apache.hdoop.hbase.util。Bytes方法名称(例如,toInt、toString)

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

将cf:qualifier1和cf:qualiifier2都格式化为整数的示例:

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

请注意,只能按列指定FORMATER(cf:qualifier)。您可以使用"FORMATER"和"FORMATER_CLASS"选项为所有列(包括所有key)设置格式化程序。默认的"FORMATER_CLASS"是"org.apache.hoop.hbase.util.Bytes"。

hbase> get 't1', 'r1', {FORMATTER => 'toString'}
hbase> get 't1', 'r1', {FORMATTER_CLASS => 'org.apache.hadoop.hbase.util.Bytes', FORMATTER => 'toString'}

同样的命令也可以在表的引用上运行(通过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}

5.6 get_counter

在指定的表/行/列坐标处返回计数器单元格值。

计数器单元应使用HBase上的原子增量函数进行管理,数据应进行二进制编码(作为长值)。实例

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

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

hbase> t.get_counter 'r1', 'c1'

5.7 get_splits

获取指定表的splits

hbase> get_splits 't1'
hbase> get_splits 'ns1:t1'

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

hbase> t.get_splits

5.8 incr

在指定的表/行/列坐标处增加单元格"value"。

要将表"ns1:t1"或"t1"中列"c1"下第"r1"行的单元格值增加1(可以省略)或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'}

5.9 put

将单元格"value"放在指定的表/行/列以及时间戳坐标(可选)处。要将单元格值放入标有时间"ts1"的列"c1"下第"r1"行的表"ns1:t1"或"t1"中,请执行以下操作:

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'}}

5.10 scan

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

如果未指定任何列,则将扫描所有列。

若要扫描列族的所有成员,请将限定符保留为空,如"col_family"中所示。

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

1.使用filterString-有关这方面的更多信息,请参阅HBASE-4176 JIRA附带的Filter Language文档

2.使用过滤器的整个包名称。

如果希望查看有关扫描执行的指标,则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 => [1303668804000, 1303668904000]}
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------指示扫描仪返回所有单元格(包括删除标记和未收集的删除单元格)。此选项不能与请求特定COLUMNS组合使用。

默认情况下已禁用。实例

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

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

1.作为org.apache.hdoop.hbase.util。Bytes方法名称(例如,toInt、toString)

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

将cf:qualifier1和cf:qualiifier2都格式化为整数的示例:

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

请注意,只能按列指定FORMATER(cf:qualifier)。您可以使用"FORMATER"和"FORMATER_CLASS"选项为所有列(包括所有key parts)设置格式化程序。默认的"FORMATER_CLASS"是"org.apache.hoop.hbase.util.Bytes"。

hbase> scan 't1', {FORMATTER => 'toString'}
hbase> scan 't1', {FORMATTER_CLASS => 'org.apache.hadoop.hbase.util.Bytes', FORMATTER => 'toString'}

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

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

请注意,在上述情况下,您仍然可以提供如上所述的所有筛选、列、选项等。

5.11 truncate

禁用、删除并重新创建指定的表。

5.12 truncate_preserve

禁用、删除和重新创建指定的表,同时仍保留以前的region boundaries。

6 tools

hbase> help 'tools'

6.1 assign

指定一个region。小心使用。如果已指定region,则此命令将执行强制重新分配。仅供专家使用。

示例:

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

6.2 balance_switch

启用/禁用平衡器。返回以前的平衡器状态。

示例:

hbase> balance_switch true
hbase> balance_switch false

6.3 balancer

触发群集平衡器。如果平衡器运行并且能够告诉region servers取消分配所有要平衡的区域,则返回true(重新分配本身是异步的)。否则为false(如果区域处于过渡状态,则不会运行)。

参数告诉master,即使有region处于过渡期,我们是否应该强制平衡。

警告:仅供专家使用。当分配混乱时,强制平衡可能造成的损害大于修复

示例:

hbase> balancer
hbase> balancer "force"

6.4 balancer_enabled

查询平衡器的状态。

示例:

hbase> balancer_enabled

6.5 catalogjanitor_enabled

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

hbase> catalogjanitor_enabled

6.6 catalogjanitor_run

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

hbase> catalogjanitor_run

6.7 catalogjanitor_switch

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

hbase> catalogjanitor_switch true
hbase> catalogjanitor_switch false

6.8 cleaner_chore_enabled

查询Cleaner chore状态(启用/禁用?)。

hbase> cleaner_chore_enabled

6.9 cleaner_chore_run

用于HFiles和WAL文件的垃圾收集的Cleaner chore命令。

hbase> cleaner_chore_run

6.10 cleaner_chore_switch

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

hbase> cleaner_chore_switch true
hbase> cleaner_chore_switch false

6.11 clear_block_cache

从BlockCache中清除与此表对应的所有块。适用于专业管理员。

调用此API将从BlockCache中删除特定于表的所有缓存块。

这可能会显著影响查询性能,因为后续查询将不得不从底层文件系统中检索块。

hbase> clear_block_cache 'TABLENAME'

6.12 clear_compaction_queues

清除regionserver上的压缩队列。

queue_name包含short和long。

short是shortCompactions的队列,long是longCompactings的队列。

hbase> clear_compaction_queues 'host187.example.com,60020'
hbase> clear_compaction_queues 'host187.example.com,60020','long'
hbase> clear_compaction_queues 'host187.example.com,60020', ['long','short']

6.13 clear_deadservers

清除从未使用过的dead region servers。

示例:

清除所有dead region servers:

hbase>clear_deadservers

清除指定的dead region servers:

hbase>clear_deadservers'host187.example.com,600201289493121758'

hbase>clear_deadservers'host187.example.com,600201289493121758','host188.example.com,600201289493121758'

6.14 compact

压缩传递表中的所有region,或传递区域行以压缩单个region。也可以在region内压缩单个柱族。

您也可以设置紧凑型,"NORMAL"或"MOB",默认为"NORMAL"

示例:

压缩表中的所有区域:

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

压缩整个region:

hbase> compact 'r1'

表中压缩列族:

hbase> compact 'r1', 'c1'

使用"MOB"压缩表格:

hbase> compact 't1', nil, 'MOB'

在表中使用"MOB"类型压缩列族:

hbase> compact 't1', 'c1', 'MOB'

6.15 compact_rs

压缩regionserver上的所有regions:

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

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

主要压缩区域服务器上的所有区域:

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

6.16 flush

刷新传递的表中的所有区域,或传递区域行以刷新单个区域,或格式为"host,port,startcode"的区域服务器名称以刷新其所有区域。

例如

hbase> flush 'TABLENAME'
hbase> flush 'REGIONNAME'
hbase> flush 'ENCODED_REGIONNAME'
hbase> flush 'REGION_SERVER_NAME'

6.17 is_in_maintenance_mode

master是否处于维护模式?例如

base> is_in_maintenance_mode

6.18 list_deadservers

列出hbase中的所有dead region servers

hbase> list_deadservers

6.19 major_compact

对传递的表运行主压缩,或传递区域行以主压缩单个区域。若要在区域中压缩单个列族,请指定区域名称和列族名称。

压缩表中的所有区域:

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

压缩整个区域:

hbase> major_compact 'r1'

在区域内压缩单列族:

hbase> major_compact 'r1', 'c1'

在表中压缩单列族:

hbase> major_compact 't1', 'c1'

使用"MOB"类型压缩表

hbase> major_compact 't1', nil, 'MOB'

在表中使用"MOB"类型压缩列族

hbase> major_compact 't1', 'c1', 'MOB'

6.20 merge_region

合并两个区域。将"true"作为可选的第三个参数传递将强制合并(除非传递了相邻区域,否则"force"合并将失败,而不管其他情况如何。"force"仅供专家使用)。

您可以传递编码的区域名称或完整的区域名称。编码的区域名称是区域名称上的散列后缀:例如,如果区域名称是TestTable,00944294561289497600452.527db22f95c8a9e0116f0cc13c680396。那么编码的区域名称部分是527db22f95c8a9e0116f0cc13c680396

示例:

hbase> merge_region 'FULL_REGIONNAME', 'FULL_REGIONNAME'
hbase> merge_region 'FULL_REGIONNAME', 'FULL_REGIONNAME', true

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

6.21 move

移动区域。可以选择指定目标区域服务器,否则我们将随机选择一个。注意:您传递的是编码的区域名称,而不是区域名称,因此此命令与其他命令有点不同。编码的区域名称是区域名称上的散列后缀:例如,如果区域名称是TestTable,00944294561289497600452.527db22f95c8a9e0116f0cc13c680396。那么编码的区域名称部分是 527db22f95c8a9e0116f0cc13c680396。服务器名称是它的主机、端口和启动代码。例如host187.example.com,600201289493121758

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

6.22 normalize

为设置了NORMALIZATION_ENABLED标志的所有表触发区域规范器。返回true

如果normalizer成功运行,则为false。请注意,此命令无效

如果区域规范化器被禁用(确保使用'normalizer_switch'命令打开它)。

hbase> normalize

6.23 normalizer_enabled

查询区域规范化器的状态。

hbase> normalizer_enabled

6.24 normalizer_switch

启用/禁用区域规范化器。返回上一个规范化器状态。

启用规范化器时,它会处理'NORMALIZATION_enabled'=>true的所有表。

hbase> normalizer_switch true
hbase> normalizer_switch false

6.25 split

拆分整个表或传递一个区域以拆分单个region。使用第二个参数,可以为region指定显式拆分key。

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

6.26 splitormerge_enabled

查询switch的状态。您可以设置switch类型,"SPLIT"或"MERGE"

hbase> splitormerge_enabled 'SPLIT'

6.27 splitormerge_switch

启用/禁用一个switch。您可以设置switch类型"SPLIT"或"MERGE"。返回以前的拆分状态。

hbase> splitormerge_switch 'SPLIT', true
hbase> splitormerge_switch 'SPLIT', false

6.28 stop_master

停止活动Master。仅供专家使用。

hbase> stop_master

6.29 stop_regionserver

停止RegionServer。仅供专家使用。

请考虑改用graceful_stop.sh脚本!

hbase> stop_regionserver 'hostname:port'

6.30 trace

使用HTrace启动或停止跟踪。

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

如果第一个参数是"start",则会启动新的跨度。

如果第一个参数为"stop",则停止当前运行的跨度。

("stop"在成功时返回false。)如果第一个参数是"status",则仅在跟踪是否正在运行时返回。

在"start"-ing时,您可以选择将span的名称作为第二个参数传递。

span的默认名称为"HBaseShell"。

重复"start"不会启动嵌套跨度。

hbase> trace 'start'
hbase> trace 'status'
hbase> trace 'stop'

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

6.31 unassign

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

小心使用。仅供专家使用。示例:

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

6.32 wal_roll

滚动日志写入程序。也就是说,开始将日志消息写入新文件。

regionserver的名称应作为参数给出。

"server_name"是regionserver的主机、端口和启动代码。例如:host187.example.com,600201289493121758(在master ui中或在shell中执行详细状态时查找服务器名)

6.33 zk_dump

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

7 replication

habse> help 'replication'

7.1 add_peer

对等端可以是另一个HBase集群,也可以是自定义复制端点。在任何一种情况下,都必须指定一个id来标识对等方。

对于HBase集群对等体,必须提供集群密钥,其组成如下:

hbase.zookeeper.quorum:hbase.zuokeeper.property.clientPort:zookeeper-znode.parent这为hbase提供了连接到另一个hbase集群的完整路径。

state的可选参数标识复制对等方的状态是启用还是禁用。

并且默认状态是启用的。

命名空间的一个可选参数用于标识哪些命名空间的表将被复制到对等集群。

表列族的可选参数标识哪些表和/或列族将被复制到对等集群。

注意:在peer-config中设置一个名称空间意味着该名称空间中的所有表都将复制到peer-cluster。因此,如果您已经在对等配置中设置了一个名称空间,那么您就不能在对等配置中将该名称空间的表再次设置。

hbase> add_peer '1', CLUSTER_KEY => "server1.cie.com:2181:/hbase"
hbase> add_peer '1', CLUSTER_KEY => "server1.cie.com:2181:/hbase", STATE => "ENABLED"
hbase> add_peer '1', CLUSTER_KEY => "server1.cie.com:2181:/hbase", STATE => "DISABLED"
hbase> add_peer '2', CLUSTER_KEY => "zk1,zk2,zk3:2182:/hbase-prod", TABLE_CFS => { "table1" => [], "table2" => ["cf1"], "table3" => ["cf1", "cf2"] }
hbase> add_peer '2', CLUSTER_KEY => "zk1,zk2,zk3:2182:/hbase-prod", NAMESPACES => ["ns1", "ns2", "ns3"]
hbase> add_peer '2', CLUSTER_KEY => "zk1,zk2,zk3:2182:/hbase-prod", NAMESPACES => ["ns1", "ns2"], TABLE_CFS => { "ns3:table1" => [], "ns3:table2" => ["cf1"] }

对于自定义复制端点,可以提供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" => [], "ns2:table2" => ["cf1"], "ns3:table3" => ["cf1", "cf2"] }
hbase> add_peer '12', ENDPOINT_CLASSNAME => 'org.apache.hadoop.hbase.MyReplicationEndpoint', CLUSTER_KEY => "server2.cie.com:2181:/hbase"

注意:必须指定CLUSTER_KEY或ENDPOINT_CLASSNAME。如果指定了ENDPOINT_CLASSNAME,则CLUSTER_KEY是可选的,并且只有在特定自定义端点需要时才应指定。

7.2 append_peer_namespaces

为指定的对等方附加一些可复制的命名空间。

在对等配置中设置命名空间意味着将复制此命名空间(replication_scope != 0 )中的所有表。

示例:

将ns1,ns2附加为可复制的对等方"2"。

hbase> append_peer_namespaces '2', ["ns1", "ns2"]

7.3 append_peer_tableCFs

为指定的对等方附加一个可复制的table-cf config

示例:

#附加一个可为对等方复制的表

hbase> append_peer_tableCFs '2', { "ns1:table4" => ["cfA", "cfB"]}

7.4 disable_peer

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

hbase> disable_peer '1'

7.5 disable_table_replication

禁用表的复制开关。

hbase> disable_table_replication 'table_name'

7.6 enable_peer

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

hbase> enable_peer '1'

7.7 enable_table_replication

启用表的复制交换机。

hbase> enable_table_replication 'table_name'

7.8 get_peer_config

输出群集密钥、复制终结点类(如果存在)和任何复制配置参数

7.9 list_peer_configs

没有输出此群集上定义的每个对等端的复制对等端配置的参数方法。

7.10 list_peers

列出所有复制对等群集。

如果replicate_all标志为false,则对等配置中的命名空间和表cfs将被复制到对等集群。

如果replicate_all标志为true,则所有用户表都将被复制到对等集群,除了对等配置中的命名空间和表cfs。

hbase> list_peers

7.11 list_replicated_tables

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

hbase> list_replicated_tables
hbase> list_replicated_tables 'abc.*'

7.12 remove_peer

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

hbase> remove_peer '1'

7.13 remove_peer_namespaces

从指定对等方的命名空间配置中删除一些命名空间。

#从对等方"2"的可复制命名空间中删除ns1。
hbase> remove_peer_namespaces '2', ["ns1"]

7.14 remove_peer_tableCFs

从指定对等方的表配置中删除表

hbase> remove_peer_tableCFs '2',  { "ns1:table1" => []}
hbase> remove_peer_tableCFs '2',  { "ns1:table1" => ["cf1"]}

7.15 set_peer_bandwidth

为指定的对等方设置每个节点带宽的复制源。

# set bandwidth=2MB per regionserver for a peer
hbase> set_peer_bandwidth '1', 2097152
# unset bandwidth for a peer to use the default bandwidth configured in server-side
hbase> set_peer_bandwidth '1'

7.16 set_peer_exclude_namespaces

设置未为指定对等方复制的命名空间。

笔记

1.当设置exclude命名空间时,replicate_all标志需要为true。

2.在对等配置中设置排除命名空间意味着该命名空间中的所有表都不会复制到对等集群。如果对等配置已经有一个排除表,则不允许将此表的命名空间设置为排除命名空间。

# set exclude namespaces config to null
hbase> set_peer_exclude_namespaces '1', []
# set namespaces which not replicated for a peer.
# set a exclude namespace in the peer config means that all tables in this namespace will not be replicated.
hbase> set_peer_exclude_namespaces '2', ["ns1", "ns2"]

7.17 set_peer_exclude_tableCFs

设置未为指定对等方复制的表cfs。

笔记

1.当设置排除表cfs时,replicate_all标志需要为true。

2.如果对等配置已经有一个排除命名空间,则不允许将该命名空间的任何排除表设置为对等配置。

# set exclude table-cfs to null
hbase> set_peer_exclude_tableCFs '1'
# set table / table-cf which not replicated for a peer, for a table without an explicit column-family list, all column-families will not be replicated
hbase> set_peer_exclude_tableCFs '2', { "ns1:table1" => [], "ns2:table2" => ["cf1", "cf2"], "ns3:table3" => ["cfA", "cfB"]}

7.18 set_peer_namespaces

为指定的对等方设置可复制的命名空间配置。

1.在设置可复制的命名空间时,replicate_all标志需要为false。

2.在peer config中设置命名空间意味着该命名空间中的所有表都将复制到peer集群。如果对等配置已经有一个表,则不允许将此表的命名空间设置为对等配置。

# set namespaces config is null, then the table-cfs config decide
# which table to be replicated.
hbase> set_peer_namespaces '1', []
# set namespaces to be replicable for a peer.
# set a namespace in the peer config means that all tables in this namespace (with replication_scope != 0 ) will be replicated.
hbase> set_peer_namespaces '2', ["ns1", "ns2"]

7.19 set_peer_replicate_all

将指定对等方的replicate_all标志设置为true或false。

如果replicate_all标志为true,则所有用户表(REPLICATION_SCOPE!=0)都将复制到对等集群。但您可以使用"set_peer_exclude_namespaces"来设置哪些命名空间不能复制到对等集群。您可以使用"set_peer_exclude_tableCF"来设置哪些表不能复制到对等集群。

若replicate_all标志为false,则不能将所有用户表复制到对等集群。然后,您可以使用"set_peer_namespaces"或"append_peer_namespace"来设置要复制到对等集群的命名空间。您可以使用"set_peer_tableCF"或"append_peer_ttableCF"来设置将哪些表复制到对等集群。

注意:当您想将对等方的replicate_all标志从false更改为true时,您需要首先清理对等方的NAMESPACES和TABLECFS配置。当您想将对等方的replicate_all标志从true更改为false时,您需要首先清除对等方的EXCLUDE_NAMESPACES和EXCLUDE_TABLECFS配置。

# set replicate_all flag to true
hbase> set_peer_replicate_all '1', true
# set replicate_all flag to false
hbase> set_peer_replicate_all '1', false

7.20 set_peer_serial

将指定对等端的串行标志设置为true或false。

如果serial标志为true,则用户表(REPLICATION_SCOPE!=0)的所有日志都将串行复制到对等集群,这意味着已复制表的每个日志段将按其日志序列id的顺序推送到对等集群。

如果serial标志为false,则源集群将无法确保已复制表的日志被串行推送到对等集群。

# set serial flag to true
hbase> set_peer_serial '1', true
# set serial flag to false
hbase> set_peer_serial '1', false

7.21 set_peer_tableCFs

为指定的对等方设置可复制表cf config。

笔记

1.在设置可复制表cfs时,replicate_all标志需要为false。

2.如果表的命名空间已经在此对等方的命名空间配置中,则无法将表设置为表cfs-config。

# set table-cfs config is null, then the namespaces config decide which table to be replicated.
hbase> set_peer_tableCFs '1'
# set table / table-cf to be replicable for a peer, for a table without an explicit column-family list, all replicable column-families (with replication_scope == 1) will be replicated
hbase> set_peer_tableCFs '2', { "ns1:table1" => [], "ns2:table2" => ["cf1", "cf2"], "ns3:table3" => ["cfA", "cfB"]}

7.22 show_peer_tableCFs

显示指定对等方的可复制表cf config。

hbase> show_peer_tableCFs '2'

7.23 update_peer_config

对等端可以是另一个HBase集群,也可以是自定义复制端点。在任何一种情况下,都必须指定一个id来标识对等方。此命令不会中断已启用的复制对等端上的处理。

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

CLUSTER_KEY、REPLICATION_ENDPOINT和TABLE_CF无法使用此命令更新。

要更新TABLE_CF,请参阅append_peer_tableCF和remove_peer_tableCF命令。

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" },

8 snapshots

hbase> help 'snapshots'

8.1 clone_snapshot

通过克隆快照内容创建新表。

不涉及任何数据副本。

在新创建的表上写入不会影响快照数据。

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

以下命令将所有acl从原始快照表恢复到新创建的表中。

hbase> clone_snapshot 'snapshotName', 'namespace:tableName', {RESTORE_ACL=>true}

8.2 delete_all_snapshot

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

hbase> delete_all_snapshot 's.*'

8.3 delete_snapshot

删除指定的快照。示例:

hbase> delete_snapshot 'snapshotName'

8.4 delete_table_snapshots

删除与给定表名正则表达式和快照名正则表达式匹配的所有快照。

默认情况下,快照名称正则表达式将删除匹配表名称正则表达式的所有快照。

hbase> delete_table_snapshots 'tableName'
hbase> delete_table_snapshots 'tableName.*'
hbase> delete_table_snapshots 'tableName', 'snapshotName'
hbase> delete_table_snapshots 'tableName', 'snapshotName.*'
hbase> delete_table_snapshots 'tableName.*', 'snapshotName.*'
hbase> delete_table_snapshots 'ns:tableName.*', 'snapshotName.*'

8.5 list_snapshots

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

可选的正则表达式参数可用于按快照名称筛选输出。

hbase> list_snapshots
hbase> list_snapshots 'abc.*'

8.6 list_table_snapshots

列出所有与表名正则表达式和快照名正则表达式匹配的已完成快照(通过打印名称和相对信息)。

可选的快照名称正则表达式参数可用于按快照名称筛选输出。

hbase> list_table_snapshots 'tableName'
hbase> list_table_snapshots 'tableName.*'
hbase> list_table_snapshots 'tableName', 'snapshotName'
hbase> list_table_snapshots 'tableName', 'snapshotName.*'
hbase> list_table_snapshots 'tableName.*', 'snapshotName.*'
hbase> list_table_snapshots 'ns:tableName.*', 'snapshotName.*'

8.7 restore_snapshot

还原指定的快照。

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

必须禁用该表。

hbase> restore_snapshot 'snapshotName'

以下命令将所有acl从快照表恢复到表中。

hbase> restore_snapshot 'snapshotName', {RESTORE_ACL=>true}

8.8 snapshot

拍摄指定表的快照。示例:

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

9 configuration

hbase> help 'configuration'

9.1 update_all_config

在群集中的所有服务器上重新加载配置的子集。见http://hbase.apache.org/book.html#dyn_config了解更多详细信息。以下是如何在hbase shell中运行该命令:

update_all_config

9.2 update_config

在服务器"servername"上重新加载配置的子集,其中servername是主机、端口和启动代码。例如:host187.example.com,600201289493121758请参阅http://hbase.apache.org/book.html#dyn_config了解更多详细信息。以下是如何在hbase shell中运行该命令:

hbase> update_config 'servername'

10 quotas

hbase> help 'quotas'

10.1 list_quota_snapshots

列出具有可选选择条件的当前空间配额快照。快照将相关信息封装到空间配额中,如空间使用、配置的限制和配额违反详细信息。此命令有助于了解具有空间配额的集群的当前状态。

默认情况下,此命令将从hbase:quota表中读取存储在系统中的所有快照。可以提供表名或命名空间来过滤返回的快照。RegionServers维护快照的副本,定期刷新;通过提供RegionServer选项,将从该RegionServer而不是配额表中检索快照。

hbase> list_quota_snapshots
hbase> list_quota_snapshots({TABLE => 'table1'})
hbase> list_quota_snapshots({NAMESPACE => 'org1'})
hbase> list_quota_snapshots({REGIONSERVER => 'server1.domain,16020,1483482894742'})
hbase> list_quota_snapshots({NAMESPACE => 'org1', REGIONSERVER => 'server1.domain,16020,1483482894742'})

10.2 list_quota_table_sizes

列出由所有RegionServers计算的集群中每个表的计算大小。这是Master用于决定空间配额的原始信息。大多数情况下,使用"list_quota_sanapshots"可以提供比此命令更高级别的洞察力。

hbase> list_quota_table_sizes

10.3 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.*'

10.4 list_snapshot_sizes

列出给定空间配额大小计算算法的每个HBase快照的大小。当创建快照的表不再引用文件时,HBase快照仅"拥有"该文件的大小。

10.5 set_quota

为用户、表或命名空间设置配额。

语法:set_quota TYPE=>,

TYPE=>THROTTLE

用户可以在读、写或同时对两个请求(即读+写)设置配额。读、写、或读+写(默认节流类型)请求限制可以用100req/sec、100req/min的形式表示,读、写和读+写的(默认节流型型)限制可以用100k/sec、100M/min的形式表达,其中(B、K、M、G、T、P)为有效大小单位,(秒、分钟、小时、天)为有效时间单位。

目前,油门限制是每台机器的-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

TYPE => SPACE

用户可以在表或命名空间上设置配额。配额是对目标在文件系统上的大小的限制,以及当目标超过该限制时要采取的一些操作。限制以字节为单位,可以使用标准度量后缀(B、K、M、G、T、P)表示,如果未提供,则默认为字节。不同的配额可以在表和命名空间级别应用于一个表;表级别的配额优先于命名空间级别的配额。

当配额被违反时,可以采取的政策数量有限,按最不严格到最严格的顺序列出。

NO_INSERTS-不允许摄取任何新数据(例如Put、Increment、Append)。

NO_WRITES-与NO_INSERTS相同,但也不允许删除。

NO_WRITES_COMPACTIONS-与NO_WRITES相同,但也不允许压缩。

DISABLE(禁用)-表格被禁用。

hbase> set_quota TYPE => SPACE, TABLE => 't1', LIMIT => '1G', POLICY => NO_INSERTS
hbase> set_quota TYPE => SPACE, TABLE => 't2', LIMIT => '50G', POLICY => DISABLE
hbase> set_quota TYPE => SPACE, TABLE => 't3', LIMIT => '2T', POLICY => NO_WRITES_COMPACTIONS
hbase> set_quota TYPE => SPACE, NAMESPACE => 'ns1', LIMIT => '50T', POLICY => NO_WRITES

也可以通过此命令删除空间配额。要删除空间配额,请提供NONE作为限制。

hbase> set_quota TYPE => SPACE, TABLE => 't1', LIMIT => NONE
hbase> set_quota TYPE => SPACE, NAMESPACE => 'ns1', LIMIT => NONE

11 security

hbase> help 'security'

11.1 grant

授予用户特定的权限。

Syntax: grant <user or @group>, [,
[, [, ]]]
Syntax: grant <user or @group>, , <@namespace>

权限是来自集合"RWXCA"的零个或多个字母。

读取('R')、写入('W')、执行('X')、创建('C')、管理('A')

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

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

11.2 list_security_capabilities

列出支持的安全功能

hbase> list_security_capabilities

11.3 revoke

吊销用户的访问权限。

Syntax: revoke <user or @group> [,
[, [, ]]]
Syntax: revoke <user or @group>, <@namespace>

注意:组和用户的访问权限以相同的方式撤销,但组的前缀是"@"字符。表和命名空间的指定方式相同,但命名空间的前缀是"@"字符。

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

11.4 user_permission

显示特定用户的所有权限。

Syntax : user_permission

注意:命名空间必须始终以"@"字符开头。

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].*'

注意:以上命令仅适用于与AccessController协处理器一起运行的情况

12 procedures

hbase> help 'procedures'

12.1 list_locks

列出hbase中的所有锁。示例:

list_locks hbase> list_locks

12.2 list_procedures

在hbase中列出所有进程。例如

hbase> list_procedures

13 visibility labels

hbase> help 'visibility labels'

13.1 add_labels

添加一组可见性标签。

Syntax : add_labels [label1, label2]

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

13.2 clear_auths

清除用户或组中的可见性标签。

Syntax : clear_auths 'user',[label1, label2]

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

13.2 get_auths

获取为特定用户或组设置的可见性标签

Syntax : get_auths 'user'

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

13.3 list_labels

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

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

Syntax : list_labels

hbase> list_labels 'secret.*'
hbase> list_labels

13.4 set_auths

为用户或组添加一组可见性标签

Syntax : set_auths 'user',[label1, label2]

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

13.5 set_visibility

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

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

如果未指定任何列,则将包括所有列。

要包括列族的所有成员,请将限定符留空,如中所示

'col_family:'。

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

1.使用filterString-有关这方面的更多信息,请参阅HBASE-4176 JIRA 2附带的Filter Language文档。使用筛选器的整个包名称。

hbase> set_visibility 't1', 'A|B', {COLUMNS => ['c1', 'c2']}
hbase> set_visibility 't1', '(A&B)|C', {COLUMNS => 'c1',
    TIMERANGE => [1303668804000, 1303668904000]}
hbase> set_visibility 't1', 'A&B&C', {ROWPREFIXFILTER => 'row2',
    FILTER => "(QualifierFilter (>=, 'binary:xyz')) AND
    (TimestampsFilter ( 123, 456))"}

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

注意:以上命令仅适用于与VisibilityController协处理器一起运行的情况

14 rsgroup

hbase> help 'rsgroup'

14.1 add_rsgroup

创建一个新的RegionServer组。

hbase> add_rsgroup 'my_group'

14.2 balance_rsgroup

平衡RegionServer组

hbase> balance_rsgroup 'my_group'

14.3 get_rsgroup

获取RegionServer组的信息。

hbase> get_rsgroup 'default'

14.4 get_server_rsgroup

获取给定RegionServer所属的组名。

hbase> get_server_rsgroup 'server1:port1'

14.5 get_table_rsgroup

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

hbase> get_table_rsgroup 'myTable'

14.6 list_rsgroups

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

hbase> list_rsgroups
hbase> list_rsgroups 'abc.*'

14.7 move_namespaces_rsgroup

hbase> move_namespaces_rsgroup 'dest',['ns1','ns2']

14.8 move_servers_namespaces_rsgroup

hbase> move_servers_namespaces_rsgroup 'dest',['server1:port','server2:port'],['ns1','ns2']

14.9 move_servers_rsgroup

将RegionServers从一个组重新分配到另一个组。RegionServer的每个区域都将移动到另一个RegionServer。

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

14.10 move_servers_tables_rsgroup

将RegionServers和Tables从一个组重新分配到另一个组。

hbase> move_servers_tables_rsgroup 'dest',['server1:port','server2:port'],['table1','table2']

14.11 move_tables_rsgroup

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

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

14.12 remove_rsgroup

删除RegionServer组。

hbase> remove_rsgroup 'my_group'

14.13 remove_servers_rsgroup

从rsgroup中删除已停用的服务器。

不允许使用失效/恢复/活动服务器。

hbase> remove_servers_rsgroup ['server1:port','server2:port']

注意:rsgroup协处理器终结点必须在master上启用,否则命令将失败,原因如下:

UnknownProtocolException: No registered Master Coprocessor Endpoint found for RSGroupAdminService

未知协议异常:找不到RSGroupAdminService的已注册主协处理器终结点

相关推荐
zmd-zk30 分钟前
kafka+zookeeper的搭建
大数据·分布式·zookeeper·中间件·kafka
激流丶32 分钟前
【Kafka 实战】如何解决Kafka Topic数量过多带来的性能问题?
java·大数据·kafka·topic
测试界的酸菜鱼1 小时前
Python 大数据展示屏实例
大数据·开发语言·python
时差9531 小时前
【面试题】Hive 查询:如何查找用户连续三天登录的记录
大数据·数据库·hive·sql·面试·database
让学习成为一种生活方式1 小时前
R包下载太慢安装中止的解决策略-R语言003
java·数据库·r语言
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka中的选举机制
大数据·学习·kafka
Mephisto.java1 小时前
【大数据学习 | kafka高级部分】kafka的优化参数整理
大数据·sql·oracle·kafka·json·database
道可云1 小时前
道可云人工智能&元宇宙每日资讯|2024国际虚拟现实创新大会将在青岛举办
大数据·人工智能·3d·机器人·ar·vr
成都古河云1 小时前
智慧场馆:安全、节能与智能化管理的未来
大数据·运维·人工智能·安全·智慧城市
软工菜鸡1 小时前
预训练语言模型BERT——PaddleNLP中的预训练模型
大数据·人工智能·深度学习·算法·语言模型·自然语言处理·bert