Sqoop-Tutorial: Was ist Apache Sqoop? Architektur & Beispiel
Was ist SQOOP in Hadoop?
Apache SQOOP (SQL-to-Hadoop) ist ein Tool, das den Massenexport und -import von Daten in HDFS aus strukturierten Datenspeichern wie relationalen Datenbanken, Enterprise Data Warehouses und NoSQL-Systemen unterstรผtzt. Es handelt sich um ein Datenmigrationstool, das auf einer Connector-Architektur basiert, die Plug-Ins unterstรผtzt, um die Konnektivitรคt zu neuen externen Systemen zu ermรถglichen.
Ein Beispielanwendungsfall fรผr Hadoop Sqoop ist ein Unternehmen, das einen nรคchtlichen Sqoop-Import ausfรผhrt, um die Daten des Tages aus einem transaktionalen Produktions-RDBMS in ein zu laden Hive Data Warehouse zur weiteren Analyse.
Als nรคchstes lernen wir in diesem Apache Sqoop-Tutorial die Apache Sqoop-Architektur kennen.
Sqoop Architektur
Alle vorhandenen Datenbankmanagementsystem sind entworfen mit SQL Standard im Hinterkopf. Allerdings unterscheidet sich jedes DBMS in gewissem Maรe hinsichtlich des Dialekts. Dieser Unterschied stellt also eine Herausforderung dar, wenn es um die Datenรผbertragung zwischen den Systemen geht. Sqoop Connectors sind Komponenten, die dabei helfen, diese Herausforderungen zu meistern.
Die Datenรผbertragung zwischen Sqoop Hadoop und externem Speichersystem wird mithilfe der Konnektoren von Sqoop ermรถglicht.
Sqoop verfรผgt รผber Konnektoren fรผr die Arbeit mit einer Reihe beliebter relationaler Datenbanken, darunter MySQL, PostgreSQL, Oracle, SQL Server und DB2. Jeder dieser Konnektoren kann mit dem zugehรถrigen DBMS interagieren. Es gibt auch einen generischen JDBC-Konnektor fรผr die Verbindung mit jeder Datenbank, die Java's JDBC-Protokoll. Darรผber hinaus bietet Sqoop Big Data optimierte MySQL und PostgreSQL Konnektoren, die datenbankspezifische APIs verwenden, um Massenรผbertragungen effizient durchzufรผhren.

Darรผber hinaus verfรผgt Sqoop im Bereich Big Data รผber verschiedene Konnektoren von Drittanbietern fรผr Datenspeicher, angefangen bei Unternehmensdaten Data Warehouse (einschlieรlich Netezza, Teradata und Oracle) an NoSQL-Stores (z. B. Couchbase). Allerdings sind diese Anschlรผsse nicht im Sqoop-Paket enthalten; Diese mรผssen separat heruntergeladen werden und kรถnnen problemlos zu einer vorhandenen Sqoop-Installation hinzugefรผgt werden.
Warum brauchen wir Sqoop?
Die analytische Verarbeitung mit Hadoop erfordert das Laden groรer Datenmengen aus unterschiedlichen Quellen in Hadoop-Cluster. Dieser Prozess des Ladens groรer Datenmengen aus heterogenen Quellen in Hadoop und der anschlieรenden Verarbeitung bringt eine Reihe von Herausforderungen mit sich. Die Aufrechterhaltung und Gewรคhrleistung der Datenkonsistenz und die Gewรคhrleistung einer effizienten Nutzung der Ressourcen sind einige Faktoren, die bei der Auswahl des richtigen Ansatzes zum Laden der Daten berรผcksichtigt werden mรผssen.
Groรe Probleme:
1. Laden von Daten mithilfe von Skripten
Der herkรถmmliche Ansatz, Skripte zum Laden von Daten zu verwenden, eignet sich nicht fรผr das Laden groรer Datenmengen in Hadoop; Dieser Ansatz ist ineffizient und sehr zeitaufwรคndig.
2. Direkter Zugriff auf externe Daten รผber die Map-Reduce-Anwendung
Die Bereitstellung des direkten Zugriffs auf die Daten in externen Systemen (ohne Laden in Hadoop) fรผr Kartenreduzierungsanwendungen erschwert diese Anwendungen. Dieser Ansatz ist also nicht realisierbar.
3. Hadoop kann nicht nur mit enormen Datenmengen arbeiten, sondern auch mit Daten in verschiedenen Formen. Um solche heterogenen Daten in Hadoop zu laden, wurden verschiedene Tools entwickelt. Sqoop und รcretsiz TJ ve AG casinolarda bonus kodlarฤฑnฤฑ spin โ sind zwei solcher Tools zum Laden von Daten.
Als nรคchstes lernen wir in diesem Sqoop-Tutorial mit Beispielen den Unterschied zwischen Sqoop, Flume und HDFS kennen.
Sqoop vs. Flume vs. HDFS in Hadoop
| Sqoop | รcretsiz TJ ve AG casinolarda bonus kodlarฤฑnฤฑ spin โ | HDFS |
|---|---|---|
| Sqoop wird zum Importieren von Daten aus strukturierten Datenquellen wie RDBMS verwendet. | Flume wird zum Verschieben groรer Streaming-Daten in HDFS verwendet. | HDFS ist ein verteiltes Dateisystem, das vom Hadoop-รkosystem zum Speichern von Daten verwendet wird. |
| Sqoop verfรผgt รผber eine Connector-basierte Architektur. Connectoren wissen, wie sie sich mit der jeweiligen Datenquelle verbinden und die Daten abrufen. | Flume hat eine agentenbasierte Architektur. Dabei wird ein Code geschrieben (der als โAgentโ bezeichnet wird), der sich um das Abrufen der Daten kรผmmert. | HDFS verfรผgt รผber eine verteilte Architektur, bei der Daten auf mehrere Datenknoten verteilt werden. |
| HDFS ist ein Ziel fรผr den Datenimport mit Sqoop. | Der Datenfluss zu HDFS erfolgt รผber null oder mehr Kanรคle. | HDFS ist ein ultimatives Ziel fรผr die Datenspeicherung. |
| Das Laden von Sqoop-Daten ist nicht ereignisgesteuert. | Das Laden von Flume-Daten kann durch ein Ereignis gesteuert werden. | HDFS speichert lediglich Daten, die ihm auf welche Weise auch immer zur Verfรผgung gestellt werden. |
| Um Daten aus strukturierten Datenquellen zu importieren, mรผssen nur Sqoop-Befehle verwendet werden, da seine Konnektoren wissen, wie sie mit strukturierten Datenquellen interagieren und Daten von ihnen abrufen. | Um Streaming-Daten wie auf Twitter generierte Tweets oder Logdateien eines Webservers zu laden, sollte Flume verwendet werden. Flume-Agenten sind zum Abrufen von Streaming-Daten konzipiert. | HDFS verfรผgt รผber eigene integrierte Shell-Befehle zum Speichern von Daten. HDFS kann keine Streaming-Daten importieren |
