So finden Sie die richtige SQL-on-Hadoop-Engine für den Zugriff auf Big Data

Auf der Suche nach SQL-on-Hadoop-Engines gibt es mittlerweile eine enorm große Auswahl. Der Funktionsumfang variiert allerdings beträchtlich.

In der Welt von Hadoop und NoSQL liegt der Fokus derzeit verstärkt auf SQL-on-Hadoop-Engines. Allerdings gibt es heutzutage bereits so viele unterschiedliche Engines, dass Unternehmen die Entscheidung immer schwerer fällt. In diesem Beitrag finden Sie daher einige wichtige Anforderungen, die Sie bei der Wahl Ihrer Engine berücksichtigen sollten.

Rick van der Lans

SQL-on-Hadoop-Technologien ermöglichen Ihnen den Zugriff auf in Hadoop gespeicherte Datenmengen (Big Data), und zwar mit der Ihnen vertrauten Sprache SQL. Anwender können somit fast jedes gängige Reporting- oder Analyse-Tool verwenden, um die Daten zu untersuchen und zu analysieren. Vor SQL-on-Hadoop war der Zugriff auf Big Data einigen wenigen Programmen vorbehalten und Sie mussten sehr gute technische Fachkenntnisse bezüglich der Programmierschnittstellen (Application Programming Interface, API) mitbringen, um mit den Daten arbeiten zu können. Dazu gehören beispielsweise APIs für Hadoop Distributed File System, MapReduce oder HBase. Dank SQL-on-Hadoop kann nun jeder mit seinem Lieblings-Tool arbeiten. Für Unternehmen bedeutet das, dass Big Data einem wesentlich größeren Nutzer-Kreis zur Verfügung steht, womit sich die Investitionen in Big Data höchstwahrscheinlich effizienter nutzen lassen.

Die erste SQL-on-Hadoop-Engine war Apache Hive. Binnen der letzten zwölf Monate wurden allerdings viele weitere veröffentlicht, beispielsweise CitusDB, Cloudera Impala, Concurrent Lingual, Hadapt, InfiniDB, JethroData, MammothDB, Apache Drill, MemSQL, Pivotal HawQ, Progress DataDirect, ScleraDB, Simba und Splice Machine.

Zusätzlich zu diesen Implementierungen sollten auch alle Daten-Virtualisierungs-Server enthalten sein, weil sie ebenfalls SQL-Zugriff auf Hadoop-Daten ermöglichen. Tatsächlich wurden sie für alle möglichen Daten-Quellen entwickelt, also auch für Hadoop, und ermöglichen so die Integration unterschiedlichster Daten-Quellen. Beispiele von Daten-Virtualisierungs-Servern wären Cirro Data Hub, Cisco/Composite Information Server, Denodo Platform, Informatica Data Services, Red Hat JBoss Data Virtualization und Stone Bond Enterprise Enabler Virtuoso.

Natürlich gibt es auch einige SQL-Datenbank-Management-Systeme (DBMS), die polyglotte Beständigkeit (polyglot presistence) unterstützen. Das bedeutet, dass sich diese Daten in ihrer nativen SQL-Datenbank oder in Hadopp speichern lassen, wodurch sie ebenfalls SQL-Zugriff auf Hadoop-Daten bieten. Beispiele hierfür wären EMC/Greenplum UAP, HP Vertica (on MapR), Microsoft PolyBase, Actian ParAccel und Teradata Aster Database (via SQL-H).

Die Qual der Wahl: Darauf sollten Sie bei SQL-on-Hadoop-Engines achten

Anders gesagt haben Unternehmen bezüglich SQL-on-Hadoop-Engines die Qual der Wahl. Welcher Plattform sollte man nun den Vorzug geben? Sind sich die inzwischen erhältlichen Lösungen alle so ähnlich, dass es egal ist wofür Sie sich entscheiden?

Tatsächlich macht es sehr wohl einen Unterschied, da diese Technologien keineswegs gleich aufgebaut sind. Äußerlich mögen Sie sich zwar sehr ähnlich sehen, intern aber gibt es massive Unterschiede. Zum Beispiel weiß CitusDB ganz genau, wo alle Daten gespeichert sind. Die Software nutzt diese Kenntnisse, um auf die Daten so effizient wie möglich zuzugreifen. JethroData dagegen greift mithilfe von Indizes direkt auf die Daten zu. Splice Machine wiederum bietet eine SQL-Schnittstelle mit Transaktions-Funktionen.

Die richtige Wahl bezüglich SQL-on-Hadoop-Technologie zu treffen setzt gründliche Recherche voraus. Für den Anfang sollten Sie vor einer Entscheidung die nachfolgenden Anforderungen evaluieren.

SQL-Dialekt: Je größer die Unterstützung für den SQL-Dialekt ist, desto mehr Applikationen profitieren davon. Je mächtiger der Dialekt ist, desto mehr Abfrage-Prozesse können Sie durch Hadoop schicken und die entsprechenden Anwendungen und Reporting-Tools müssen weniger Arbeit verrichten.

