Analysedaten für BI speichern und lesen Apache Druid – Datenspeicher mit geringen Latenzen

Autor / Redakteur: Thomas Joos / Nico Litzel

Apache Druid ist ein Open-Source-Analysespeicher, der Business-Intelligence-Abfragen von Ereignisdaten mit geringer Latenz ermöglicht. Echtzeitzugriffe sind genauso möglich wie eine schnelle Datenaggregation.

Apache Druid ist eine leistungsstarke Echtzeit-Analyse-Datenbank für große Datenmengen.
Apache Druid ist eine leistungsstarke Echtzeit-Analyse-Datenbank für große Datenmengen.
(Bild: T. Joos)

Apache Druid ist als Echtzeit-Analyse-Datenbank für große Datenmengen bekannt geworden. Der Fokus von Apache Druid liegt in der Leistung. Analysedaten sollen in Echtzeit verarbeitet werden können. Sinnvoll ist das zum Beispiel, wenn Schaubilder zur Verfügung gestellt werden sollen, bei denen Produktions- und andere Daten in Echtzeit angezeigt werden. Die Schaubilder reagieren sehr schnell, da Druid im Hintergrund die notwendigen Daten in kürzester Zeit abrufen kann. Ad-hoc-Abfragen sind mit Druid sehr performant möglich.

Apache Druid und Business Intelligence mit Data Warehouses

Apache Druid kann daher durchaus als Alternative zu herkömmlichen Data Warehouses genutzt werden. Druid hat seinen Schwerpunkt im Bereich von Ereignisdaten und Zeitreihen, kann aber auch andere Daten analysieren. Wo immer eine hohe Leistung bei der Analyse notwendig ist, kann der Betrieb von Druid sinnvoll sein.

In vielen Umgebungen wird Druid auch parallel zu Data Warehouses eingesetzt. Wo immer Echtzeit-Analyse, interaktive Oberflächen mit aktualisierenden Daten oder hochmoderne Abfrage-Apps im Einsatz sind, kann es sinnvoll sein, diese Daten aus Apache Druid zu beziehen. In einem solchen Szenario kann Druid wiederum seine Daten aus dem Data Warehouse erhalten, aufbereiten und zur Verfügung stellen. Das Data Warehouse kann parallel Berichte und Archivdaten zur Verfügung stellen.

Daten aus S3, Azure Data Lake und anderen Quellen integrieren

Die Datenbank konvertiert eingehende Daten in ein indiziertes Spaltenformat, das für OLAP-Anfragen optimiert ist. Die Datenbank unterstützt allerdings keinen In-Memory-Betrieb. Der Quellcode steht auf Github zur Verfügung. Druid unterstützt zahlreiche Datenquellen, auch in der Cloud. Beispiele dafür sind Amazon S3, Apache Kafka, Azure Event Hub, Amazon Kinesis, Google Cloud Storage, Azure Data Lake, lokale Daten und natürlich auch Daten aus Datenbanken sowie lokal gespeicherte Daten. Nach der Anbindung der Quelle liest Apache Druid diese ein und indexiert die Daten. Auch Hadoop wird von Druid unterstützt.

Einlesen von Daten in Apache Druid.
Einlesen von Daten in Apache Druid.
(Bild: T. Joos)

Wenn Echtzeit- und Streamingdaten an Druid angebunden werden, zum Beispiel über Apache Kafka, Kinesis oder Tranquility, analysiert Druid diese Daten auf Anforderung auch gleich in Echtzeit. Die Anzeige der Daten kann ebenfalls in Echtzeit erfolgen. Apache Druid kann mit Apache Hive und Apache Ambari integriert werden. Auch die Erstellung von OLAP-Cubes mit SQL oder das Abrufen bereits vorhandener Druid-Cubes ist im Rahmen der Echtzeitanalyse möglich. Weiterhin ist Replikation mit der Datenbank möglich, zum Beispiel über HDFS, S3 oder mit anderen Storage-Engines.

