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