Sqoop Tutorial: Hva er Apache Sqoop? ArchiTecture & Eksempel

Hva er SQOOP i Hadoop?

Apache SQOOP (SQL-til-Hadoop) er et verktรธy utviklet for รฅ stรธtte masseeksport og import av data til HDFS fra strukturerte datalagre som relasjonsdatabaser, bedriftsdatavarehus og NoSQL-systemer. Det er et datamigreringsverktรธy basert pรฅ en koblingsarkitektur som stรธtter plugins for รฅ gi tilkobling til nye eksterne systemer.

Et eksempel pรฅ bruk av Hadoop Sqoop er en bedrift som kjรธrer en nattlig Sqoop-import for รฅ laste dagens data fra en produksjonstransaksjons-RDBMS til en Hive datavarehus for videre analyse.

Neste i denne Apache Sqoop-opplรฆringen vil vi lรฆre om Apache Sqoop-arkitektur.

Sqoop Architecture

Alt det eksisterende Databasesystemer er designet med SQL standard i tankene. Imidlertid er hvert DBMS forskjellig med hensyn til dialekt til en viss grad. Sรฅ denne forskjellen byr pรฅ utfordringer nรฅr det gjelder dataoverfรธringer pรฅ tvers av systemene. Sqoop Connectors er komponenter som hjelper til med รฅ overvinne disse utfordringene.

Dataoverfรธring mellom Sqoop Hadoop og eksternt lagringssystem er muliggjort ved hjelp av Sqoops kontakter.

Sqoop har koblinger for รฅ jobbe med en rekke populรฆre relasjonsdatabaser, inkludert MySQL, PostgreSQL, Oracle, SQL Server og DB2. Hver av disse kontaktene vet hvordan de skal samhandle med tilhรธrende DBMS. Det er ogsรฅ en generisk JDBC-kobling for tilkobling til enhver database som stรธtter Javasin JDBC-protokoll. I tillegg gir Sqoop Big data optimalisert MySQL og PostgreSQL koblinger som bruker databasespesifikke APIer for รฅ utfรธre masseoverfรธringer effektivt.

Sqoop Architecture
Sqoop Architecture

I tillegg til dette har Sqoop in big data ulike tredjeparts koblinger for databutikker, alt fra bedrifter datavarehus (inkludert Netezza, Teradata og Oracle) til NoSQL-butikker (som Couchbase). Disse kontaktene kommer imidlertid ikke med Sqoop-bunten; disse mรฅ lastes ned separat og kan enkelt legges til en eksisterende Sqoop-installasjon.

Hvorfor trenger vi Sqoop?

Analytisk behandling ved bruk av Hadoop krever lasting av enorme mengder data fra forskjellige kilder inn i Hadoop-klynger. Denne prosessen med รฅ laste inn massedata i Hadoop, fra heterogene kilder og deretter behandle den, kommer med et visst sett med utfordringer. Opprettholde og sikre datakonsistens og sikre effektiv utnyttelse av ressurser er noen faktorer du bรธr vurdere fรธr du velger riktig tilnรฆrming for databelastning.

Store problemer:

1. Datalast ved hjelp av skript

Den tradisjonelle tilnรฆrmingen med รฅ bruke skript for รฅ laste data er ikke egnet for bulkdatainnlasting i Hadoop; denne tilnรฆrmingen er ineffektiv og svรฆrt tidkrevende.

2. Direkte tilgang til eksterne data via Map-Reduce-applikasjonen

ร… gi direkte tilgang til dataene som ligger pรฅ eksterne systemer (uten รฅ laste inn i Hadoop) for kartreduserende applikasjoner kompliserer disse applikasjonene. Sรฅ denne tilnรฆrmingen er ikke gjennomfรธrbar.

3. I tillegg til รฅ ha evnen til รฅ jobbe med enorme data, kan Hadoop jobbe med data i flere ulike former. Sรฅ for รฅ laste inn slike heterogene data i Hadoop, har forskjellige verktรธy blitt utviklet. Sqoop og Flume er to slike datainnlastingsverktรธy.

Neste i denne Sqoop-opplรฆringen med eksempler, vil vi lรฆre om forskjellen mellom Sqoop, Flume og HDFS.

Sqoop vs Flume vs HDFS i Hadoop

Sqoop Flume HDFS
Sqoop brukes til รฅ importere data fra strukturerte datakilder som RDBMS. Flume brukes til รฅ flytte bulkstrรธmmedata til HDFS. HDFS er et distribuert filsystem som brukes av Hadoop-รธkosystemet til รฅ lagre data.
Sqoop har en koblingsbasert arkitektur. Koblinger vet hvordan de skal koble til den respektive datakilden og hente dataene. Flume har en agentbasert arkitektur. Her er det skrevet en kode (som kalles som 'agent') som tar seg av รฅ hente data. HDFS har en distribuert arkitektur der data distribueres over flere datanoder.
HDFS er en destinasjon for dataimport ved hjelp av Sqoop. Data flyter til HDFS gjennom null eller flere kanaler. HDFS er en ultimat destinasjon for datalagring.
Sqoop-datainnlasting er ikke hendelsesdrevet. Flume-databelastning kan drives av en hendelse. HDFS lagrer bare data levert til den pรฅ noen mรฅte.
For รฅ importere data fra strukturerte datakilder, mรฅ man kun bruke Sqoop-kommandoer, fordi koblingene vet hvordan de skal samhandle med strukturerte datakilder og hente data fra dem. For รฅ laste strรธmmedata som tweets generert pรฅ Twitter eller loggfiler pรฅ en webserver, bรธr Flume brukes. Flume-agenter er bygget for รฅ hente strรธmmedata. HDFS har sine egne innebygde skallkommandoer for รฅ lagre data i den. HDFS kan ikke importere strรธmmedata

Oppsummer dette innlegget med: