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

Raj*_*jan 16 hbase time-series opentsdb

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

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

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

tsu*_*una 55

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

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

HBase是面向列的事实并不是一个重要的事实,因为它是一个真正可扩展的大型有序键值系统.

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

  • 你如何比较OpenTSDB和kairosdb,这是一个重写OpenTSDB并支持HBase和Cassandra? (7认同)
  • OpenTSDB的设计师给出了很好的答案.谢谢,tsuna! (2认同)
  • 前端并不重要.我希望有一个内置的前端来最小化依赖关系并使项目自成一体,但最终我们不想强迫每个人都使用那个前端,我知道这不是特别好.对下一个功能版本的大力推动是提供更好的API以允许与第三方前端集成,包括Graphite. (2认同)