Sqoop Tutorial: Hvad er Apache Sqoop? ArchiTecture & Eksempel

Hvad er SQOOP i Hadoop?

Apache SQOOP (SQL-til-Hadoop) er et værktøj designet til at understøtte masseeksport og import af data til HDFS fra strukturerede datalagre såsom relationsdatabaser, virksomhedsdatavarehuse og NoSQL-systemer. Det er et datamigreringsværktøj baseret på en forbindelsesarkitektur, som understøtter plugins for at give forbindelse til nye eksterne systemer.

Et eksempel på brug af Hadoop Sqoop er en virksomhed, der kører en natlig Sqoop-import for at indlæse dagens data fra en produktionstransaktionel RDBMS til en Hive datavarehus til yderligere analyse.

Næste i denne Apache Sqoop-tutorial lærer vi om Apache Sqoop-arkitektur.

Sqoop Architecture

Alt det eksisterende Databasestyringssystemer er designet med SQL standard i tankerne. Hver DBMS adskiller sig dog til en vis grad med hensyn til dialekt. Så denne forskel giver udfordringer, når det kommer til dataoverførsler på tværs af systemerne. Sqoop Connectors er komponenter, der hjælper med at overvinde disse udfordringer.

Dataoverførsel mellem Sqoop Hadoop og eksternt lagersystem er muliggjort ved hjælp af Sqoops stik.

Sqoop har connectors til at arbejde med en række populære relationelle databaser, herunder MySQL, PostgreSQL, Oracle, SQL Server og DB2. Hver af disse konnektorer ved, hvordan de interagerer med dens tilknyttede DBMS. Der er også en generisk JDBC-forbindelse til at oprette forbindelse til enhver database, der understøtter Java's JDBC protokol. Derudover giver Sqoop Big data optimeret MySQL og PostgreSQL connectors, der bruger databasespecifikke API'er til at udføre masseoverførsler effektivt.

Sqoop Architecture
Sqoop Architecture

Ud over dette har Sqoop i big data forskellige tredjeparts-stik til databutikker, lige fra virksomheder datavarehuse (inklusive Netezza, Teradata og Oracle) til NoSQL-butikker (såsom Couchbase). Disse stik kommer dog ikke med Sqoop bundt; disse skal downloades separat og kan nemt tilfø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 til Hadoop-klynger. Denne proces med bulkdataindlæsning i Hadoop fra heterogene kilder og derefter bearbejdning af det, kommer med et vist sæt udfordringer. Vedligeholdelse og sikring af datakonsistens og sikring af effektiv udnyttelse af ressourcer er nogle faktorer, der skal overvejes, før man vælger den rigtige tilgang til dataindlæsning.

Vigtigste problemer:

1. Dataindlæsning ved hjælp af scripts

Den traditionelle tilgang med at bruge scripts til at indlæse data er ikke egnet til bulk dataindlæ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 de data, der findes på eksterne systemer (uden at indlæse i Hadoop) til kortreducerende applikationer komplicerer disse applikationer. Så denne tilgang er ikke gennemførlig.

3. Udover 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 såsom RDBMS. Flume bruges til at flytte bulkstreamingdata til HDFS. HDFS er et distribueret filsystem, der bruges af Hadoop-økosystemet til at gemme data.
Sqoop har en konnektorbaseret arkitektur. Connectorer ved, hvordan de forbinder til den respektive datakilde og henter dataene. Flume har en agent-baseret arkitektur. Her skrives en kode (som kaldes 'agent'), som sørger for at hente data. HDFS har en distribueret arkitektur, hvor data er fordelt på tværs af flere dataknudepunkter.
HDFS er en destination for dataimport ved hjælp af Sqoop. Data strømmer til HDFS gennem nul eller flere kanaler. HDFS er en ultimativ destination for datalagring.
Sqoop-dataindlæsning er ikke hændelsesdrevet. Rørdatabelastning kan være drevet af en hændelse. HDFS gemmer blot data leveret til det på nogen måde.
For at importere data fra strukturerede datakilder skal man kun bruge Sqoop-kommandoer, fordi dens forbindelser ved, hvordan man interagerer med strukturerede datakilder og henter data fra dem. For at indlæse streamingdata såsom tweets genereret på Twitter eller logfiler på en webserver, bør Flume bruges. Flume-agenter er bygget til at hente streamingdata. HDFS har sine egne indbyggede shell-kommandoer til at gemme data i den. HDFS kan ikke importere streamingdata