Apache Sqoop Tutorial - Importieren / Exportieren von Daten zwischen HDFS und RDBMS

Apache Sqoop Tutorial: Sqoop ist ein Tool zum Übertragen von Daten zwischen Hadoop- und relationalen Datenbanken. Dieser Blog behandelt den Import und Export von Sooop aus MySQL.

Bevor wir mit diesem Apache Sqoop-Tutorial beginnen, machen wir einen Schritt zurück. Können Sie sich an die Bedeutung der Datenaufnahme erinnern, wie wir sie in unserem früheren Blog am besprochen haben? Apache Flume . Wie wir wissen, ist Apache Flume ein Tool zur Datenerfassung für unstrukturierte Quellen, aber Organisationen speichern ihre Betriebsdaten in relationalen Datenbanken. Es bestand daher ein Bedarf an einem Tool, mit dem Daten aus relationalen Datenbanken importiert und exportiert werden können. Deshalb wurde Apache Sqoop geboren. Sqoop kann problemlos in Hadoop integriert werden und strukturierte Daten aus relationalen Datenbanken in HDFS sichern, was die Leistungsfähigkeit von Hadoop ergänzt. Deshalb, erfordert fundierte Kenntnisse von Apache Sqoop und Flume.

Ursprünglich wurde Sqoop von Cloudera entwickelt und gewartet. Später, am 23. Juli 2011, wurde es von Apache inkubiert. Im April 2012 wurde das Sqoop-Projekt zum Top-Level-Projekt von Apache befördert.



In diesem Apache Flume-Tutorial-Blog werden wir Folgendes behandeln:

Wir beginnen dieses Apache Sqoop-Tutorial mit der Einführung von Apache Sqoop. Anschließend werden wir die Vorteile der Verwendung von Apache Sqoop verstehen.

Apache Sqoop Tutorial: Sqoop Einführung

Apache Sqoop - Apache Sqoop Tutorial - EdurekaIm Allgemeinen interagieren Anwendungen mithilfe von RDBMS mit der relationalen Datenbank. Daher sind relationale Datenbanken eine der wichtigsten Quellen, die Big Data generieren. Solche Daten werden in RDB-Servern in der relationalen Struktur gespeichert. Hier spielt Apache Sqoop eine wichtige Rolle in Bereitstellung einer möglichen Interaktion zwischen dem relationalen Datenbankserver und HDFS.

Apache Sqoop ist also ein Werkzeug in welches entworfen ist, um Daten zwischen zu übertragen HDFS (Hadoop-Speicher) und relationale Datenbankserver wie MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres usw. Apache Sqoop importiert Daten aus relationalen Datenbanken in HDFS und exportiert Daten aus HDFS in relationale Datenbanken. Es überträgt effizient Massendaten zwischen Hadoop und externen Datenspeichern wie Enterprise Data Warehouses, relationalen Datenbanken usw.

So erhielt Sqoop seinen Namen - “ SQ L zu hatte öffnen & Hadoop to SQL ”.

Darüber hinaus wird Sqoop verwendet, um Daten aus externen Datenspeichern in die Tools des Hadoop-Ökosystems zu importieren Bienenstock & HBase .

Nun, wie wir wissen, was Apache Sqoop ist. Lassen Sie uns also in unserem Apache Sqoop-Tutorial fortfahren und verstehen, warum Sqoop von Organisationen häufig verwendet wird.

Apache Sqoop Tutorial: Warum Sqoop?

Für Hadoop-Entwickler beginnt das eigentliche Spiel, nachdem die Daten in HDFS geladen wurden. Sie spielen mit diesen Daten, um verschiedene Erkenntnisse zu gewinnen, die in den in HDFS gespeicherten Daten verborgen sind.

Für diese Analyse müssen die Daten in den relationalen Datenbankverwaltungssystemen an HDFS übertragen werden. Die Aufgabe des Schreibens Code zum Importieren und Exportieren von Daten aus der relationalen Datenbank in HDFS ist uninteressant und langwierig. Hier kommt Apache Sqoop, um ihre Schmerzen zu retten und zu beseitigen. Es automatisiert den Prozess des Importierens und Exportierens der Daten.

