Hvad er SQOOP i Hadoop?
Apache SQOOP (SQL-til-Hadoop) er et værktøj designet til at understøtte bulkeksport og import af data til HDFS fra strukturerede datalagre såsom relationsdatabaser, enterprise-datalager og NoSQL-systemer. Det er et datamigrationsværktøj baseret på en konnektorarkitektur, der understøtter plugins for at give forbindelse til nye eksterne systemer.
Et eksempel på anvendelse af Hadoop Sqoop er en virksomhed, der kører en Sqoop-import om natten for at indlæse dagens data fra en produktionstransaktionel RDBMS til et Hive-datalager til yderligere analyse.
Derefter lærer vi om Apache Sqoop-arkitekturen i denne Apache Sqoop-tutorial.
Sqoop-arkitektur
Alle eksisterende databasehåndteringssystemer er designet med SQL-standard i tankerne. Imidlertid adskiller hver DBMS sig i nogen grad med hensyn til dialekt. Så denne forskel udgør udfordringer, når det kommer til dataoverførsler på tværs af systemerne. Sqoop-stik er komponenter, der hjælper med at løse disse udfordringer.
Dataoverførsel mellem Sqoop Hadoop og eksternt lagringssystem er muliggjort ved hjælp af Sqoop's stik.
Sqoop har stik til at arbejde med en række populære relationsdatabaser, herunder MySQL, PostgreSQL, Oracle, SQL Server og DB2. Hvert af disse stik ved, hvordan man interagerer med dets tilknyttede DBMS. Der er også et generisk JDBC-stik til forbindelse til enhver database, der understøtter Javas JDBC-protokol. Derudover leverer Sqoop Big data optimerede MySQL- og PostgreSQL-stik, der bruger databasespecifikke API'er til at udføre bulkoverførsler effektivt.
Derudover har Sqoop i big data forskellige tredjepartsforbindelser til datalagre, der spænder fra virksomhedsdatalager (inklusive Netezza, Teradata og Oracle) til NoSQL-butikker (såsom Couchbase). Disse stik kommer dog ikke med Sqoop-pakke; disse skal downloades separat og kan let føjes til en eksisterende Sqoop-installation.
Hvorfor har vi brug for Sqoop?
Analytisk behandling ved hjælp af Hadoop kræver indlæsning af enorme mængder data fra forskellige kilder i Hadoop-klynger. Denne proces med massedataindlæsning i Hadoop fra heterogene kilder og derefter behandling af den kommer med et bestemt sæt udfordringer. Vedligeholdelse og sikring af datakonsistens og sikring af effektiv ressourceudnyttelse er nogle faktorer, der skal overvejes, inden du vælger den rigtige tilgang til datalæsning.
Større problemer:
1. Dataindlæsning ved hjælp af scripts
Den traditionelle tilgang til at bruge scripts til at indlæse data er ikke velegnet til massedataindlæsning i Hadoop; denne tilgang er ineffektiv og meget tidskrævende.
2. Direkte adgang til eksterne data via Map-Reduce-applikationen
At give direkte adgang til data, der findes på eksterne systemer (uden indlæsning i Hadoop) til kortreducerende applikationer, komplicerer disse applikationer. Så denne tilgang er ikke mulig.
3. Ud over at have evnen til at arbejde med enorme data, kan Hadoop arbejde med data i flere forskellige former. Så for at indlæse sådanne heterogene data i Hadoop er der udviklet forskellige værktøjer. Sqoop og Flume er to sådanne dataindlæsningsværktøjer.
Næste i denne Sqoop-tutorial med eksempler vil vi lære om forskellen mellem Sqoop, Flume og HDFS.
Sqoop vs Flume vs HDFS i Hadoop
Sqoop | Flume | HDFS |
---|---|---|
Sqoop bruges til at importere data fra strukturerede datakilder som RDBMS. | Flume bruges til at flytte massestreaming af data til HDFS. | HDFS er et distribueret filsystem, der bruges af Hadoop økosystem til at gemme data. |
Sqoop har en connectorbaseret arkitektur. Forbindere ved, hvordan man opretter forbindelse til den respektive datakilde og henter dataene. | Flume har en agentbaseret arkitektur. Her skrives en kode (som kaldes 'agent'), der tager sig af at hente data. | HDFS har en distribueret arkitektur, hvor data distribueres på tværs af flere datanoder. |
HDFS er en destination til dataimport ved hjælp af Sqoop. | Data strømmer til HDFS gennem nul eller flere kanaler. | HDFS er en ultimativ destination for datalagring. |
Sqoop-datalæsning er ikke hændelsesdrevet. | Flume data belastning kan drives af en begivenhed. | HDFS gemmer bare data, der leveres til det på nogen måde. |
For at importere data fra strukturerede datakilder skal man kun bruge Sqoop-kommandoer, fordi dens stik ved, hvordan man interagerer med strukturerede datakilder og henter data fra dem. | For at indlæse streamingdata som tweets genereret på Twitter eller logfiler på en webserver, skal Flume bruges. Røgagenter er bygget til at hente streamingdata. | HDFS har sine egne indbyggede shell-kommandoer til at gemme data i den. HDFS kan ikke importere streamingdata |