Sqoop-zelfstudie: Wat is Apache Sqoop? Architectuur & Voorbeeld
Wat is SQOOP in Hadoop?
Apache SQOOP (SQL-to-Hadoop) is een tool die is ontworpen om bulk export en import van data in HDFS te ondersteunen vanuit gestructureerde data stores zoals relationele databases, enterprise data warehouses en NoSQL systemen. Het is een data migratie tool gebaseerd op een connector architectuur die plugins ondersteunt om connectiviteit te bieden aan 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 van een transactioneel RDBMS in een productieomgeving te laden. Bijenkorf datawarehouse voor verdere analyse.
In deze Apache Sqoop-zelfstudie gaan we dieper in op de architectuur van Apache Sqoop.
Duik Architectuur
Alle bestaande Databasebeheersystemen zijn ontworpen met SQL standaard in gedachten. Elk DBMS verschilt echter tot op zekere hoogte qua dialect. Dit verschil brengt dus uitdagingen met zich mee als het gaat om gegevensoverdracht tussen de systemen. Sqoop Connectors zijn componenten die deze uitdagingen helpen overwinnen.
Gegevensoverdracht tussen Sqoop Hadoop en een 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 te communiceren met het bijbehorende DBMS. Er is ook een generieke JDBC-connector voor verbinding met elke database die dit ondersteunt Java's JDBC-protocol. 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 data warehouses (waaronder Netezza, Teradata en Oracle) naar NoSQL-winkels (zoals Couchbase). Deze connectoren worden echter niet geleverd met een Sqoop-bundel; deze moeten afzonderlijk worden gedownload en kunnen eenvoudig worden toegevoegd aan een bestaande Sqoop-installatie.
Waarom hebben we Sqoop nodig?
Analytische verwerking met Hadoop vereist het laden van enorme hoeveelheden data uit diverse bronnen in Hadoop-clusters. Dit proces van bulkdata laden in Hadoop, uit heterogene bronnen en het vervolgens verwerken ervan, brengt een aantal uitdagingen met zich mee. Het behouden en waarborgen van dataconsistentie en het waarborgen van efficiënt gebruik van resources zijn enkele factoren om te overwegen voordat u de juiste aanpak voor data laden selecteert.
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
Het bieden van directe toegang tot de gegevens op externe systemen (zonder in Hadoop te laden) voor kaartverkleinende toepassingen maakt deze toepassingen ingewikkeld. Deze aanpak is dus niet haalbaar.
3. Naast het vermogen om met enorme hoeveelheden data te werken, kan Hadoop met data in verschillende vormen werken. Om zulke heterogene data in Hadoop te laden, zijn er verschillende tools ontwikkeld. Duik en Flume zijn twee van dergelijke tools voor het laden van gegevens.
In deze Sqoop-tutorial met voorbeelden leren we vervolgens over het verschil tussen Sqoop, Flume en HDFS.
Sqoop versus Flume versus HDFS in Hadoop
Duik | Flume | HDFS |
---|---|---|
Sqoop wordt gebruikt voor het importeren van gegevens uit gestructureerde gegevensbronnen zoals RDBMS. | Flume wordt gebruikt voor het verplaatsen van bulkstreaminggegevens naar HDFS. | HDFS is een gedistribueerd bestandssysteem dat door het Hadoop-ecosysteem wordt gebruikt om gegevens op te slaan. |
Sqoop heeft een connector-gebaseerde architectuur. Connectors weten hoe ze verbinding moeten maken met de betreffende gegevensbron en hoe ze de gegevens moeten ophalen. | Flume heeft een agent-based architectuur. Hier wordt een code geschreven (die 'agent' wordt genoemd) die zorgt voor het ophalen van data. | HDFS heeft een gedistribueerde architectuur waarbij gegevens over meerdere datanodes worden verdeeld. |
HDFS is een bestemming voor gegevensimport met behulp van 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. | De gegevensbelasting van Flume kan worden bepaald door een gebeurtenis. | HDFS slaat alleen de gegevens op die op welke manier dan ook worden verstrekt. |
Om gegevens uit gestructureerde gegevensbronnen te importeren, hoeft u alleen Sqoop-opdrachten te gebruiken, omdat de connectoren weten hoe ze moeten communiceren met gestructureerde gegevensbronnen en hoe ze gegevens daaruit moeten ophalen. | Om streaminggegevens zoals op Twitter gegenereerde tweets 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 gegevens daarin op te slaan. HDFS kan geen streaminggegevens importeren |