2012-08-31 4 views
16

Ich würde es wirklich schätzen, wenn jemand die Wahl von HBase als Datenspeicher-Engine für OpenTSDB beleuchten würde?Warum OpenTSDB wählte HBase für Zeitreihen Datenspeicher?

Welche anderen Optionen wie Whisper (Graphit-Front-End + Carbon Persistenz) wurden berücksichtigt?

Wie ist eine spaltenorientierte Datenbank wie HBase eine bessere Wahl für Zeitreihendaten?

Antwort

52

Ich wählte HBase, weil es Skalen skaliert. Whisper ist ähnlich wie RRD, es ist eine Datenbank fester Größe, es muss Daten zerstören, um innerhalb seiner Platzbeschränkungen zu arbeiten. HBase bietet die folgenden Eigenschaften, die es sehr gut für große Zeitreihendatenbanken geeignet machen:

  1. Lineare Skalierung. Möchten Sie Daten speichern? Fügen Sie weitere Knoten hinzu. Bei StumbleUpon, wo ich OpenTSDB geschrieben habe, wurden unsere Zeitreihendaten in einem Cluster mit 20 Knoten zusammengefasst, der hauptsächlich für die Analyse und Stapelverarbeitung verwendet wurde. Der Cluster wuchs relativ schnell auf 120 Knoten, und währenddessen wuchs OpenTSDB, das nur einen Bruchteil der Arbeitslast des Clusters ausmacht, auf eine halbe Billion Datenpunkte.
  2. Automatische Replikation. Ihre Daten werden in HDFS gespeichert, was standardmäßig 3 Replikate auf 3 verschiedenen Maschinen bedeutet. Wenn eine Maschine oder ein Antrieb stirbt, keine große Sache. Beim Erstellen von Commodity-Servern sterben Laufwerke und Maschinen ständig. Aber die Sache ist: Sie interessieren sich nicht wirklich.
  3. Effiziente Scans. Die meisten Zeitreihendaten werden verwendet, um Fragen wie "Was sind die Datenpunkte zwischen der Zeit X und Y" zu beantworten. Wenn Sie Ihre Schlüssel richtig strukturieren, können Sie dies sehr effizient mit HBase mit einem einfachen Scan-Vorgang implementieren.
  4. Hoher Schreibdurchsatz. Die Bigtable design, die HBase folgt, verwendet LSM trees anstelle von, sagen wir, B-Bäumen, um Schreibvorgänge billiger zu machen (auf Kosten von potenziell teureren Lesevorgängen).

Die Tatsache, dass HBase Säule war nicht annähernd so wichtig eine Überlegung wie die Tatsache ausgerichtet ist, dass es ein großer ist Schlüssel-Wert-System sortiert die wirklich skaliert.

Alle RRD-basierte und RRD abgeleiteten Instrumente könnten die Skalen Anforderungen in der Lage zu genau Speicher Milliarden und Milliarden von Datenpunkten immer für sehr günstig (nur ein paar Bytes der tatsächlichen Speicherplatz nicht erfüllen pro Datenpunkt).

+1

Große Antwort vom Designer von OpenTSDB. Danke, Tsuna! – David

+1

Erweitern Sie einfach diese Frage, warum haben Sie sich entschieden, ein neues Front-End zu schreiben, wenn wir bereits etwas so starkes wie Graphit haben ?. Warum haben Sie das Backend von Graphite nicht so erweitert, dass es TimeSeries-Daten in HBase speichert, statt zu flüstern? –

+2

Das Front-End spielt keine Rolle. Ich wollte ein integriertes Front-End, um die Abhängigkeiten zu minimieren und das Projekt eigenständig zu machen, aber letztendlich wollen wir nicht alle dazu zwingen, dieses Front-End zu verwenden, von dem ich weiß, dass es nicht besonders gut ist. Der große Ansporn für die nächste Feature-Version ist die Bereitstellung besserer APIs für die Integration mit Drittanbieter-Frontends, einschließlich Graphite. – tsuna