Die Data-Warehouse-Plattform von Hadoop

SQL mit NoSQL


Die von Unternehmen gesammelten und zu analysierenden Datenmengen wachsen rapide und machen konventionelle Business-Intelligence-Lösungen sehr teuer. Mit Apache Hive [1] auf Basis von Hadoop steht eine skalierbare Open-Source-Alternative zur Verfügung, mit der große Datenmengen verarbeitet werden können. Hive zeichnet sich durch eine ausdrucksstarke und erweiterbare Abfragesprache aus, die viele Gemeinsamkeiten mit SQL hat. Ein guter Grund, einen genaueren Blick zu wagen.

Das Apache-Hadoop-Projekt bietet zum einen das verteilte Dateisystem HDFS (Hadoop Distributed File System) und zum anderen eine MapReduce-Implementierung. Mit HDFS können riesige Datenmengen hochverfügbar gespeichert und verwaltet werden. Zur Verarbeitung dieser Daten im Computercluster dient MapReduce. Die Funktionsweise von MapReduce-Programmen und deren Entwicklung mit dem nativen Java-API wurde bereits im Java Magazin [2] vorgestellt. Eigentlich hätte man damit schon alles, was man für eine skalierbare Datenverarbeitung bräuchte, doch die Entwicklung der MapReduce-Programme ist relativ aufwändig. Für jede Abfrage müssen spezifische Programme geschrieben und später gewartet werden. Aus diesem Grund entstanden verschiedene High Level Query Languages (HLQLs) auf Basis von Hadoop MapReduce. Zu den bekanntesten HLQLs zählen Pig [3], JAQL [4] und natürlich Hive. Letztere wurde ursprünglich von Facebook aus den genannten Gründen entwickelt. Durch die Abstraktheit und Ausdrucksstärke der HLQLs wird der selbstzuschreibende Quellcode reduziert. Konkret bietet Hive den SQL-Dialekt HiveQL, mit dem ad hoc Abfragen formuliert werden können. Der SQL-92-Standard wird nicht vollständig unterstützt, dennoch ist HiveQL relational vollständig und mit den benutzerdefinierten Funktionen sogar Turing-vollständig [5]. Eine genaue Übersicht über Syntax und Funktionsumfang dieses SQL-Dialekts bietet das HiveQL Manual [6].

Logisches und physisches Datenmodell

Bevor Daten von Hive verarbeitet werden können, müssen sie importiert werden. Derzeit werden TEXTFILE, SEQUENCEFILE und RCFILE als Format unterstützt. Dateien dieser Formate werden im HDFS oder in anderen Hadoop-kompatiblen Dateisystemen, wie dem Amazon-S3-Dateisystem, gespeichert. Auf logischer Ebene sind die Daten in Relationen bzw. Tabellen organisiert. Hive verwendet verschiedene SerDes (Serializer/Deserializer), um Daten aus Tabellen zu lesen und zurück in Dateien im HDFS zu schreiben. Zusätzliche Formate können durch benutzerdefinierte SerDes unter...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang