Wat is SQOOP in Hadoop?
Apache SQOOP (SQL-to-Hadoop) is een tool die is ontworpen om bulk-export en import van gegevens in HDFS te ondersteunen vanuit gestructureerde gegevensarchieven zoals relationele databases, enterprise datawarehouses en NoSQL-systemen. Het is een datamigratietool gebaseerd op een connectorarchitectuur die plug-ins ondersteunt om connectiviteit te bieden met nieuwe externe systemen.
Een voorbeeld van een gebruiksscenario van Hadoop Sqoop is een onderneming die een nachtelijke Sqoop-import uitvoert om de gegevens van de dag uit een productie-transactionele RDBMS in een Hive-datawarehouse te laden voor verdere analyse.
Vervolgens zullen we in deze Apache Sqoop-zelfstudie leren over Apache Sqoop-architectuur.
Sqoop-architectuur
Alle bestaande databasebeheersystemen zijn ontworpen met de SQL-standaard in gedachten. Elk DBMS verschilt echter tot op zekere hoogte met betrekking tot dialect. Dit verschil zorgt dus voor uitdagingen als het gaat om gegevensoverdracht tussen de systemen. Sqoop-connectoren zijn componenten die deze uitdagingen helpen overwinnen.
Gegevensoverdracht tussen Sqoop Hadoop en extern opslagsysteem wordt mogelijk gemaakt met behulp van de connectoren van Sqoop.
Sqoop heeft connectoren voor het werken met een reeks populaire relationele databases, waaronder MySQL, PostgreSQL, Oracle, SQL Server en DB2. Elk van deze connectoren weet hoe ze moeten communiceren met het bijbehorende DBMS. Er is ook een generieke JDBC-connector om verbinding te maken met elke database die het JDBC-protocol van Java ondersteunt. Bovendien biedt Sqoop Big data geoptimaliseerde MySQL- en PostgreSQL-connectoren die databasespecifieke API's gebruiken om bulkoverdrachten efficiënt uit te voeren.
Daarnaast heeft Sqoop in big data verschillende connectoren van derden voor datastores, variërend van enterprise datawarehouses (waaronder Netezza, Teradata en Oracle) tot NoSQL-winkels (zoals Couchbase). Deze connectoren worden echter niet geleverd met de Sqoop-bundel; die moeten apart worden gedownload en kunnen eenvoudig aan een bestaande Sqoop-installatie worden toegevoegd.
Waarom hebben we Sqoop nodig?
Analytische verwerking met Hadoop vereist het laden van enorme hoeveelheden gegevens uit verschillende bronnen in Hadoop-clusters. Dit proces van het in bulk laden van gegevens in Hadoop, vanuit heterogene bronnen en vervolgens verwerken, brengt een aantal uitdagingen met zich mee. Het behouden en waarborgen van gegevensconsistentie en het zorgen voor een efficiënt gebruik van bronnen, zijn enkele factoren waarmee u rekening moet houden voordat u de juiste aanpak voor het laden van gegevens kiest.
Grote problemen:
1. Gegevens laden met behulp van scripts
De traditionele benadering van het gebruik van scripts om gegevens te laden is niet geschikt voor het bulksgewijs laden van gegevens in Hadoop; deze aanpak is inefficiënt en zeer tijdrovend.
2. Directe toegang tot externe gegevens via de Map-Reduce-applicatie
Door directe toegang te bieden tot de gegevens die zich op externe systemen bevinden (zonder in Hadoop te laden) voor kaartverminderende toepassingen, worden deze toepassingen gecompliceerd. Deze benadering is dus niet haalbaar.
3. Naast de mogelijkheid om met enorme gegevens te werken, kan Hadoop met gegevens in verschillende vormen werken. Om dergelijke heterogene gegevens in Hadoop te laden, zijn daarom verschillende tools ontwikkeld. Sqoop en Flume zijn twee van dergelijke tools voor het laden van gegevens.
Vervolgens zullen we in deze Sqoop-tutorial met voorbeelden leren over het verschil tussen Sqoop, Flume en HDFS.
Sqoop versus Flume versus HDFS in Hadoop
Sqoop | Fluim | HDFS |
---|---|---|
Sqoop wordt gebruikt voor het importeren van gegevens uit gestructureerde gegevensbronnen zoals RDBMS. | Flume wordt gebruikt voor het verplaatsen van bulk-streaminggegevens naar HDFS. | HDFS is een gedistribueerd bestandssysteem dat door het Hadoop-ecosysteem wordt gebruikt om gegevens op te slaan. |
Sqoop heeft een op connector gebaseerde architectuur. Connectoren weten hoe ze verbinding moeten maken met de respectieve gegevensbron en de gegevens moeten ophalen. | Flume heeft een op agents gebaseerde architectuur. Hier wordt een code geschreven (die wordt genoemd als 'agent') die zorgt voor het ophalen van gegevens. | HDFS heeft een gedistribueerde architectuur waarbij gegevens worden verdeeld over meerdere gegevensknooppunten. |
HDFS is een bestemming voor gegevensimport met Sqoop. | Gegevens stromen naar HDFS via nul of meer kanalen. | HDFS is een ultieme bestemming voor gegevensopslag. |
Het laden van Sqoop-gegevens is niet gebeurtenisgestuurd. | Het laden van stroomgootgegevens kan worden aangestuurd door een gebeurtenis. | HDFS slaat alleen gegevens op die er op welke manier dan ook aan zijn verstrekt. |
Om gegevens uit gestructureerde gegevensbronnen te importeren, hoeft u alleen Sqoop-opdrachten te gebruiken, omdat de connectoren weten hoe ze moeten omgaan met gestructureerde gegevensbronnen en gegevens daaruit kunnen ophalen. | Om streaminggegevens zoals tweets gegenereerd op Twitter of logbestanden van een webserver te laden, moet Flume worden gebruikt. Flume-agents zijn gebouwd voor het ophalen van streaminggegevens. | HDFS heeft zijn eigen ingebouwde shell-opdrachten om er gegevens in op te slaan. HDFS kan geen streaminggegevens importeren |