Joins: So genannte Joins in Bezug auf große Tabellen schnell und effizient auszuführen ist nicht immer ein einfaches Unterfangen, vor allem wenn dieSQL-on-Hadoop-Engine nicht weiß, wo die Daten gespeichert sind. Führen Sie Join-Prozesse ineffizient aus, kann das zu sehr viel I/O und massivem Datenaustausch zwischen Nodes führen. Das resultiert dann höchstwahrscheinlich in  schlechter Performance.

Unkonventionelle Daten: Ursprünglich wurde SQL entwickelt, um in sehr hohem Maße strukturierte Daten zu verarbeiten. Jeder Eintrag in einer Tabelle hat die gleiche Anzahl an Spalten und jede Spalte besitzt einen Eintrag. Nicht alle in Hadoop gespeicherten Daten folgen aber dieser traditionellen Struktur. Hadoop-Dateien können eingebettete Daten, variable Daten mit hierarchischen Strukturen, Daten ohne Schema und selbst-beschreibende Daten enthalten. Eine SQL-on-Hadoop-Engine muss mit all diesen Formen umgehen und sie in flache relationale Daten umwandeln können. Auch die Optimierung der Datenbank-Abfragen ist essenziell.

Storage-Format: Hadoop unterstützt einige „Standard“-Storage-Formate bezüglich der Daten. Dazu gehören zum Beispiel Parquet, Avro und ORCFile. Je mehr SQL-on-Hadoop-Technologien diese Formate verwenden, desto mehr Tools und andere SQL-on-Hadoop-Engines können dieselben Daten verwenden. Das minimiert die Notwendigkeit enorm, die Daten replizieren zu müssen. Deswegen ist eine Prüfung wichtig, ob ein proprietäres Storage-Format in Verwendung ist.

Benutzer-definierte Funktionen: Wollen SieSQL für das Ausführen komplexer und analytischer Funktionen wie etwa Gaussian Discriminative Analysis und Warenkorb-Analysen verwenden, muss das natürlich von SQL unterstützt sein oder sich zumindest entwickeln lassen. Solche Funktionen nennt man UDFs (User-defined Functions). Deswegen ist es wichtig, dass die SQL-on-Hadoop-Engine das Ausführen der UDFs auf so viele Nodes und Datenträger wie möglich verteilen kann.

Multi-User Workloads: Es muss Ihnen möglich sein Parameter zu setzen, mit der Sie bestimmen können, wie die Engine die Ressourcen auf die verschiedenen Abfragen verteilen soll. Zum Beispiel könnten Abfragen von verschiedenen Applikationen unterschiedliche Priorität genießen. Haben einige Abfragen eine lange Laufzeit, dann sollten Sie weniger Priorität besitzen als einfache und gleichzeitig ablaufende Abfragen. Ungeplante und Ressourcen-fressende Abfragen wiederum müssen sich anhalten oder temporär unterbrechen lassen, wenn sie zu viele Betriebsmittel beschlagnahmen. SQL-on-Hadoop-Engines brauchen also intelligente und fortgeschrittene Workload-Manager.

Zusammenführung von Daten: Nicht alle Daten sind in Hadoop gespeichert. Die meisten Unternehmens-Daten befinden sich immer noch in anderen Daten-Quellen wie zum Beispiel SQL-Datenbanken. Eine SQL-on-Hadoop-Engine muss verteilte Joins bezüglich Daten unterstützen, die in allen möglichen Daten-Quellen beheimatet sind. Anders ausgedrückt muss die Zusammenführung der Daten unterstützt werden.

Es würde mich nicht überraschen, wenn jede Firma, die Hadoop im Einsatz hat, irgendwann eine oder sogar mehrere SQL-on-Hadoop-Engines einsetzt. Sollten Sie mit dieser Technologie liebäugeln, sind die in diesem Beitrag aufgelisteten Anforderungen ein guter Ausgangspunkt.

Über den Autor: Rick van der Lans ist unabhängiger Consultant, Redner und Autor. Er ist Spezialist in den Bereichen Data Warehousing, Business Intelligence, Datenbank-Technologien und Daten-Virtualisierung. Zudem ist er Geschäftsführer und Gründer der R20/Consultancy. Sie erreichen ihn unter rick@r20.nl.

Folgen Sie SearchEnterprise.de auch auf Facebook, Twitter und Google+!

Artikel wurde zuletzt im Mai 2014 aktualisiert

Pro+

Premium-Inhalte

Weitere Pro+ Premium-Inhalte und andere Mitglieder-Angebote, finden Sie hier.

Diskussion starten

Schicken Sie mir eine Nachricht bei Kommentaren anderer Mitglieder.

Mit dem Absenden dieser Daten erklären Sie sich bereit, E-Mails von TechTarget und seinen Partnern zu erhalten. Wenn Ihr Wohnsitz außerhalb der Vereinigten Staaten ist, geben Sie uns hiermit Ihre Erlaubnis, Ihre persönlichen Daten zu übertragen und in den Vereinigten Staaten zu verarbeiten. Datenschutz

Bitte erstellen Sie einen Usernamen, um einen Kommentar abzugeben.

- GOOGLE-ANZEIGEN

SearchSecurity.de

SearchStorage.de

SearchNetworking.de

SearchDataCenter.de

Close