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

Opsummer dette indlรฆg med: