Verwenden von Apache Sqoop mit Hadoop in HDInsight
Erfahren Sie, wie Sie Apache Sqoop in HDInsight zum Importieren und Exportieren von Daten zwischen einem HDInsight-Cluster und Azure SQL-Datenbank verwenden.
Auch wenn Apache Hadoop die beste Wahl für die Verarbeitung unstrukturierter und halbstrukturierter Daten wie z.B. Protokolle und Dateien ist, besteht oft auch Bedarf für die Verarbeitung strukturierter Daten, die in relationalen Datenbanken gespeichert werden.
Apache Sqoop ist ein Tool zum Übertragen von Daten zwischen Hadoop-Clustern und relationalen Datenbanken. Sie können damit Daten aus einem Managementsystem für relationale Datenbanken (RDBMS) wie SQL Server, MySQL oder Oracle in das verteilte Dateisystem von Hadoop (HDFS) importieren, die Daten in Hadoop mit MapReduce oder Apache Hive transformieren und sie anschließend wieder in ein RDBMS exportieren. In diesem Artikel verwenden Sie Azure SQL-Datenbank für Ihre relationale Datenbank.
Wichtig
Im Artikel wird eine Testumgebung für die Datenübertragung eingerichtet. Sie wählen dann eine Datenübertragungsmethode für diese Umgebung aus einer der Methoden im Abschnitt Ausführen von Sqoop-Aufträgen aus.
Informationen zu den in HDInsight-Clustern unterstützten Sqoop-Versionen finden Sie unter Neuheiten in den von HDInsight bereitgestellten Clusterversionen.
Das Szenario
Der HDInsight-Cluster wird mit einigen Beispieldaten geliefert. Sie verwenden die beiden folgenden Beispiele:
- Eine Apache
Log4j
-Protokolldatei namens Log4j, die sich unter/example/data/sample.log
befindet. Die folgenden Protokolle werden aus der Datei extrahiert:
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
Eine Hive-Tabelle namens
hivesampletable
, die auf die Datendatei in/hive/warehouse/hivesampletable
verweist. Die Tabelle enthält einige Mobilgerätedaten.Feld Datentyp clientid Zeichenfolge querytime Zeichenfolge market Zeichenfolge deviceplatform Zeichenfolge devicemake Zeichenfolge devicemodel Zeichenfolge state Zeichenfolge country Zeichenfolge querydwelltime double sessionid
bigint sessionpagevieworder BIGINT
In diesem Artikel verwenden Sie diese beiden Datasets zum Testen des Sqoop-Imports- und -Exports.
Einrichten der Testumgebung
Der Cluster, die SQL-Datenbank und andere Objekte werden über das Azure-Portal mithilfe einer Azure Resource Manager-Vorlage erstellt. Die Vorlage finden Sie in den Azure-Schnellstartvorlagen. Die Resource Manager-Vorlage ruft ein BACPAC-Paket auf, um die Tabellenschemas in einer SQL-Datenbank bereitzustellen. Wenn Sie einen privaten Container für die bacpac-Dateien verwenden möchten, verwenden Sie die folgenden Werte in der Vorlage:
"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",
Hinweis
Der Import über eine Vorlage oder das Azure-Portal unterstützt nur das Importieren einer BACPAC-Datei aus Azure Blob Storage.
Wählen Sie das folgende Bild aus, um die Resource Manager-Vorlage im Azure-Portal zu öffnen.
Geben Sie die folgenden Eigenschaften ein:
Feld Wert Subscription Wählen Sie in der Dropdownliste Ihr Azure-Abonnement aus. Resource group Wählen Sie in der Dropdownliste Ihre Ressourcengruppe aus, oder erstellen Sie eine neue Gruppe. Standort Wählen Sie in der Dropdownliste eine Region aus. Clustername Geben Sie einen Namen für den Hadoop-Cluster ein. Verwenden Sie nur Kleinbuchstaben. Benutzername für Clusteranmeldung Behalten Sie den vorgegebenen Wert admin
bei.Clusteranmeldung Kennwort Geben Sie ein Kennwort ein. SSH-Benutzername Behalten Sie den vorgegebenen Wert sshuser
bei.SSH-Kennwort Geben Sie ein Kennwort ein. SQL-Administratoranmeldung Behalten Sie den vorgegebenen Wert sqluser
bei.SQL-Administratorkennwort Geben Sie ein Kennwort ein. „_artifacts“-Speicherort Verwenden Sie den Standardwert, sofern Sie nicht eine eigene BACPAC-Datei an einem anderen Speicherort verwenden möchten. SAS-Token für „_artifacts“-Speicherort Lassen Sie dieses Feld leer. BACPAC-Dateiname Verwenden Sie den Standardwert, sofern Sie nicht eine eigene BACPAC-Datei verwenden möchten. Standort Verwenden Sie den Standardwert. Der Name des logischen SQL-Servers lautet
<ClusterName>dbserver
. Der Name der Datenbank lautet<ClusterName>db
. Der Name des Standardspeicherkontos lautete6qhezrh2pdqu
.Aktivieren Sie Ich stimme den oben genannten Geschäftsbedingungen zu.
Wählen Sie die Option Kaufen. Daraufhin wird eine neue Kachel mit der Bezeichnung „Bereitstellung für Vorlagenbereitstellung wird gesendet“ angezeigt. Das Erstellen des Clusters und der SQL-Datenbank dauert ca. 20 Minuten.
Ausführen von Sqoop-Aufträgen
HDInsight kann Sqoop-Aufträge mithilfe verschiedener Methoden ausführen. Die folgende Tabelle hilft Ihnen bei der Entscheidung, welche Methode für Sie geeignet ist. Folgen Sie anschließend dem Link für eine exemplarische Vorgehensweise.
Verwenden Sie dies, wenn Sie Folgendes wünschen: | ... eine interaktive Shell | ...Batchverarbeitung | ...von diesem Clusterbetriebssystem |
---|---|---|---|
SSH | ? | ? | Linux, Unix, macOS X oder Windows |
.NET SDK für Hadoop | ? | Windows (vorläufig) | |
Azure PowerShell | ? | Windows |
Einschränkungen
- Massenexport: Bei Linux-basiertem HDInsight unterstützt der zum Exportieren von Daten nach Microsoft SQL Server oder SQL-Datenbank verwendete Sqoop-Connector derzeit keine Masseneinfügungen.
- Batchverarbeitung: Wenn Sie in Linux-basiertem HDInsight zum Ausführen von Einfügevorgängen den Schalter
-batch
verwenden, führt Sqoop mehrere Einfügevorgänge aus, anstatt diese zu einem Batch zusammenzufassen.
Nächste Schritte
Sie haben nun gelernt, wie Sie Sqoop verwenden. Weitere Informationen finden Sie unter:
- Verwenden von Apache Hive mit HDInsight
- Hochladen von Daten in HDInsight: Andere Methoden zum Hochladen von Daten in HDInsight/Azure Blob Storage.
- Importieren und Exportieren von Daten zwischen Apache Hadoop unter HDInsight und einer SQL-Datenbank mithilfe von Apache Sqoop