Relationale Datenbanken an Hadoop und Co. anbinden

Apache Sqoop – SQL-Datenaustausch in Big-Data-Umgebungen

| Autor / Redakteur: Thomas Joos / Nico Litzel

Sqoop kann auf SQL-Datenbanken sowie auf Azure-SQL-Datenbanken in der Microsoft-Cloud zugreifen.
Sqoop kann auf SQL-Datenbanken sowie auf Azure-SQL-Datenbanken in der Microsoft-Cloud zugreifen. (Bild: T. Joos)

Apache Sqoop ist ein Datentransfer-Tool für Big-Data-Umgebungen, vor allem für Hadoop. Einer der größten Vorteile des Tools ist die Möglichkeit, Daten aus SQL-Datenbanken in NoSQL-Infrastrukturen zu übertragen. Ursprünglich war Sqoop als direkte Integration in Hadoop geplant, ist jetzt aber ein eigenständiges Apache-Projekt.

Sollen Daten zwischen SQL-Datenbanken und NoSQL-Infrastrukturen/Hadoop-Umgebungen ausgetauscht werden, kommen Entwickler kaum um Apache Sqoop herum. Bei Sqoop handelt es sich um ein Apache-Top-Level-Produkt, das heißt, das Produkt ist für den Einsatz in produktiven Umgebungen geeignet. In den meisten Big-Data-Umgebungen ist der Datenaustausch zwischen herkömmlichen relationalen Datenbanken und NoSQL oder Hadoop unerlässlich. Schon alleine aus diesem Grund lohnt sich ein Blick auf Sqoop.

Dazu kommt die Tatsache, dass auch in Zeiten von Big Data viele Berichte und Datenvisualisierungen noch über herkömmliche Datenbanken abgewickelt werden. Aus diesem Grund ist es notwendig, dass überarbeitete und ausgewertete Daten aus Hadoop in diese Tools importiert werden können, damit die Daten auswertbar sind. Auch hierbei hilft Sqoop.

Der Datenimport und -export lässt sich in beide Richtungen durchführen, also von der relationalen Datenbank zu Hadoop und von Hadoop zurück in die entsprechende Datenbank. Neben relationalen Datenbanken und dem Hadoop File System (HDFS) werden auch NoSQL-Datenbanken unterstützt. Die genaue Funktionsweise von Sqoop und viele Vorteile sind in dieser Präsentation zu sehen.

Funktionsweise von Apache Sqoop und Anbindung an die Cloud

Entwickler können Sqoop in eigene Infrastrukturen einbinden, aber auch in Cloudlösungen integrieren. Sqoop steht auch für HDInsight in Microsoft Azure zur Verfügung. Auch hier lassen sich Daten von relationalen Datenbanken in Hadoop integrieren.

Sqoop lässt sich problemlos an Microsoft SQL Server, MySQL und Oracle anbinden. Wenn die relationale Datenbank angebunden ist, kann Sqoop die Daten direkt in das Hadoop Distributed File System (HDFS) importieren. Anschließend werden die Daten mit MapReduce oder Hive transformiert und bearbeitet. Auch ein Export in das relationale Datenbanksystem ist möglich.

Setzen Unternehmen auf HDInsight und Microsoft Azure, kann Sqoop auch Azure-SQL-Datenbanken verwenden, um diese an HDInsight anzubinden. Die Daten werden in den Speicher von Hadoop importiert. Entwickler haben auch die Möglichkeit Sqoop über die PowerShell anzusprechen. Dazu gibt es in der PowerShell von Azure den Befehl New-AzureHDInsightSqoopJobDefinition.

Eine ausführliche Anleitung zur Erstellung eines Sqoop-Jobs über HDInsight ist in der Azure-Dokumentation zu lesen. Von O’Reilly können Administratoren das Apache Sqoop Cookbook als PDF herunterladen.

Apache Sqoop in Hadoop-Umgebungen integrieren

Apache Sqoop wird als Serverlösung integriert. Dazu müssen Administratoren auf dem entsprechenden Server Hadoop als Client installieren. Noch besser ist die Installation von Sqoop direkt im Hadoop-Cluster. Dadurch erhält die Lösung auch Zugriff auf Hadoop Core. Hadoop besteht aus mehreren Komponenten, die zusammenarbeiten. Grundlage ist „Hadoop Common“. Dieser Bereich stellt die Schnittstelle für alle anderen Bestandteile dar und verbindet Hadoop mit dem Dateisystem der Rechner. Außerdem enthält dieser Part die notwendigen Skripte und Bibliotheken für die Zusammenarbeit der Rechner im Cluster. Die Komponenten, Hadoop Common, HDFS und MapReduce, werden häufig auch als „Hadoop Core“ bezeichnet, da hier die Grundkomponenten zusammengefasst werden.

Der Datenaustausch zwischen SQL und NoSQL findet mit einem Oracle-JDBC-Treiber statt. Dieser muss in das System eingebunden werden. Danach lässt sich die Lösung konfigurieren. Die Entwickler stellen dazu eine umfangreiche Dokumentation zur Verfügung. Eine weitere Anleitung für die Installation und Einrichtung von Sqoop ist hier zu finden.

Der Hauptvorteil von Sqoop, ist die Verwendung von Connectoren. Diese unterstützen auch Plug-ins, welche wiederum die Anbindung mehrerer und neuer Systeme an die Infrastruktur gestatten.

Sqoop mit Hive, HBase, OOzie und Storm

Entwickler können auch Daten in Hive und HBase über Sqoop integrieren. Die NoSQL-Datenbank HBase steht auch über HDInsight zur Verfügung. HBase kann als Datenbank für Big-Data-Lösungen genutzt werden. Diese Technologie baut auf Google BigTable auf und kann sehr große Datenmengen speichern.

Storm gehört ebenfalls zu diesem Projekt und unter das Apache-Dach. Storm ist ein Echtzeitverarbeitungs-System, dass neben der Analyse von Daten auch die Ausgabe erlaubt, während die Berechnung im Hintergrund weiter läuft.

Der beste Weg, um große Daten zu analysieren, ist Hive, ein Open-Source-Data-Warehouse- und Analyse-Paket, welches auf Basis von Hadoop ausgeführt werden kann. Hive-Skripte verwenden eine SQL-ähnliche Sprache namens Hive QL. Mit dieser Sprache können Entwickler die Komplexität des Schreibens von MapReduce-Programmen in Java vermeiden. Entwickler können mit Hive direkt die Daten abfragen, die in HDFS gespeichert sind. Diese Möglichkeiten ergänzen sich nahezu perfekt mit Sqoop. Auch OOzie wird unterstützt, also die Hadoop-Erweiterung für das Erstellen von automatisierten Workflows in Hadoop. Damit können Sie Export- und Import-Vorgänge automatisieren und Zeitpläne für diese Vorgänge erstellen.

Fazit

Unternehmen, die Daten von relationalen Datenbanken an Hadoop anbinden wollen, kommen um Sqoop kaum herum. So gut wie jede Hadoop-Distribution und -Cloudlösung unterstützt Sqoop. Die wichtigsten relationalen Datenbanken lassen sich problemlos anbinden und der Datenaustausch ist ausgereift. Wer sich mit Big Data auseinandersetzt, sollte sich die Möglichkeiten von Sqoop ansehen. Viele Entwickler sind sich einig darüber, dass es keinen schnelleren und effizienteren Weg gibt, um Daten von SQL-Datenbanken in Hadoop einzubinden. Natürlich gibt es auch die Möglichkeit über Skripte Daten aus Datenbanken zu exportieren, allerdings ist das sehr aufwendig und wenig effizient.

Kommentare werden geladen....

Kommentar zu diesem Artikel abgeben

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 43252201 / Infrastruktur)