如何通过 shell 列出 HBase table 中的区域?
How to list the regions in an HBase table through the shell?
我想获得关于出现在网络 UI 中的 table 区域的相同信息(即区域名称、区域服务器、start/end 密钥、位置) ,而是通过 hbase shell。
(UI 是 flaky/slow,而且我想将此信息作为脚本的一部分进行处理。)
经过多次谷歌搜索后,我找不到方法,这让我非常惊讶。版本是 1.0.0.-cdh5.4.0
要获取有关 table 的区域信息,您需要扫描 hbase:meta
table。
scan 'hbase:meta',{FILTER=>"PrefixFilter('table_name')"}
此命令将提供所有区域的详细信息。行键将具有区域名称,并且将有四个列限定符。您可能需要以下两个列限定符:
info:regioninfo
- 此限定符包含 STARTKEY 和 ENDKEY。
info:server
- 此限定符包含区域服务器详细信息
这是来自 HBase 邮件列表的回复:
status 'detailed' 会向您显示足够的信息
例如
t1,30,1449175546660.da5f3853f6e59d1ada0a8554f12885ab."
numberOfStores=1, numberOfStorefiles=0,
storefileUncompressedSizeMB=0, lastMajorCompactionTimestamp=0,
storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0,
readRequestsCount=0, writeRequestsCount=0, rootIndexSizeKB=0,
totalStaticIndexSizeKB=0, totalStaticBloomSizeKB=0, totalCompactingKVs=0,
currentCompactedKVs=0, compactionProgressPct=NaN, completeSequenceId=-1,
dataLocality=0.0
但是,此 returns 信息来自 所有 table,您需要解析 table 您的区域有兴趣。
使用"official" list_regions
shell 命令列出所有区域。请注意,此工具仅适用于 HBase 版本 1.4 及更高版本。
Some examples are
Examples:
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']
hbase 中有一个用于table 恢复和检查一致性的工具,称为hbase hbck。虽然这不会是hbase里面的运行shell,但是可以用来获取区域列表。
命令hbase hbck -details <tablename>
可用于获取table 详细信息并将包含所需的区域信息。
可以解析上述命令的输出以获得所需table的区域信息。
scan 'hbase:meta', {FILTER=>"PrefixFilter('tableName')", COLUMNS=>['info:regioninfo']}
我想获得关于出现在网络 UI 中的 table 区域的相同信息(即区域名称、区域服务器、start/end 密钥、位置) ,而是通过 hbase shell。
(UI 是 flaky/slow,而且我想将此信息作为脚本的一部分进行处理。)
经过多次谷歌搜索后,我找不到方法,这让我非常惊讶。版本是 1.0.0.-cdh5.4.0
要获取有关 table 的区域信息,您需要扫描 hbase:meta
table。
scan 'hbase:meta',{FILTER=>"PrefixFilter('table_name')"}
此命令将提供所有区域的详细信息。行键将具有区域名称,并且将有四个列限定符。您可能需要以下两个列限定符:
info:regioninfo
- 此限定符包含 STARTKEY 和 ENDKEY。
info:server
- 此限定符包含区域服务器详细信息
这是来自 HBase 邮件列表的回复:
status 'detailed' 会向您显示足够的信息 例如
t1,30,1449175546660.da5f3853f6e59d1ada0a8554f12885ab."
numberOfStores=1, numberOfStorefiles=0,
storefileUncompressedSizeMB=0, lastMajorCompactionTimestamp=0,
storefileSizeMB=0, memstoreSizeMB=0, storefileIndexSizeMB=0,
readRequestsCount=0, writeRequestsCount=0, rootIndexSizeKB=0,
totalStaticIndexSizeKB=0, totalStaticBloomSizeKB=0, totalCompactingKVs=0,
currentCompactedKVs=0, compactionProgressPct=NaN, completeSequenceId=-1,
dataLocality=0.0
但是,此 returns 信息来自 所有 table,您需要解析 table 您的区域有兴趣。
使用"official" list_regions
shell 命令列出所有区域。请注意,此工具仅适用于 HBase 版本 1.4 及更高版本。
Some examples are
Examples:
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']
hbase 中有一个用于table 恢复和检查一致性的工具,称为hbase hbck。虽然这不会是hbase里面的运行shell,但是可以用来获取区域列表。
命令hbase hbck -details <tablename>
可用于获取table 详细信息并将包含所需的区域信息。
可以解析上述命令的输出以获得所需table的区域信息。
scan 'hbase:meta', {FILTER=>"PrefixFilter('tableName')", COLUMNS=>['info:regioninfo']}