为什么OpenTSDB选择HBase进行时间序列数据存储?

时间:2012-08-31 21:05:51

标签: hbase time-series opentsdb

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

还考虑了其​​他选择,例如Whisper(Graphite front-end + Carbon persistence)?

如果HBase这样的面向列的数据库如何成为时间序列数据的更好选择?

1 个答案:

答案 0 :(得分:55)

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

  1. 线性缩放。想要存储数据?添加更多节点。在StumbleUpon,我编写了OpenTSDB,我们的时间序列数据位于一个20节点集群上,主要用于分析和批处理。该集群相当快地增长到120个节点,同时OpenTSDB仅占集群工作负载的 tiny 部分,增长到万亿数据点的一半。
  2. 自动复制。您的数据存储在HDFS中,默认情况下,这意味着3台不同的计算机上有3个副本。如果机器或驱动器死亡,没什么大不了的。当您构建商用服务器时,驱动器和机器会一直死亡。但问题是:你并不在乎。
  3. 高效扫描。大多数时间序列数据用于回答类似“时间X和Y之间的数据点是什么”的问题。如果正确构造了密钥,则可以使用HBase通过简单的扫描操作非常有效地实现此功能。
  4. 高写入吞吐量。 HBase遵循的Bigtable design使用LSM trees代替B树,以降低写入成本(以牺牲潜在价格为代价)更贵的读物)。
  5. HBase是面向列的事实并不是一个重要因素,因为它是一个真正可扩展的大型排序键值系统。

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