【发布时间】: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 的学习者,我不知道如何解决区域服务器热点