【问题标题】:How to list the regions in an HBase table through the shell?如何通过 shell 列出 HBase 表中的区域?
【发布时间】:2016-03-08 15:03:06
【问题描述】:

我想通过 hbase shell 获取有关出现在 Web UI 中的表格区域的相同信息(即区域名称、区域服务器、开始/结束键、位置)。

(UI 不稳定/缓慢,此外,我想将此信息作为脚本的一部分进行处理。)

在谷歌上搜索了很多之后,我不知道怎么做,这让我非常惊讶。版本是1.0.0.-cdh5.4.0

【问题讨论】:

  • 原来你不能(还)。有一张公开票issues.apache.org/jira/browse/HBASE-14925 可以添加。
  • 仅供参考,我想要这个的主要原因之一是 UI 不会总是显示表格区域。我幸运地发现,如果您对表执行 major_compact,这会以某种方式刷新表元数据,从而导致 UI 显示表区域。所以至少我现在可以得到信息。但是,如果能够以一种不使用屏幕抓取的简单方式在脚本中使用这些信息,那就太好了!

标签: hbase


【解决方案1】:

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

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

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

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

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

【讨论】:

【解决方案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 

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

【讨论】:

    【解决方案3】:

    使用“官方”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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        【解决方案5】:
        scan 'hbase:meta', {FILTER=>"PrefixFilter('tableName')", COLUMNS=>['info:regioninfo']}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-28
          • 1970-01-01
          • 1970-01-01
          • 2013-05-26
          • 2019-06-29
          • 1970-01-01
          相关资源
          最近更新 更多