Apache Kylin: OLAP im Big-Data-Maßstab

Seite 2: Architektur & Installation

Inhaltsverzeichnis

Der Einsatz von Kylin wird dadurch begünstigt, dass die Technik auf etablierten Systemen aus dem Hadoop-Ökosystem aufbaut. Das Zusammenspiel der Hadoop-Komponenten in Kylins Architektur stellt die folgende Abbildung dar. Dabei ist zwischen Offline- und Online-Datenfluss zu unterscheiden.

Kylin-Architektur mit Komponenten aus dem Hadoop-Ökosystem (Abb. 2)

Im Hadoop Distributed File System (HDFS) abgelegte Daten werden über Apache Hive als Sternschema modelliert. Im Offline-Datenfluss (blauer Pfad) greift die Cube Build Engine über Hive auf die Daten zu, um mit mehreren, hintereinander ausgeführten MapReduce-Jobs den OLAP-Cube zu generieren. Zusätzlich werden Metainformationen erstellt, die den Cube und die später möglichen Cube-Abfragen beschreiben. Für die Speicherung der Cuboids ist die NoSQL-Datenbank HBase verantwortlich. In der nichtrelationalen, spaltenorientierten und verteilten Datenbank werden die verschiedenen Aggregationen der Cuboids gespeichert und über das Cluster hinweg horizontal verteilt.

Nach der erfolgreichen Generierung des OLAP-Cubes und der Metainformationen stehen die Daten für Analysen zur Verfügung. Der Online-Datenfluss (grüner Pfad) beschreibt die Interaktion mit Kylin. Dabei werden SQL-Anfragen entweder direkt über die REST-Schnittstelle oder mithilfe der mitgelieferten JDBC-/ODBC-Treiber und einem SQL-basierten BI-Tool an den REST-Server gesendet. In der SQL-Query-Engine schreibt Apache Calcite die SQL-Abfrage um. Sind die angefragten Daten im HBase-Cube verfügbar, lassen sich die Queries mit Ausführungszeiten im (Sub-)Sekundenbereich beantworten. Das entspricht dem Low-Latency-Pfad in Abbildung 2 (grüner, durchgezogener Pfad).

Lässt sich die Anfrage nicht über den Cube beantworten, wird das SQL-Statement an Apache Hive weitergeleitet. Hierbei wandelt Hive die Query in MapReduce-Jobs um, deren Abarbeitung mit entsprechendem Overhead und Latenzen verbunden ist. Das entspricht dem Absolvieren der SQL-Anfrage im Mid-Latency-Pfad (grüner, gestrichelter Pfad). Je nach Datenmenge eignet sich der Vorgang nur eingeschränkt für interaktive Analysen. Das wesentliche Ziel besteht daher darin, für möglichst viele Abfragen der Nutzer den Low-Latency-Pfad bereitzustellen. Während des Cube-Designs sind aus diesem Grund die Anforderungen der Analysten bestmöglich zu berücksichtigen.

Voraussetzung für eine erfolgreiche Installation von Kylin ist eine fehlerfreie Konfiguration des Hadoop-Ökosystems. Auf jedem Knoten innerhalb des Clusters muss eine korrekte Funktionsweise von Apache Hadoop (ab Version 2.5), MapReduce mit aktiviertem JobHistory-Server, Apache Hive (ab 0.13.1), Apache HCatalog (ab 0.13.1) und Apache HBase (ab 0.98.6 bis < 1.0) mit Zookeeper (ab 3.4.5) sichergestellt sein. Um schnell erste Ergebnisse mit Kylin zu erreichen, wird eine Hadoop-Distribution wie Hortonworks (ab 2.2.0) oder Cloudera (ab 5.3.0) empfohlen.

Derzeit befindet sich Kylin in der Incubator-Version 1.0. Auf der Kylin-Webseite lässt sich das aktuelle Binärpaket herunterladen. Beim Download werden alle kompilierten Komponenten und ein aktueller Tomcat-Webserver bereitgestellt. Vor dem Starten von Kylin ist im Terminal eine neue Umgebungsvariable zu definieren:

export KYLIN_HOME=/absoluter/pfad/kylin-0.7.2-incubating

Zusätzlich ist nach diesem Schritt eine Überprüfung der Rechte notwendig. Der Benutzer braucht für die Generierung des Cubes Schreib- und Ausführrechte in Hadoop, HDFS, Hive und HBase. Kylin stellt für diese Überprüfung ein Shell-Skript zur Verfügung:

sh /bin/check_env.sh

Falls dem ausgewählten Benutzer Rechte fehlen, erhält er Informationen dazu. Sind die Rechte korrekt vergeben, lässt sich Kylin mit folgendem Aufruf starten:

bash bin/kylin start

Der Aufruf benötigt beim ersten Mal einige Zeit. Kylin überprüft nämlich, ob die HBase-Tabellen kylin_metadata, kylin_metadata_user und kylin_metadata_acl existieren. Diese werden benötigt, um Informationen zum Cube, User und seinen Rechten in Kylin zu definieren. Danach lässt sich Kylins Weboberfläche unter http://localhost:7070/kylin aufrufen. Der Standard-Benutzer lautet admin, das zugehörige Standard-Passwort KYLIN.

Die mit AngularJS erstellte Weboberfläche bietet dem Benutzer einem Einblick über die vorliegenden Funktionen in Kylin:

Weboberfläche von Kylin (Abb. 3)


Unter dem Tab "Query" kann der Benutzer SQL-Abfragen an den Cube senden. Eine Historie der der Abfragen bietet die Möglichkeit, zu einem späteren Zeitpunkt die Queries erneut auszuführen. Zudem lässt sich das Ergebnis in Form von Diagrammen darstellen. Das Feature ermöglicht bei der erstmaligen Benutzung von Kylin, das Überprüfen des Apache-Projekts auf Performanz und Tauglichkeit.

Wie der Name erahnen lässt, zeigt der Bereich "Cubes" alle Cubes eines Projekts an. Hier lassen sich neue Cube-Datenmodelle erstellen, Metainformationen darstellen und der Cube-Build-Prozess anstoßen.

Unter "Jobs" wird eine Auflistung aller aktiven oder durchgeführten Cube Builds angezeigt. Dabei werden grundlegende Informationen wie der letzte Modifizierungszeitpunkt, der Besitzer des Cubes und die Ausführungsdauer des Builds dargestellt. Zusätzlich lassen sich alle Schritte des Builds in einer detaillierten Ansicht anzeigen. Wie erwähnt, werden die in Hive befindlichen Daten in mehreren MapReduce-Jobs vorberechnet und in HBase als OLAP-Cube gespeichert. Zudem bietet Kylin die Möglichkeit, alle verwendeten MapReduce-Parameter, die dazugehörigen Logs, Informationen und Details des ausführenden MapReduce-Jobs aufzurufen. Bei einem Problem im Cube-Build-Prozess lässt sich daher genau überprüfen, an welcher Stelle der Prozess aus welchem Grund beendet wurde.

Unter dem Tab "Tables" befindet sich die Sync-Funktion. Sie teilt Kylin vor dem Erstellen eines Cubes mit, welche Tabellen und Spalten bei der Modellierung des Cubes zur Auswahl stehen. Im Tab "Admin" kann der Administrator Kylins Serverkonfiguration und Umgebungsvariablen überprüfen und bei Bedarf neu laden. Zusätzliche Optionen wie das Deaktivieren des Caches, das Aktualisieren der Metainformationen und Links zur Hadoop-Umgebung sind weitere Features der Weboberfläche.