OpenTSDB Hbase行键设计

OpenTSDB Hbase行键设计,hbase,opentsdb,Hbase,Opentsdb,OpenTSDB行键设计为。我可以理解,键的设计可以避免在编写数据时出现热点。但在读取特定主机对应的所有指标时,会导致从随机区域服务器读取数据。那么它是如何优化读取性能的呢。对于键设计的读取模式是否有任何假设。此模式对于给定系列集(公制+标记)的时间范围查询是有效的。任何其他查询,例如获取给定服务器收集的所有度量的最后值,都需要进行完整扫描。根据Chris Larsen的说法 OpenTSDB的假设是,在给定时间,大多数仪表板和用户将关注一个特定的指标或一组小的指标,这些指标是跨主机或各种标记聚

OpenTSDB行键设计为。我可以理解,键的设计可以避免在编写数据时出现热点。但在读取特定主机对应的所有指标时,会导致从随机区域服务器读取数据。那么它是如何优化读取性能的呢。对于键设计的读取模式是否有任何假设。

此模式对于给定系列集(公制+标记)的时间范围查询是有效的。任何其他查询,例如获取给定服务器收集的所有度量的最后值,都需要进行完整扫描。

根据Chris Larsen的说法

OpenTSDB的假设是,在给定时间,大多数仪表板和用户将关注一个特定的指标或一组小的指标,这些指标是跨主机或各种标记聚合的。例如,我的平均或最大CPU使用率是多少

跨多个区域服务器进行查询实际上是一个巨大的好处,因为您可以并行启动查询,例如,如果您请求“sys.cpu.busy host=web01”和“sys.if.bytes\u out host=web01”。。。如果您有多个区域服务器,TSD会将这两个指标发送出去,很可能发送到两个服务器,并且可以并行处理它们,而不是将它们都放在同一服务器上的HBase队列中,并在线程可用时处理它们


另外,在2.2中,您可以为row键启用salting,因此现在就可以了。这有助于查询高基数指标(例如大量主机),方法是将每个指标查询在区域服务器上并行拆分。

是否可以对上述两个指标进行预拆分?你能说明如何进行预分裂吗?通过预分裂,我假设你的意思是两个度量数据位于不同的区域。通常,Hbase根据其行键为度量分配区域。(opentsdb行键是度量、时间戳、标记键和标记值的组合)。尽管您可以使用hbase外壳手动拆分区域