【问题标题】:Issue with Pre-splitting "TSDB" HBase table in openTSDB在 openTSDB 中预拆分“TSDB”HBase 表的问题
【发布时间】:2026-01-03 13:40:01
【问题描述】:

这里我有 2 个区域服务器,我在其中创建了 2 个指标,其 UID(JAVA 字节数组)命名如下。

指标 sys.rack.1: [0, 1, 5]

指标 sys.rack.2: [0, 1, 6]

我需要相应地预拆分 HBASE“TSDB”表以在 2 个区域服务器之间共享负载。 http://opentsdb.net/docs/build/html/user_guide/writing.html#pre-split-hbase-regions

HBase 将自动拆分区域。我想通过将其拆分到区域来自己执行该行为。

我试过了,但是它最初只针对一个区域来编写指标。我可以在什么范围内分割区域? 谁能帮我解决这个问题。

已编辑

数据会像 sys.rack.1 主机=20 sys.rack.2 主机=18

在 tsdb 中,度量的前 3 个字节被编码为字节数组(0,1,5 fr metric 1 和 0,1,6 fr metric2)并用作行键。在 HBase 中,我们使用列族和 Rowkey 对值进行了编码。

【问题讨论】:

  • 嗨 karthik,您能提供一些数据样本吗?
  • 您可以考虑的一件事是对您的密钥进行哈希处理,这样您的密钥将具有更广泛的范围。那么你只需要在哈希范围内拆分 hbase(取决于负载)
  • 实际上 Schema 将是这样的 opentsdb.net/docs/build/html/user_guide/backends/hbase.html 。你能告诉我如何散列这些密钥吗?
  • 查看架构,您将失去用于散列的快速查询。根据我在 tsdb 中阅读的内容,您将希望在指标上拆分区域,以便每个指标都有一个区域。如果你想优化读取,我认为你不能做得更好。
  • 扫描表时会像 "\x00\x00\x0CW5\x97\x column=t:\xFDL\xFFA, timestamp=1463133487944, value=\x0F\x90\x00\x00 \x02\x00\x 07 " 编码值,其中 "t" 将是列族。由于我是 HBase 的学习者,我不知道如何解决区域服务器热点

标签: hbase mapr opentsdb


【解决方案1】:

找到解决办法 而在 HBase 中创建表需要根据我们在 TSDB 中创建的指标使用以下命令进行预拆分。为了了解您扫描 HBase 中存在的 TSDB UID 表的指标,您可以将其拆分如下。

create 'tsdb','t',SPLITS => ['\x00\x00\x01', '\x00\x00\x02','\x00\x00\x03', '\x00\x00\x04']

我终于可以预先拆分表格了。

【讨论】:

    最近更新 更多