Lösung für Big Data

Hadoop und SQL rücken enger zusammen

Dr. Jens Albrecht ist Professor an der Hochschule für angewandte Wissenschaften Würzburg-Schweinfurt (FHWS), Fakultät für Informatik und Wirtschaftsinformatik.
Sascha Alexander ist Manager Marketing & Kommunikation bei der QUNIS GmbH, Neubeuern, die auf Beratung und Projekte in der Business Intelligence, Big Data und Advanced Analytics spezialisiert ist. Zuvor war der Autor als Director Communications bei den Marktforschungs- und Beratungsunternehmen BARC und PAC tätig. Als ehemaliger Redakteur der COMPUTERWOCHE sowie Gründer und Chefredakteur des Portals und Magazins für Finanzvorstände CFOWORLD verbindet ihn zudem eine lange gemeinsame Zeit mit IDG.
Seine Themenschwerpunkte sind: Business Intelligence, Data Warehousing, Datenmanagement, Big Data, Advanced Analytics und BI Organisation.
Das Hadoop-Framework hat sich zu einem De-Facto-Standard für Big-Data-Anwendungen gemausert. Damit einher geht eine wachsende Bedeutung der Open-Source-Technik für den kommerziellen Datenbank-Markt.

Innovative Lösungen setzen die alteingesessenen Datenbankhersteller unter Druck, Hadoop mit ihren relationalen Datenbanksystemen zu verknüpfen. Klassische relationale Datenbanksysteme stoßen im Umfeld von Big Data vielfach an ihre Grenzen, denn große Datenbanken im Multi-Terabyte-Bereich erfordern schnellen Storage, leistungsstarke Server und damit meist auch viele CPU-Lizenzen. Als Ergänzung setzen Unternehmen deshalb inzwischen immer häufiger das Open-Source-Framework Hadoop ein. Apache Hadoop besteht im Kern aus zwei Komponenten:

  • dem verteilten und hochverfügbaren Hadoop File System (HDFS) und

  • MapReduce, einer Programmbibliothek für die parallele Verarbeitung der im HDFS abgelegten Dateien.

Hadoop - der neue Stern am Datenbankhimmel
Hadoop - der neue Stern am Datenbankhimmel
Foto: Apache.org

Stärken und Schwächen von Hadoop

Hinter MapReduce verbirgt sich grundsätzlich das Programmierparadigma, Rechenaufträge stark parallelisiert auf einer Vielzahl von Rechnerknoten abzuarbeiten. MapReduce basiert dabei im Kern auf Ideen von Google, das den Algorithmus ursprünglich dazu entwickelt hat, um einen eigenen Such-Index aus den Web-Inhalten zu erstellen. Ein wesentliches Ziel des Verfahrens ist die parallele Verarbeitung von Jobs auf einer Low-Cost-Hardware-Infrastruktur bestehend aus Standard-Servern. Neben der Skalierungsfähigkeit liegt der große Vorteil eines solchen Gesamtsystems in seiner Fehlertoleranz: Ausfälle einzelner Maschinen lassen sich jederzeit tolerieren und durch die anderen Rechner auffangen.

Allerdings werden bei der Hadoop-Implementierung für jeden Prozessschritt eigene Betriebssystemprozesse gestartet, so dass das Verfahren grundsätzlich etliche Sekunden Overhead benötigt. Sofern wie bei Google oder Yahoo viele Dateien im Batch gelesen und verarbeitet werden müssen, fällt dieser Overhead nicht ins Gewicht. Interaktive Analysen auf relationalen Datenbanken sind damit aber nicht möglich. Hadoop eignet sich daher zunächst nur für die Speicherung und Vorverarbeitung von Big Data. Für Business Intelligence auf polystrukturierten Daten im HDFS ist das Framework nicht ohne weiteres einsetzbar.

Im Kern sind MapReduce-Jobs Java-Programme. Allerdings bietet Hadoop mit der Zusatzsoftware "Hive" einen relationalen Wrapper. Hive übersetzt klassische SQL-Anfragen in MapReduce-Code und führt ihn aus. Ein Zugriff auf Hadoop via Open Database Connectivity (ODBC) und Java Database Connectivity (JDBC), den herkömmlichen Verbindungswegen in eine relationale Datenbank, ist damit prinzipiell möglich. Allerdings unterstützt Hive nur SQL-Basisfunktionen und arbeitet aufgrund der Verwendung des MapReduce-Frameworks ebenso Batch-orientiert.

Auch wenn Lizenz- und Hardware-Kosten für Hadoop auf den ersten Blick gering erscheinen, gilt es für Anwender, einige weitere Kostenfaktoren zu beachten. Sowohl beim Betrieb als auch für den Zugriff auf die Daten ist Spezialwissen erforderlich, das häufig extern eingekauft werden muss. Zudem fehlen in der Apache-Basisversion für den geschäftskritischen Betrieb notwendige Überwachungs- und Sicherheitsfunktionen. Kommerzielle Distributionen von Cloudera, Hortonworks oder IBM schaffen hier zwar Abhilfe, verursachen allerdings im Gegenzug Lizenz- und Wartungsgebühren, die den Kostenvorteil schrumpfen lassen.

Relationale Datenbanken und Hadoop verknüpfen

Trotz dieser Beschränkungen lassen sich echte Big-Data-Anwendungen (mehrere Terabyte und polystrukturierte Daten) ohne Hadoop kaum wirtschaftlich realisieren. Von daher ist es nicht verwunderlich, dass praktisch alle namhaften Anbieter im Datenbankmarkt das quelloffene Framework auf die eine oder andere Weise in ihr Produktportfolio einbinden. Ein Import-Export-Konnektor für den direkten Datenimport aus Hadoop kann heute bereits als Standard angesehen werden. Basis hierfür ist in der Regel die zu Hadoop gehörende Anwendung "Sqoop" oder eine entsprechende hersteller-spezifische Adaption.

Viele Datenbanksysteme bieten über sogenannte External Tables alternativ die Möglichkeit, über SQL auf Dateien zuzugreifen. Die Daten, die zum Beispiel in Form von Text-Dateien abgelegt sind, werden dabei nicht in die relationale Datenbank geladen. Stattdessen werden die Dateien als "External Tables" deklariert. Man nennt dieses Verfahren auch "Schema-on-Read", da dabei das relationale Schema lediglich als virtuelle Struktur über die Dateien gelegt wird und somit auch unterschiedliche Schemata für ein und dieselbe Text-Datei möglich sind. Diesen Mechanismus haben beispielsweise Oracle, Teradata Aster, EMC Greenplum und Microsoft implementiert.