Definition Was ist Apache Druid?

Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Apache Druid ist eine Open Source Software, mit der sich ein High-Performance-Datenspeicher für Echtzeitanalysen realisieren lässt. Der Datenspeicher vereint Konzepte von Zeitreihendatenbanken und Data Warehouses. Es handelt sich um einen fehlertoleranten, spaltenorientiert arbeitenden, verteilten Datenspeicher. Typische Anwendungen sind im OLAP- und im Business-Intelligence-Umfeld zu finden.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Apache Druid ist der Name einer Open Source Software einer Echtzeitanalysedatenbank. Mithilfe der Software lässt sich ein verteilter High-Performance-Datenspeicher realisieren, der sich für die eventgetriebene Datenverarbeitung und für Echtzeitanalyse-Workloads eignet. Der Datenspeicher vereint Konzepte von Zeitreihendatenbanken (Time-Series Databases – TSDB) und Data Warehouses. Er arbeitet spaltenorientiert und ermöglicht Anwendungen, die sich mit klassischen Datenbanken, einfachen Zeitreihendatenbanken oder herkömmlichen Data Warehouses nicht ohne Weiteres realisieren lassen.

Die in Java geschriebene Software wurde im Jahr 2011 ursprünglich von Metamarkets entwickelt. 2012 wurde die Software unter GPL-Lizenz Open Source. 2015 erhielt sie schließlich eine Apache-2.0-Lizenz. Apache Druid hat sich mittlerweile im Umfeld der Echtzeitanalysen etabliert und eine große Community im Netz. Unternehmen wie Alibaba, Cisco, eBay, Netflix, PayPal, Twitter und viele mehr nutzen die Software für ihre Anwendungen. Zentrale Merkmale von Apache Druid sind die schnelle Aufnahme von großen Mengen ereignisgetriebener Daten in den Datenspeicher und schnelle Abfragen der gespeicherten Daten mit niedrigen Latenzzeiten.

Apache Druid arbeitet Stream- oder Batch-orientiert mit anderen Lösungen wie Apache Kafka, Amazon Kinesis, Apache Flink, Amazon S3 oder Apache Hadoop zusammen und eignet sich für strukturierte oder halb-strukturierte Daten. Das aktuelle Stable-Release (Stand Juni 2021) der Software ist die Version 0.21.1.

Funktionsprinzip und Architektur von Apache Druid

Apache Druid ist ein Datenspeicher, der Konzepte und Ideen von Zeitreihendatenbanken und Data Warehouses vereint. Er stellt eine High-Performance-Datenbank für Echtzeitanalysen zur Verfügung und ist vielseitig einsetzbar. Der Datenspeicher arbeitet spaltenorientiert und ist für Daten mit Zeitstempel optimiert. Es existieren drei grundsätzliche Arten von Spalten:

  • Zeitstempel-Spalten
  • Dimension-Spalten
  • Metrik-Spalten

Die Zeitstempel-Felder werden zur Partitionierung und zum Gruppieren der Daten verwendet. Die Dimension-Felder lassen sich über Filter abfragen. Metrik-Spalten sind optionale Felder, die aggregierte Daten weiterer Felder beinhalten können. Diese Art der Spaltenaufteilung sorgt für eine hohe Performance beim Partitionieren, Aggregieren, Filtern und Abfragen der Daten.

Die Architektur von Amazon Druid basiert auf Microservices, die in ihrer Gesamtheit den verteilten Datenspeicher repräsentieren. Die Microservices sind auf Standard-Hardware lauffähig. Nodes und Cluster bilden ein fehlertolerantes System. Die zentralen Services sind der Ingestion Service, der Storage Service und der Querying Service. Die Ressourcen des Systems lassen sich flexibel den Services zuteilen. Für die einzelnen Aufgaben sind Dienste wie Apache ZooKeeper zur Koordination, MySQL zur Speicherung von Metadaten oder HDFS beziehungsweise Amazon S3 als Deep Storage und Backup-Speicher integrierbar.

Der Ingestion Service ist für das Befüllen des Datenspeichers zuständig und unterstützt Streaming- und Batch-Ingestion. Streaming-Daten lassen sich beispielsweise über Apache Kafka einspielen, Batch-Daten beispielsweise über das Hadoop Distributed File System (HDFS). Der Querying-Service unterstützt Datenabfragen per SQL und JSON (über HTTP und JDBC).

Eine Datenabfrage kann folgendermaßen ablaufen: Ein Client oder eine Client-Anwendung wendet sich mit seinem Abfrage-Request an einen Broker Node. Dieser vermittelt den Request an den zuständigen Data Node. Abfrage-Requests können im Fall von partitionierten Daten auch an mehrere Nodes weitergeleitet werden. Die Broker Nodes haben entsprechende Kenntnisse, wo die Daten zu finden sind. Bevor die Antwort an den Client oder die Client-Anwendung ausgeliefert wird, aggregiert der Broker Node im Fall von verteilten Anfragen die Teilabfrageergebnisse der Nodes.

Anwendungsmöglichkeiten von Apache Druid

Apache Druid ist eine passende Lösung, wenn es um Echtzeitdatenanalysen geht. Der Datenspeicher lässt sich mit großen Datenmengen in Echtzeit befüllen, bietet eine hohe Abfrageperformance und arbeitet fehlertolerant mit hoher Verfügbarkeit. Er ist prädestiniert für das Speichern, Abfragen und Verarbeiten ereignisgetriebener Daten. Typische Anwendungen von Apache Druid sind:

  • OLAP- (Online Analytical Processing) und BI- (Business Intelligence) Anwendungen
  • Speicherung und Analyse von User-, Server- und Web-Metriken
  • Anwendungen für digitales Marketing
  • Tracking-Anwendungen für das A/B-Testing
  • Anwendungen zur Analyse und zum Monitoring der Netzwerk- oder Anwendungsperformance
  • Analyseanwendungen von Netzwerk-Flows
  • Clickstream-Analyseanwendungen
  • Monitoring und Analyse von Lieferketten und Produktionsprozessen
  • Anwendungen im Internet der Dinge (IoT)

Vorteile von Apache Druid

Aufgrund der spaltenorientierten Arbeitsweise, der intelligenten Partitionierung und der speziellen Indexierung lassen sich Daten sehr performant gruppieren, filtern und durchsuchen. Das Befüllen des Datenspeichers ist mit großen Datenmengen sowohl Batch- als auch Streaming-basiert mit geringer Latenz möglich. Es existierten direkt nutzbare Konnektoren für Lösungen wie Apache Kafka, Amazon S3 oder das Hadoop Distributed File System. Darüber hinaus unterstützt Apache Druid Abfragen per SQL oder JSON (über HTTP und JDBC). Weitere Vorteile von Apache Druid sind:

  • einfach zu betreibender, fehlertoleranter Datenspeicher mit hoher Verfügbarkeit
  • gute Skalierbarkeit
  • einfache Integration in existierende Daten-Pipelines
  • Unterstützung von strukturierten und semi-strukturierten Daten sowie verschiedenen Datenformaten
  • für das Cloud Computing in privaten, öffentlichen und hybriden Cloud-Umgebungen geeignet
  • für Standard-Hardware und On-premises-Umgebungen geeignet

(ID:47552231)

Über den Autor