Es gibt verschiedene Möglichen, Abfragen in Druid durchzuführen, auch mit SQL.
Es gibt verschiedene Möglichen, Abfragen in Druid durchzuführen, auch mit SQL.
(Bild: T. Joos)

Einstieg in Druid

Grundsätzlich kann Apache Druid auch als Zeitreihendatenbank genutzt werden. Die mit Java entwickelte Datenbank kann lokal und in der Cloud zum Einsatz kommen. Installierbar ist Apache Druid in Linux/Unix und macOS. Da auch Docker-Container zur Verfügung stehen, ist es zudem möglich, Druid als Container zu betreiben. Zusammen mit dem Windows-Subsystem für Linux ist ein Betrieb von Druid als Container in Windows Server 2019/2022 und Windows 10 möglich.

Abfragen sind auch mit SQL möglich. Druid SQL nutzt einen SQL-Layer auf Basis von Apache Calcite. Der Parser und Planer von Apache Calcite wandelt die SQL-Abfragen in die Druid-native Form um. Abfrage sind dadurch sehr einfach möglich, genauso wie Abfragen für herkömmliche Abfragen, zum Beispiel von Microsoft SQL Server. Das bedeutet, dass SELECTs auch FROM, WHERE, GROUP BY, HAVING, ORDER BY, LIMIT, UNION ALL, EXPLAIN PLAN und Subqueries unterstützen.

Für einen Zugriff auf die Datenbank steht JDBC, aber auch RESTful HTTP/JSON-API bereit. Die Datenbank unterstützt verschiedene Programmiersprachen. Dazu gehören Clojure, JavaScript, PHP, Python, R, Ruby und Scala. Für Zugriffskontrolle können Berechtigungen auf Basis von LDAP eingerichtet werden.

Apache Druid testen: Installieren und starten

Apache Druid ist für den Betrieb in einem Cluster optimiert. Es ist für den Einstieg aber kein Problem, auch einen einzelnen Host für die Analyse zu verwenden. Eine anschließende Skalierung stellt kein Problem dar. Für erste Tests gehören auch Testdaten zum Lieferumfang, die indexiert und analysiert werden können.

Für die Installation auf Linux stehen die Installationsdateien bei Apache zur Verfügung (zur Installation wird Apache benötigt). Nach dem Download wird in das Verzeichnis der Installation gewechselt und der Quickstart-Assistent durchgeführt:

tar -xzf apache-druid-0.21.0-bin.tar.gzcd apache-druid-0.21.0./bin/start-micro-quickstart

Da Apache Druid auf Java aufbaut, muss Java auf dem Rechner verfügbar sein. Ob Java richtig konfiguriert ist, kann mit dem folgenden Befehl überprüft werden:

./bin/verify-java

Die installierte Java-Version zeigt Linux mit „java -version“ an. Apache Druid nutzt Java 8. Ist auf dem System eine neuere Version installiert, ist eine Systemvariable notwendig, die mit dem folgenden Befehl gesetzt wird:

Export DRUID_SKIP_JAVA_CHECK=1

Nach der Installation und dem Start steht die webbasierte Verwaltungskonsole zur Verfügung. Im Browser wird dazu die Adresse http://localhost:8888 eingegeben. Danach steht Druid zur Verfügung. Über den Assistenten ist es möglich, Datenquellen anzubinden, die Daten zu indexieren und für Abfragen zur Verfügung zu stellen.

Fazit

Wer im Unternehmen eine Datenbank braucht, die Daten in sehr schneller Zeit verarbeiten und analysieren soll, kann sich Apache Druid anschauen. Die Datenbank ist problemlos parallel zu bestehenden Analysesystemen und Data Warehouses einsetzbar. In diesem Fall kann das Einsatzgebiet darin bestehen, Ereignis- und Streamingdaten in Echtzeit zu analysieren. Die Datenbank ist schnell einsatzbereit und leicht skalierbar.

(ID:47493817)

Über den Autor

 Thomas Joos

Thomas Joos

Freiberuflicher Autor und Journalist