为什么OpenTSDB选择HBase作为时间序列数据存储



如果有人能阐明HBase作为OpenTSDB的数据存储引擎的选择,我将不胜感激?

考虑了其他哪些选择,如Whisper(石墨前端+碳持久性)?

像HBase这样的面向列的数据库是如何更好地选择时间序列数据的?

我选择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的工具都无法满足以非常便宜的价格(每个数据点只有几个字节的实际磁盘空间)准确地永远存储数十亿个数据点的规模要求。

最新更新