Sqoop Tutorial: Hva er Apache Sqoop? Arkitektur & Eksempel

Innholdsfortegnelse:

Anonim

Hva er SQOOP i Hadoop?

Apache SQOOP (SQL-to-Hadoop) er et verktøy designet for å støtte bulkeksport og import av data til HDFS fra strukturerte datalagre som relasjonsdatabaser, bedriftsdatalager 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 driver en nattlig Sqoop-import for å laste dagens data fra en produksjonstransaksjonell RDBMS til et Hive-datalager for videre analyse.

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

Sqoop Architecture

Alle eksisterende databasestyringssystemer er designet med tanke på SQL-standard. Imidlertid er hver DBMS i noen grad forskjellig med hensyn til dialekt. Så denne forskjellen gir utfordringer når det gjelder dataoverføring på tvers av systemene. Sqoop-kontakter er komponenter som hjelper deg med å løse disse utfordringene.

Dataoverføring mellom Sqoop Hadoop og eksternt lagringssystem er mulig ved hjelp av Sqoop's kontakter.

Sqoop har kontakter 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-kontakt for tilkobling til hvilken som helst database som støtter Javas JDBC-protokoll. I tillegg gir Sqoop Big data optimaliserte MySQL- og PostgreSQL-kontakter som bruker databasespesifikke API-er for å utføre bulkoverføringer effektivt.

Sqoop Architecture

I tillegg til dette har Sqoop i big data forskjellige tredjepartskontakter for datalagre, alt fra bedriftens datalager (inkludert Netezza, Teradata og Oracle) til NoSQL-butikker (for eksempel Couchbase). Imidlertid kommer disse kontaktene ikke med Sqoop-pakke; 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 i Hadoop-klynger. Denne prosessen med massedatainnlasting i Hadoop, fra heterogene kilder og deretter behandling av den, kommer med et visst sett med utfordringer. Å opprettholde og sikre datakonsistens og sikre effektiv utnyttelse av ressursene er noen faktorer du må ta i betraktning før du velger riktig tilnærming for datalast.

Store problemer:

1. Datainnlasting ved hjelp av skript

Den tradisjonelle tilnærmingen med å bruke skript for å laste inn data er ikke egnet for massedatainnlasting i Hadoop; denne tilnærmingen er ineffektiv og veldig tidkrevende.

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

Å gi direkte tilgang til dataene som ligger på eksterne systemer (uten lasting i Hadoop) for kartreduserende applikasjoner kompliserer disse applikasjonene. Så denne tilnærmingen er ikke mulig.

3. I tillegg til å ha evnen til å jobbe med enorme data, kan Hadoop jobbe med data i flere forskjellige former. For å laste slike heterogene data inn i Hadoop, er det utviklet forskjellige verktøy. Sqoop og Flume er to slike verktøy for datainnlasting.

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 massestrømdata til HDFS. HDFS er et distribuert filsystem som brukes av Hadoop økosystem for å lagre data.
Sqoop har en kontaktbasert arkitektur. Kontakter vet hvordan de skal koble til den respektive datakilden og hente dataene. Flume har en agentbasert arkitektur. Her skrives en kode (som kalles 'agent') som tar seg av å hente data. HDFS har en distribuert arkitektur der data distribueres over flere datanoder.
HDFS er et mål for dataimport ved hjelp av Sqoop. Data flyter til HDFS gjennom null eller flere kanaler. HDFS er et ultimate mål for datalagring.
Sqoop-datalast er ikke hendelsesdrevet. Flume data belastning kan drives av en hendelse. HDFS lagrer bare data som er gitt til den på noen måte.
For å importere data fra strukturerte datakilder, må man bare bruke Sqoop-kommandoer, fordi kontaktene 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. Røykagenter er bygget for å hente streamingdata. HDFS har sine egne innebygde skallkommandoer for å lagre data i den. HDFS kan ikke importere streamingdata