Apache Sqoop-vejledning - Import / eksport af data mellem HDFS og RDBMS



Apache Sqoop Tutorial: Sqoop er et værktøj til overførsel af data mellem Hadoop og relationsdatabaser. Denne blog dækker import og eksport af Sooop fra MySQL.

Før vi starter med denne Apache Sqoop-tutorial, lad os tage et skridt tilbage. Kan du huske vigtigheden af ​​dataindtagelse, som vi diskuterede det i vores tidligere blog om Apache Flume . Nu, som vi ved, at Apache Flume er et dataindtagelsesværktøj til ustrukturerede kilder, men organisationer gemmer deres operationelle data i relationelle databaser. Så der var behov for et værktøj, der kan importere og eksportere data fra relationsdatabaser. Derfor blev Apache Sqoop født. Sqoop kan let integreres med Hadoop og dumpe strukturerede data fra relationsdatabaser på HDFS, hvilket komplimenterer kraften i Hadoop. Det er derfor, mandater til en sund viden om Apache Sqoop og Flume.

Oprindeligt blev Sqoop udviklet og vedligeholdt af Cloudera. Senere den 23. juli 2011 blev den inkuberet af Apache. I april 2012 blev Sqoop-projektet forfremmet som Apache's top-niveau-projekt.





I denne Apache Flume-selvstudieblog vil vi dække:



Vi begynder denne Apache Sqoop-tutorial ved at introducere Apache Sqoop. Så når vi går videre, vil vi forstå fordelene ved at bruge Apache Sqoop.

Apache Sqoop Tutorial: Sqoop Introduktion

Apache Sqoop - Apache Sqoop Tutorial - EdurekaGenerelt interagerer applikationer med relationsdatabasen ved hjælp af RDBMS, og det gør dermed relationsdatabaser til en af ​​de vigtigste kilder, der genererer Big Data. Sådanne data lagres i RDB-servere i relationel struktur. Her spiller Apache Sqoop en vigtig rolle i , der giver mulig interaktion mellem relationsdatabaseserveren og HDFS.

Så Apache Sqoop er et værktøj i som er designet til at overføre data mellem HDFS (Hadoop-lagring) og relationsdatabaseservere som MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres osv. Apache Sqoop importerer data fra relationsdatabaser til HDFS og eksporterer data fra HDFS til relationsdatabaser. Det overfører effektivt bulkdata mellem Hadoop og eksterne datalagre som virksomhedsdatalager, relationsdatabaser osv.



Sådan fik Sqoop sit navn - “ SQ L til Had åben & Hadoop til SQL ”.

Derudover bruges Sqoop til at importere data fra eksterne datalagre til Hadoop-økosystemets værktøjer som f.eks Hive & HBase .

Nu, som vi ved, hvad der er Apache Sqoop. Så lad os gå videre i vores Apache Sqoop tutorial og forstå, hvorfor Sqoop bruges i vid udstrækning af organisationer.

Apache Sqoop-vejledning: Hvorfor Sqoop?

For Hadoop-udvikleren starter det faktiske spil, efter at dataene indlæses i HDFS. De spiller omkring disse data for at få forskellige indsigter skjult i de data, der er gemt i HDFS.

Så til denne analyse skal de data, der findes i relationelle databasestyringssystemer, overføres til HDFS. Opgaven med at skrive kode til import og eksport af data fra relationsdatabasen til HDFS er uinteressant og kedelig. Det er her Apache Sqoop kommer for at redde og fjerner deres smerte. Det automatiserer processen med at importere og eksportere dataene.

Sqoop gør udviklernes liv let ved at levere CLI til import og eksport af data. De skal bare give grundlæggende oplysninger som databaseautentificering, kilde, destination, operationer osv. Det tager sig af den resterende del.

Sqoop konverterer internt kommandoen til MapReduce-opgaver, som derefter udføres over HDFS. Det bruger YARN framework til at importere og eksportere dataene, hvilket giver fejltolerance oven på parallelisme.

Fremad i denne Sqoop Tutorial-blog vil vi forstå de vigtigste funktioner i Sqoop og derefter gå videre til Apache Sqoop-arkitekturen.

Apache Sqoop Tutorial: Nøglefunktioner i Sqoop

Sqoop giver mange fremtrædende funktioner som:

  1. Fuld belastning : Apache Sqoop kan indlæse hele tabellen med en enkelt kommando. Du kan også indlæse alle tabeller fra en database ved hjælp af en enkelt kommando.
  2. Inkrementel belastning : Apache Sqoop giver også mulighed for trinvis belastning, hvor du kan indlæse dele af tabellen, når den opdateres.
  3. Parallel import Eksport : Sqoop bruger YARN framework til at importere og eksportere dataene, hvilket giver fejltolerance oven på parallelisme.
  4. Importere resultater af SQL forespørgsel : Du kan også importere resultatet, der returneres fra en SQL-forespørgsel i HDFS.
  5. Kompression : Du kan komprimere dine data ved hjælp af deflate (gzip) -algoritme med –komprimeringsargument eller ved at angive –kompression-codec-argument. Du kan også indlæse komprimeret tabel i Apache Hive .
  6. Stik til alle major RDBMS Databaser : Apache Sqoop leverer stik til flere RDBMS-databaser, der dækker næsten hele omkredsen.
  7. Kerberos Sikkerhed Integration : Kerberos er en godkendelsesprotokol til computernetværk, der fungerer på basis af 'billetter' for at tillade noder, der kommunikerer over et ikke-sikkert netværk, for at bevise deres identitet for hinanden på en sikker måde. Sqoop understøtter Kerberos-godkendelse.
  8. belastning data direkte ind i HIVE / HBase : Du kan indlæse data direkte i Apache Hive til analyse og dump også dine data i HBase, som er en NoSQL-database.
  9. Support til Akkumulering : Du kan også instruere Sqoop om at importere tabellen i Accumulo snarere end en mappe i HDFS.

Arkitekturen er en, der giver Apache Sqoop disse fordele. Nu, som vi kender funktionerne i Apache Sqoop, lad os gå videre og forstå Apache Sqoop's arkitektur og arbejde.

Apache Sqoop Tutorial: Sqoop Architecture & Working

Lad os forstå, hvordan Apache Sqoop fungerer ved hjælp af nedenstående diagram:

Importværktøjet importerer individuelle tabeller fra RDBMS til HDFS. Hver række i en tabel behandles som en post i HDFS.

Når vi sender Sqoop-kommandoen, opdeles vores hovedopgave i underopgaver, der håndteres internt af den enkelte kortopgave. Kortopgave er delopgave, der importerer en del af data til Hadoop-økosystemet. Samlet set importerer alle kortopgaver hele dataene.

Eksport fungerer også på en lignende måde.

Eksportværktøjet eksporterer et sæt filer fra HDFS tilbage til et RDBMS. Filerne givet som input til Sqoop indeholder poster, der kaldes som rækker i tabellen.

Når vi sender vores job, kortlægges det i kortopgaver, som bringer en del data fra HDFS. Disse bidder eksporteres til en struktureret datadestination. Ved at kombinere alle disse eksporterede klumper af data modtager vi alle data på destinationen, som i de fleste tilfælde er en RDBMS (MYSQL / Oracle / SQL Server).

Reducer fase er påkrævet i tilfælde af aggregationer. Men Apache Sqoop importerer og eksporterer bare de data, den udfører ingen aggregeringer. Kortjobstart lancerer flere kortlæggere afhængigt af det antal, der er defineret af brugeren. Til Sqoop-import tildeles hver mapperopgave en del af data, der skal importeres. Sqoop distribuerer inputdataene mellem kortlæggerne lige for at få høj ydeevne. Derefter opretter hver kortlægger en forbindelse til databasen ved hjælp af JDBC og henter den del af data, der er tildelt af Sqoop, og skriver den i HDFS eller Hive eller HBase baseret på argumenterne i CLI.

Nu hvor vi forstår arkitekturen og arbejdet i Apache Sqoop, lad os forstå forskellen mellem Apache Flume og Apache Sqoop.

Apache Sqoop Tutorial: Flume vs Sqoop

Den største forskel mellem Flume og Sqoop er, at:

  • Flume indtager kun ustrukturerede data eller semistrukturerede data i HDFS.
  • Mens Sqoop kan importere såvel som eksportere strukturerede data fra RDBMS eller Enterprise-datalager til HDFS eller omvendt.

Nu, når du går videre i vores Apache Sqoop-tutorial, er det høj tid at gennemgå Apache Sqoop-kommandoer.

Apache Sqoop-vejledning: Sqoop-kommandoer

  • Sqoop - IMPORT-kommando

Importkommando bruges til at importere en tabel fra relationsdatabaser til HDFS. I vores tilfælde skal vi importere tabeller fra MySQL-databaser til HDFS.

Som du kan se i nedenstående billede, har vi medarbejdertabellen i medarbejderdatabasen, som vi importerer til HDFS.

Kommandoen til import af tabel er:

sqoop import --connect jdbc: mysql: // localhost / medarbejdere - brugernavn edureka - tabel medarbejdere

Som du kan se i nedenstående billede, udføres kortopgaver efter udførelsen af ​​denne kommando i bagenden.

Når koden er udført, kan du kontrollere webgrænsefladen til HDFS, dvs. localhost: 50070, hvor dataene importeres.

  • Sqoop - IMPORT-kommando med målmappe

Du kan også importere tabellen i et bestemt bibliotek i HDFS ved hjælp af nedenstående kommando:

sqoop import --connect jdbc: mysql: // localhost / medarbejdere - brugernavn edureka - tabel medarbejdere - m 1 - target-dir / medarbejdere

Sqoop importerer data parallelt fra de fleste databasekilder. -m egenskab bruges til at angive antallet af mappere, der skal udføres.

hvad der er awt i java

Sqoop importerer data parallelt fra de fleste databasekilder. Du kan angive antallet af kortopgaver (parallelle processer), der skal bruges til at udføre importen ved hjælp af -m eller –Num-mappers argument. Hvert af disse argumenter tager en heltalsværdi, der svarer til graden af ​​parallelisme, der skal anvendes.

Du kan kontrollere antallet af kortlæggere uafhængigt af antallet af filer, der findes i biblioteket. Eksportpræstationer afhænger af graden af ​​parallelisme. Som standard bruger Sqoop fire opgaver parallelt til eksportprocessen. Dette er muligvis ikke optimalt, du bliver nødt til at eksperimentere med din egen opsætning. Yderligere opgaver giver muligvis bedre samtidighed, men hvis databasen allerede er flaskehalset ved opdatering af indekser, påkald af udløsere osv., Kan yderligere belastning muligvis nedsætte ydeevnen.

Du kan se i nedenstående billede, at antallet af mapper-opgave er 1.

Antallet af filer, der oprettes under import af MySQL-tabeller, er lig med antallet af oprettede mapper.

  • Sqoop - IMPORT-kommando med hvor klausul

Du kan importere et undersæt af en tabel ved hjælp af 'hvor' -sætningen i Sqoop-importværktøjet. Den udfører den tilsvarende SQL-forespørgsel i den respektive databaseserver og gemmer resultatet i en målkatalog i HDFS. Du kan bruge følgende kommando til at importere data med ' hvor 'Klausul:

sqoop import --connect jdbc: mysql: // localhost / medarbejdere - brugernavn edureka - tabel medarbejdere - m 3 - hvor 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - trinvis import

Sqoop giver en trinvis importtilstand, som kun kan bruges til at hente rækker nyere end nogle tidligere importerede sæt rækker. Sqoop understøtter to typer trinvis import: Tilføj og sidst ændret . Du kan bruge –incremental-argumentet til at specificere typen af ​​inkrementel import, der skal udføres.

Du skal specificere Tilføj tilstand ved import af en tabel, hvor nye rækker løbende tilføjes med stigende række-id-værdier. Du angiver kolonnen, der indeholder rækkeens id med –Kontrolkolonne . Sqoop importerer rækker, hvor kontrolkolonnen har en værdi, der er større end den, der er angivet med –Siste værdi .

En alternativ tabelopdateringsstrategi understøttet af Sqoop kaldes sidst ændret mode. Du skal bruge dette, når rækker i kildetabellen kan opdateres, og hver sådan opdatering indstiller værdien af ​​en sidst ændrede kolonne til det aktuelle tidsstempel.

Når du kører en efterfølgende import, skal du angive –Siste værdi på denne måde for at sikre, at du kun importerer de nye eller opdaterede data. Dette håndteres automatisk ved at oprette en inkrementel import som et gemt job, hvilket er den foretrukne mekanisme til at udføre en tilbagevendende inkrementel import.

Først indsætter vi en ny række, der opdateres i vores HDFS.

Kommandoen til trinvis import er:

sqoop import --connect jdbc: mysql: // localhost / medarbejdere - brugernavn edureka - tabel medarbejdere - target-dir / Latest_Medarbejdere - ekstra tillæg --check-column emp_no --last-værdi 499999

Du kan se i billedet nedenfor, der oprettes en ny fil med de opdaterede data.

  • Sqoop - Importer alle tabeller

Du kan importere alle tabellerne fra RDBMS-databaseserveren til HDFS. Hver tabeldata gemmes i en separat mappe, og katalognavnet er det samme som tabelnavnet. Det er obligatorisk, at hver tabel i databasen skal have et primært nøglefelt. Kommandoen til at importere hele tabellen fra en database er:

sqoop import-all-tables --connect jdbc: mysql: // localhost / ansatte - brugernavn edureka

  • Sqoop - Liste over databaser

Du kan liste over de databaser, der er til stede i relationsdatabasen, ved hjælp af Sqoop. Sqoop-liste-databaser værktøj analyserer og udfører forespørgslen 'VIS DATABASER' mod databaseserveren. Kommandoen til notering af databaser er:

sqoop liste-databaser --connect jdbc: mysql: // localhost / --brugernavn edureka

hvordan man bruger sæt i java

  • Sqoop - Listeborde

Du kan også liste tabellerne for en bestemt database i MySQL-databaseserver ved hjælp af Sqoop. Sqoop liste-tabeller værktøjsanalyser og udfører forespørgslen 'VIS TABLER'. Kommandoen til oversigt over tabeller er en database er:

sqoop liste-tabeller --connect jdbc: mysql: // localhost / ansatte - brugernavn edureka

  • Sqoop - Eksport

Som vi diskuterede ovenfor kan du også eksportere data fra HDFS til RDBMS-databasen. Måletabellen skal findes i måldatabasen.Dataene gemmes som poster i HDFS. Disse poster læses og parses og afgrænses med brugerdefineret afgrænser.Standardhandlingen er at indsætte al post fra inputfilerne til databasetabellen ved hjælp af INSERT-sætningen. I opdateringstilstand genererer Sqoop UPDATE-sætningen, der erstatter den eksisterende post i databasen.

Så først opretter vi en tom tabel, hvor vi eksporterer vores data.

Kommandoen til at eksportere data fra HDFS til relationsdatabasen er:

sqoop eksport --connect jdbc: mysql: // localhost / medarbejdere - brugernavn edureka - tabel emp --export-dir / bruger / edureka / medarbejdere

  • Sqoop - Codegen

I objektorienteret applikation har hver databasetabel en Data Access Object-klasse, der indeholder 'getter' og 'setter' metoder til at initialisere objekter. Codegen genererer automatisk DAO-klassen. Det genererer DAO-klasse i Java baseret på strukturen i tabelskemaet.

Kommandoen til generering af Java-kode er:

sqoop codegen --connect jdbc: mysql: // localhost / ansatte - brugernavn edureka - tabel medarbejdere

Du kan se stien i ovenstående billede, hvor koden genereres. Lad os gå stien og kontrollere de filer, der oprettes.

Jeg håber, at denne blog er informativ og merværdi for dig. Hvis du er interesseret i at lære mere, kan du gå igennem dette som fortæller dig om Big Data, og hvordan Hadoop løser udfordringer relateret til Big Data.

Nu hvor du har forstået Apache Sqoop, skal du tjekke af Edureka, et pålideligt online læringsfirma med et netværk på mere end 250.000 tilfredse elever spredt over hele kloden. Edureka Big Data Hadoop-certificeringskursus hjælper elever med at blive eksperter i HDFS, Garn, MapReduce, Pig, Hive, HBase, Oozie, Flume og Sqoop ved hjælp af realtidsanvendelsessager på Retail, Social Media, Aviation, Tourism, Finance domæne.

Har du et spørgsmål til os? Nævn det i kommentarfeltet, så vender vi tilbage til dig.