Sqoop erleichtert Entwicklern das Leben, indem es eine CLI zum Importieren und Exportieren von Daten bereitstellt. Sie müssen lediglich grundlegende Informationen wie Datenbankauthentifizierung, Quelle, Ziel, Vorgänge usw. bereitstellen. Der verbleibende Teil wird erledigt.

Sqoop konvertiert den Befehl intern in MapReduce-Tasks, die dann über HDFS ausgeführt werden. Es verwendet das YARN-Framework zum Importieren und Exportieren der Daten, was zusätzlich zur Parallelität eine Fehlertoleranz bietet.

In diesem Sqoop Tutorial-Blog werden wir die wichtigsten Funktionen von Sqoop verstehen und dann zur Apache Sqoop-Architektur übergehen.

Apache Sqoop Tutorial: Hauptmerkmale von Sqoop

Sqoop bietet viele herausragende Funktionen wie:

  1. Volle Ladung : Apache Sqoop kann die gesamte Tabelle mit einem einzigen Befehl laden. Sie können auch alle Tabellen mit einem einzigen Befehl aus einer Datenbank laden.
  2. Inkrementell Belastung : Apache Sqoop bietet auch die Möglichkeit des inkrementellen Ladens, bei dem Sie Teile der Tabelle bei jeder Aktualisierung laden können.
  3. Parallel Import Export : Sqoop verwendet das YARN-Framework zum Importieren und Exportieren der Daten, wodurch zusätzlich zur Parallelität eine Fehlertoleranz bereitgestellt wird.
  4. Importieren Ergebnisse von SQL Abfrage : Sie können das von einer SQL-Abfrage zurückgegebene Ergebnis auch in HDFS importieren.
  5. Kompression : Sie können Ihre Daten komprimieren, indem Sie den Deflate-Algorithmus (gzip) mit dem Argument –compress verwenden oder das Argument –compression-codec angeben. Sie können auch eine komprimierte Tabelle in laden Apache Hive .
  6. Anschlüsse zum alle Haupt RDBMS Datenbanken : Apache Sqoop bietet Konnektoren für mehrere RDBMS-Datenbanken, die fast den gesamten Umfang abdecken.
  7. Kerberos Sicherheit Integration : Kerberos ist ein Authentifizierungsprotokoll für Computernetzwerke, das auf der Grundlage von Tickets arbeitet, damit Knoten, die über ein nicht sicheres Netzwerk kommunizieren, ihre Identität untereinander auf sichere Weise nachweisen können. Sqoop unterstützt die Kerberos-Authentifizierung.
  8. Belastung Daten direkt in HIVE / HBase : Sie können Daten direkt in laden Apache Hive zur Analyse und sichern Sie Ihre Daten in HBase, einer NoSQL-Datenbank.
  9. Unterstützung zum Akkumulation : Sie können Sqoop auch anweisen, die Tabelle in Accumulo anstelle eines Verzeichnisses in HDFS zu importieren.

Die Architektur bietet Apache Sqoop diese Vorteile. Nachdem wir nun die Funktionen von Apache Sqoop kennen, wollen wir die Architektur und Funktionsweise von Apache Sqoop verstehen.

Apache Sqoop Tutorial: Sqoop Architektur & Arbeiten

Lassen Sie uns anhand des folgenden Diagramms verstehen, wie Apache Sqoop funktioniert:

pmi-acp lohnt sich

Das Import-Tool importiert einzelne Tabellen aus RDBMS in HDFS. Jede Zeile in einer Tabelle wird in HDFS als Datensatz behandelt.

Wenn wir den Befehl Sqoop senden, wird unsere Hauptaufgabe in Unteraufgaben unterteilt, die von einzelnen Map-Aufgaben intern ausgeführt werden. Map Task ist die Unteraufgabe, die einen Teil der Daten in das Hadoop-Ökosystem importiert. Zusammen importieren alle Kartenaufgaben die gesamten Daten.

In ähnlicher Weise funktioniert auch der Export.

Das Export-Tool exportiert eine Reihe von Dateien aus HDFS zurück in ein RDBMS. Die als Eingabe für Sqoop angegebenen Dateien enthalten Datensätze, die in der Tabelle als Zeilen aufgerufen werden.

Wenn wir unseren Job senden, wird er Map-Aufgaben zugeordnet, die den Datenblock von HDFS übertragen. Diese Chunks werden in ein strukturiertes Datenziel exportiert. Durch die Kombination all dieser exportierten Datenblöcke erhalten wir die gesamten Daten am Zielort, bei dem es sich in den meisten Fällen um ein RDBMS (MYSQL / Oracle / SQL Server) handelt.

Bei Aggregationen ist eine Reduzierungsphase erforderlich. Apache Sqoop importiert und exportiert jedoch nur die Daten und führt keine Aggregationen durch. Kartenjob startet mehrere Mapper abhängig von der vom Benutzer definierten Anzahl. Für den Sqoop-Import wird jeder Mapper-Aufgabe ein Teil der zu importierenden Daten zugewiesen. Sqoop verteilt die Eingabedaten gleichmäßig auf die Mapper, um eine hohe Leistung zu erzielen. Anschließend stellt jeder Mapper mithilfe von JDBC eine Verbindung mit der Datenbank her, ruft den von Sqoop zugewiesenen Teil der Daten ab und schreibt ihn basierend auf den in der CLI angegebenen Argumenten in HDFS oder Hive oder HBase.

Nachdem wir die Architektur und Funktionsweise von Apache Sqoop verstanden haben, wollen wir den Unterschied zwischen Apache Flume und Apache Sqoop verstehen.

Apache Sqoop Tutorial: Flume vs Sqoop

Der Hauptunterschied zwischen Flume und Sqoop besteht darin, dass:

  • Flume nimmt nur unstrukturierte oder halbstrukturierte Daten in HDFS auf.
  • Während Sqoop strukturierte Daten aus RDBMS- oder Enterprise-Data-Warehouses nach HDFS importieren und exportieren kann oder umgekehrt.

In unserem Apache Sqoop-Tutorial ist es jetzt höchste Zeit, die Apache Sqoop-Befehle durchzugehen.

Apache Sqoop Tutorial: Sqoop-Befehle

  • Sqoop - IMPORT-Befehl

Der Importbefehl wird zum Importieren einer Tabelle aus relationalen Datenbanken in HDFS verwendet. In unserem Fall werden wir Tabellen aus MySQL-Datenbanken in HDFS importieren.

Wie Sie im folgenden Bild sehen können, haben wir eine Mitarbeitertabelle in der Mitarbeiterdatenbank, die wir in HDFS importieren werden.

Der Befehl zum Importieren einer Tabelle lautet:

sqoop import --connect jdbc: mysql: // localhost / employee --Benutzername edureka --table employee

Wie Sie im folgenden Bild sehen können, werden nach Ausführung dieses Befehls Map-Tasks am Backend ausgeführt.

Nachdem der Code ausgeführt wurde, können Sie die Web-Benutzeroberfläche von HDFS überprüfen, d. H. Localhost: 50070, in das die Daten importiert werden.

  • Sqoop - IMPORT-Befehl mit Zielverzeichnis

Sie können die Tabelle auch mit dem folgenden Befehl in ein bestimmtes Verzeichnis in HDFS importieren:

sqoop import --connect jdbc: mysql: // localhost / employee --Benutzername edureka --table employee --m 1 --target-dir / employee

Sqoop importiert Daten parallel aus den meisten Datenbankquellen. -m Mit property wird die Anzahl der auszuführenden Mapper angegeben.

Sqoop importiert Daten parallel aus den meisten Datenbankquellen. Sie können die Anzahl der Kartenaufgaben (parallele Prozesse) angeben, die zum Ausführen des Imports verwendet werden sollen -m oder –Num-Mapper Streit. Jedes dieser Argumente nimmt einen ganzzahligen Wert an, der dem Grad der zu verwendenden Parallelität entspricht.

Sie können die Anzahl der Mapper unabhängig von der Anzahl der im Verzeichnis vorhandenen Dateien steuern. Die Exportleistung hängt vom Grad der Parallelität ab. Standardmäßig verwendet Sqoop vier Aufgaben parallel für den Exportvorgang. Dies ist möglicherweise nicht optimal. Sie müssen mit Ihrem eigenen Setup experimentieren. Zusätzliche Aufgaben bieten möglicherweise eine bessere Parallelität. Wenn die Datenbank jedoch bereits beim Aktualisieren von Indizes, Aufrufen von Triggern usw. einen Engpass aufweist, kann eine zusätzliche Auslastung die Leistung beeinträchtigen.

Sie können im folgenden Bild sehen, dass die Anzahl der Mapper-Aufgaben 1 beträgt.

Die Anzahl der Dateien, die beim Importieren von MySQL-Tabellen erstellt werden, entspricht der Anzahl der erstellten Mapper.

  • Sqoop - IMPORT-Befehl mit Where-Klausel

Sie können eine Teilmenge einer Tabelle mithilfe der where-Klausel im Sqoop-Importtool importieren. Es führt die entsprechende SQL-Abfrage auf dem jeweiligen Datenbankserver aus und speichert das Ergebnis in einem Zielverzeichnis in HDFS. Mit dem folgenden Befehl können Sie Daten mit ' wo Klausel:

sqoop import --connect jdbc: mysql: // localhost / employee --Benutzername edureka --table employee --m 3 --where 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - Inkrementeller Import

Sqoop bietet einen inkrementellen Importmodus, mit dem nur Zeilen abgerufen werden können, die neuer sind als einige zuvor importierte Zeilen. Sqoop unterstützt zwei Arten von inkrementellen Importen: anhängen und zuletzt bearbeitet . Mit dem Argument –incremental können Sie den Typ des auszuführenden inkrementellen Imports angeben.

Sie sollten angeben anhängen Modus beim Importieren einer Tabelle, in der ständig neue Zeilen mit zunehmenden Zeilen-ID-Werten hinzugefügt werden. Sie geben die Spalte mit der Zeilen-ID mit an –Prüfspalte . Sqoop importiert Zeilen, in denen die Prüfspalte einen Wert hat, der größer ist als der mit –Letzter Wert .

Eine von Sqoop unterstützte alternative Strategie zur Tabellenaktualisierung wird aufgerufen zuletzt bearbeitet Modus. Sie sollten dies verwenden, wenn Zeilen der Quelltabelle möglicherweise aktualisiert werden und bei jeder solchen Aktualisierung der Wert einer zuletzt geänderten Spalte auf den aktuellen Zeitstempel gesetzt wird.

Wenn Sie einen nachfolgenden Import ausführen, sollten Sie angeben –Letzter Wert Auf diese Weise stellen Sie sicher, dass Sie nur die neuen oder aktualisierten Daten importieren. Dies wird automatisch erledigt, indem ein inkrementeller Import als gespeicherter Job erstellt wird. Dies ist der bevorzugte Mechanismus für die Durchführung eines wiederkehrenden inkrementellen Imports.

Zuerst fügen wir eine neue Zeile ein, die in unserem HDFS aktualisiert wird.

Der Befehl für den inkrementellen Import lautet:

sqoop import --connect jdbc: mysql: // localhost / employee --Benutzername edureka --table employee --target-dir / Latest_Employees - inkrementelles Anhängen --check-column emp_no --last-value 499999

Im folgenden Bild sehen Sie, dass mit den aktualisierten Daten eine neue Datei erstellt wird.

  • Sqoop - Alle Tabellen importieren

Sie können alle Tabellen vom RDBMS-Datenbankserver in das HDFS importieren. Alle Tabellendaten werden in einem separaten Verzeichnis gespeichert und der Verzeichnisname entspricht dem Tabellennamen. Jede Tabelle in dieser Datenbank muss über ein Primärschlüsselfeld verfügen. Der Befehl zum Importieren der gesamten Tabelle aus einer Datenbank lautet:

sqoop import-all-tables --connect jdbc: mysql: // localhost / employee --Benutzername edureka

  • Sqoop - Datenbanken auflisten

Mit Sqoop können Sie die in der Beziehungsdatenbank vorhandenen Datenbanken auflisten. Das Sqoop List-Databases-Tool analysiert und führt die Abfrage 'SHOW DATABASES' für den Datenbankserver aus. Der Befehl zum Auflisten von Datenbanken lautet:

sqoop list-database --connect jdbc: mysql: // localhost / --username edureka

  • Sqoop - Listentabellen

Sie können mit Sqoop auch die Tabellen einer bestimmten Datenbank im MySQL-Datenbankserver auflisten. Das Tool 'Sqoop List-Tables' analysiert die Abfrage 'SHOW TABLES' und führt sie aus. Der Befehl zum Auflisten von Tabellen ist eine Datenbank:

sqoop list-tables --connect jdbc: mysql: // localhost / employee --Benutzername edureka

  • Sqoop - Exportieren

Wie oben erläutert, können Sie auch Daten aus dem HDFS in die RDBMS-Datenbank exportieren. Die Zieltabelle muss in der Zieldatenbank vorhanden sein.Die Daten werden als Datensätze in HDFS gespeichert. Diese Datensätze werden gelesen, analysiert und mit einem benutzerdefinierten Trennzeichen getrennt.Die Standardoperation besteht darin, den gesamten Datensatz aus den Eingabedateien mit der Anweisung INSERT in die Datenbanktabelle einzufügen. Im Aktualisierungsmodus generiert Sqoop die UPDATE-Anweisung, die den vorhandenen Datensatz in der Datenbank ersetzt.

Zuerst erstellen wir eine leere Tabelle, in die wir unsere Daten exportieren.

Der Befehl zum Exportieren von Daten aus HDFS in die relationale Datenbank lautet:

sqoop export --connect jdbc: mysql: // localhost / employee --Benutzername edureka --table emp --export-dir / user / edureka / employee

  • Sqoop - Codegen

In einer objektorientierten Anwendung verfügt jede Datenbanktabelle über eine Datenzugriffsobjektklasse, die die Methoden 'Getter' und 'Setter' zum Initialisieren von Objekten enthält. Codegen generiert die DAO-Klasse automatisch. Es generiert eine DAO-Klasse in Java basierend auf der Tabellenschemastruktur.

Der Befehl zum Generieren von Java-Code lautet:

sqoop codegen --connect jdbc: mysql: // localhost / employee --Benutzername edureka --table employee

Sie können den Pfad im obigen Bild sehen, in dem der Code generiert wird. Lassen Sie uns den Pfad gehen und die erstellten Dateien überprüfen.

Ich hoffe, dieser Blog ist informativ und bietet Ihnen einen Mehrwert. Wenn Sie mehr erfahren möchten, können Sie dies durchgehen Hier erfahren Sie mehr über Big Data und wie Hadoop Herausforderungen im Zusammenhang mit Big Data löst.

Nachdem Sie Apache Sqoop verstanden haben, lesen Sie die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Der Edureka Big Data Hadoop-Zertifizierungskurs hilft Lernenden, Experten für HDFS, Garn, MapReduce, Schwein, Bienenstock, HBase, Oozie, Flume und Sqoop zu werden. Dabei werden Anwendungsfälle in Echtzeit in den Bereichen Einzelhandel, soziale Medien, Luftfahrt, Tourismus und Finanzen verwendet.

Hast du eine Frage an uns? Bitte erwähnen Sie es in den Kommentaren und wir werden uns bei Ihnen melden.