OpenTSDB is a distributed, scalable Time Series Database (TSDB) written on top of HBase. OpenTSDB was written to address a common need: store, index, and serve metrics collected from computer systems (network gear, operating systems, applications) at a large scale, and make this data easily accessible and graphable. OpenTSDB is the first open-source monitoring system built[04][02]
- Website
- http://opentsdb.net[01]
- Source Code
- https://github.com/OpenTSDB/opentsdb[02]
- Country of Origin
- US
- Start Year
- 2010 [08]
- Project Type
- Open Source
- Written in
- Java
- Embeds / Uses
- HBase
- License
- LGPL v2
on an open-source distributed database.
OpenTSDB is written in Java because HBase, its embedding storage model, is written in Java.
OpenTSDB is a distributed, scalable Time Series Database (TSDB) written on top of HBase. OpenTSDB was written to address a common need: store, index, and serve metrics collected from computer systems (network gear, operating systems, applications) at a large scale, and make this data easily accessible and graphable. OpenTSDB is the first open-source monitoring system built on an open-source distributed database.
OpenTSDB is written in Java because HBase, its embedding storage model, is written in Java.[04][02]
History[05]
OpenTSDB was originally written by Benoit Sigoure in 2010 to monitor metrics of the StumbleUpon search engine which requires storing over 1 billion data points per day. StumbleUpon was in charge of the initial development and its open-source release. Yahoo! is currently maintaining OpenTSDB along with the open-source community.
Compression[06]
OpenTSDB uses Row Compaction to compress data. Whenever a cell is to be written, its row key is pushed into a compaction queue. There is a separate thread that periodically goes through the queue and aggregate data with the same key into a big cell. It then writes the big cell and deletes the individual cells in the queue. This process is effective because in HBase the row key is repeated for every single cell, and there is no way to efficiently append byte at the end of a cell.
At data level, OpenTSDB uses LZO compression algorithm.
With these two techniques, OpenTSDB is able to reduce the average size of one data point from 12 bytes to 2-3 bytes.
Concurrency Control[07]
OpenTSDB avoids multiple writers creating duplicate rows in the case of writer restart by making writes idempotent. It enforces a fixed timestamp boundary for each row. When a write reconnects to HBase, it will always write to the appropriate row according to the timestamp instead of creating new rows.
Citations
8 sources- OpenTSDB - A Distributed, Scalable Monitoring System opentsdb.net
- GitHub - OpenTSDB/opentsdb: A scalable, distributed Time Series Database. · GitHub github.com
- Documentation for OpenTSDB 2.4 — OpenTSDB 2.4 documentation opentsdb.net
- OpenTSDB - A Distributed, Scalable Monitoring System opentsdb.net
- FAQ - OpenTSDB - A Distributed, Scalable Monitoring System opentsdb.net
- opentsdb.net/misc/opentsdb-oscon.pdf at gh-pages · OpenTSDB/opentsdb.net · GitHub github.com
- http://opentsdb.net/misc/opentsdb-lspe-meetup.pdf opentsdb.net
- Initial (dummy) commit. github.com