如何通过shell列出HBase表中的区域?

时间:2015-12-03 20:24:48

标签: hbase

我希望获得有关Web UI中显示的表区域的相同信息(即区域名称,区域服务器,开始/结束键,位置),但是通过hbase shell。

(UI是片状/慢速,而且我想将此信息作为脚本的一部分进行处理。)

经过大量的谷歌搜索,我无法知道如何,这让我感到非常惊讶。版本是1.0.0.-cdh5.4.0

5 个答案:

答案 0 :(得分:32)

要获取有关该表的区域信息,您需要扫描hbase:meta表。

scan 'hbase:meta',{FILTER=>"PrefixFilter('table_name')"}

此命令将提供所有区域的详细信息。行键将具有区域名称,并且将有四个列限定符。您可能需要遵循两个列限定符:

info:regioninfo - 此限定符包含STARTKEY和ENDKEY。

info:server - 此限定符包含区域服务器详细信息

答案 1 :(得分:2)

以下是HBase邮件列表的回复:

状态'详细'会显示足够的信息 例如

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 

但是,这会从所有表中返回信息,您需要解析您感兴趣的表的区域。

答案 2 :(得分:1)

使用"官方" 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']

其实施细节见:https://issues.apache.org/jira/browse/HBASE-14925

答案 3 :(得分:1)

hbase中有一个工具,用于表恢复和检查一致性,称为 hbase hbck 。虽然这不会在hbase shell中运行,但可以用来获取区域列表。

命令hbase hbck -details <tablename>可用于获取表格详细信息,并包含所需的区域信息。

可以解析上述命令的输出以获取所需表的region-info。

答案 4 :(得分:0)

扫描'hbase:meta',{FILTER =>“ PrefixFilter('tableName')”,COLUMNS => ['info:regioninfo']}