16

如果有人对选择 HBase 作为 OpenTSDB 的数据存储引擎有所了解,我将不胜感激?

还考虑了哪些其他选择,例如 Whisper(Graphite 前端 + Carbon 持久性)?

面向列的数据库(例如 HBase)如何成为时间序列数据的更好选择?

4

1 回答 1

58

我选择 HBase 是因为它可以扩展。Whisper 很像 RRD,它是一个固定大小的数据库,它必须销毁数据才能在其空间限制内工作。HBase 提供以下特性,使其非常适合大型时间序列数据库:

  1. 线性缩放。 想要存储数据?添加更多节点。在我编写 OpenTSDB 的 StumbleUpon,我们的时间序列数据位于一个 20 节点的集群上,该集群主要用于分析和批处理。集群很快增长到 120 个节点,与此同时,仅占集群工作负载一部分的 OpenTSDB 增长到了半万亿个数据点。
  2. 自动复制。 您的数据存储在 HDFS 中,默认情况下意味着 3 个不同机器上的 3 个副本。如果机器或驱动器死了,没什么大不了的。当您构建商品服务器时,驱动器和机器总是会死机。但问题是:你真的不在乎。
  3. 高效扫描。 大多数时间序列数据用于回答诸如“时间 X 和 Y 之间的数据点是什么”之类的问题。如果你正确地构造你的键,你可以通过简单的扫描操作使用 HBase 非常有效地实现这一点。
  4. 高写入吞吐量。 HBase 遵循的Bigtable 设计使用LSM 树而不是 B 树,以降低写入成本(以可能更昂贵的读取为代价)。

HBase 是面向列的这一事实并不像它是一个真正可扩展的大型排序键值系统这一事实那样重要。

所有基于 RRD 和 RRD 派生的工具都无法满足能够以非常便宜的方式永久准确存储数十亿个数据点的规模要求(每个数据点只需几个字节的实际磁盘空间)。

于 2012-09-01T07:02:18.373 回答