Vadnica za Apache Sqoop - Uvoz / izvoz podatkov med HDFS in RDBMS



Vadnica za Apache Sqoop: Sqoop je orodje za prenos podatkov med Hadoop in relacijskimi bazami podatkov. Ta spletni dnevnik pokriva uvoz in izvoz podjetja Sooop iz MySQL.

Preden začnemo s to vadnico Apache Sqoop, stopimo korak nazaj. Se lahko spomnite na pomen zaužitja podatkov, kot smo o njem razpravljali v našem prejšnjem blogu dne Apache Flume . Kot vemo, da je Apache Flume orodje za vnos podatkov za nestrukturirane vire, vendar organizacije svoje operativne podatke shranjujejo v relacijskih zbirkah podatkov. Torej je bilo potrebno orodje, ki lahko uvaža in izvozi podatke iz relacijskih baz podatkov. Zato se je rodil Apache Sqoop. Sqoop se lahko enostavno integrira s sistemom Hadoop in strukturirane podatke izbriše iz relacijskih baz podatkov na HDFS, s čimer pohvali moč Hadoopa. To je razlog, zakaj, zahteva dobro poznavanje Apache Sqoop in Flume.

Sprva je Sqoop razvil in vzdrževal Cloudera. Kasneje, 23. julija 2011, ga je Apache inkubiral. Aprila 2012 je bil projekt Sqoop promoviran kot Apachejev najvišji projekt.





V tem blogu z vadnicami za Apache Flume bomo obravnavali:



To vadnico Apache Sqoop bomo začeli z uvedbo Apache Sqoop. Nato bomo razumeli prednosti uporabe Apache Sqoop.

Vadnica za Apache Sqoop: Uvod v Sqoop

Apache Sqoop - Vadnica za Apache Sqoop - EdurekaNa splošno aplikacije delujejo z relacijsko bazo podatkov z uporabo RDBMS, zato so relacijske baze podatkov eden najpomembnejših virov, ki ustvarjajo velike podatke. Takšni podatki so shranjeni v strežnikih RDB v relacijski strukturi. Tu igra Apache Sqoop pomembno vlogo v , ki zagotavlja izvedljivo interakcijo med relacijskim strežnikom baz podatkov in HDFS.

Torej, Apache Sqoop je orodje v ki je namenjen prenosu podatkov med HDFS (Hadoop storage) in relacijski strežniki baz podatkov, kot so MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres itd. Apache Sqoop uvozi podatke iz relacijskih baz podatkov v HDFS in podatke iz HDFS izvozi v relacijske baze podatkov. Učinkovito prenaša množične podatke med Hadoop in zunanjimi shrambami podatkov, kot so podatkovna skladišča podjetij, relacijske zbirke podatkov itd.



Tako je Sqoop dobil ime - “ SQ L do Had odprto & Hadoop v SQL '.

Poleg tega se Sqoop uporablja za uvoz podatkov iz zunanjih skladišč podatkov v orodja Hadoop ekosistema, kot je Panj & HBase .

Kot vemo, kaj je Apache Sqoop. Torej, nadaljujmo z našo vadnico Apache Sqoop in razumemo, zakaj organizacije Sqoop pogosto uporabljajo.

Vadnica za Apache Sqoop: Zakaj Sqoop?

Za razvijalca Hadoop se dejanska igra začne po nalaganju podatkov v HDFS. Poigravajo se s temi podatki, da bi dobili različne vpoglede, skrite v podatkih, shranjenih v HDFS.

Za to analizo je torej treba podatke, ki se nahajajo v sistemih za upravljanje relacijskih baz podatkov, prenesti na HDFS. Naloga pisanja koda za uvoz in izvoz podatkov iz relacijske baze podatkov v HDFS je nezanimiva in dolgočasna. Tu priskoči na pomoč Apache Sqoop in odstrani njihovo bolečino. Avtomatizira postopek uvoza in izvoza podatkov.

Sqoop razvijalcem olajša življenje z zagotavljanjem CLI za uvoz in izvoz podatkov. Navesti morajo le osnovne informacije, kot so preverjanje pristnosti baze podatkov, vir, cilj, operacije itd. Skrbi za preostali del.

sql strežniška vadnica za začetnike s primeri

Sqoop interno pretvori ukaz v naloge MapReduce, ki se nato izvedejo prek HDFS. Za uvoz in izvoz podatkov uporablja ogrodje YARN, ki poleg vzporednosti zagotavlja odpornost na napake.

Če napredujemo v tem blogu Sqoop Tutorial, bomo razumeli ključne značilnosti Sqoopa in nato prešli na arhitekturo Apache Sqoop.

Vadnica za Apache Sqoop: Ključne značilnosti Sqoopa

Sqoop ponuja številne vidne funkcije, kot so:

  1. Polna obremenitev : Apache Sqoop lahko z enim ukazom naloži celotno tabelo. Vse tabele lahko tudi naložite iz baze podatkov z enim samim ukazom.
  2. Inkrementalni Naloži : Apache Sqoop ponuja tudi možnost postopnega nalaganja, kamor lahko naložite dele tabele, kadar koli je posodobljena.
  3. Vzporedno uvozno-izvoznih : Sqoop za uvoz in izvoz podatkov uporablja ogrodje YARN, ki poleg vzporednosti zagotavlja odpornost na napake.
  4. Uvozi rezultatov od SQL poizvedba : Rezultat, vrnjen iz poizvedbe SQL, lahko uvozite tudi v HDFS.
  5. Stiskanje : Podatke lahko stisnete z uporabo algoritma deflate (gzip) z argumentom –compress ali z določitvijo argumenta –compression-codec. Stisnjeno tabelo lahko naložite tudi v Apache panj .
  6. Konektorji za vse major RDBMS Zbirke podatkov : Apache Sqoop ponuja priključke za več baz podatkov RDBMS, ki pokrivajo skoraj celoten obseg.
  7. Kerberos Varnost Integracija : Kerberos je protokol za preverjanje pristnosti računalniškega omrežja, ki deluje na podlagi „vstopnic“ in vozliščem, ki komunicirajo prek nezaščitenega omrežja, medsebojno dokazujejo svojo identiteto na varen način. Sqoop podpira preverjanje pristnosti Kerberos.
  8. Naloži podatkov neposredno v HIVE / HBase : Podatke lahko naložite neposredno v Apache panj za analizo in podatke shranite tudi v HBase, ki je baza podatkov NoSQL.
  9. Podpora za Kopičenje : Sqoopu lahko tudi naročite, naj tabelo uvozi v Accumulo in ne v imenik v HDFS.

Arhitektura je tista, ki s temi prednostmi daje moč Apache Sqoopu. Zdaj, ko poznamo značilnosti Apache Sqoop, pojdimo naprej in razumemo arhitekturo in delovanje Apache Sqoop.

Vadnica za Apache Sqoop: Sqoop Arhitektura in delo

Dovolite nam, da razumemo, kako deluje Apache Sqoop, z uporabo spodnjega diagrama:

Orodje za uvoz uvozi posamezne tabele iz RDBMS v HDFS. Vsaka vrstica v tabeli se v HDFS obravnava kot zapis.

Ko pošljemo ukaz Sqoop, se naša glavna naloga razdeli na podopravila, ki jih posamezna naloga zemljevidov obravnava interno. Map Task je podopravilo, ki uvozi del podatkov v ekosistem Hadoop. Vsa opravila na zemljevidu skupaj uvozijo celotne podatke.

Podobno deluje tudi izvoz.

Orodje za izvoz izvozi nabor datotek iz HDFS nazaj v RDBMS. Datoteke, podane kot vhod v Sqoop, vsebujejo zapise, ki se v tabeli pokličejo kot vrstice.

Ko pošljemo svoje opravilo, je preslikano v opravila zemljevida, ki prinese del podatkov iz HDFS. Ti kosi se izvozijo na cilj strukturiranih podatkov. S kombinacijo vseh teh izvoženih kosov podatkov prejmemo celotne podatke na cilj, ki je v večini primerov RDBMS (MYSQL / Oracle / SQL Server).

Faza zmanjšanja je potrebna v primeru združevanja. Toda Apache Sqoop samo uvozi in izvozi podatke, ne izvaja pa združevanja. Opravilo zemljevida zažene več map, odvisno od števila, ki ga določi uporabnik. Pri uvozu Sqoop bo vsaki nalogi preslikavca dodeljen del podatkov, ki jih je treba uvoziti. Sqoop enakomerno razdeli vhodne podatke med mape, da doseže visoko zmogljivost. Nato vsak preslikalec ustvari povezavo z bazo podatkov z uporabo JDBC in pridobi del podatkov, ki ga dodeli Sqoop, in jih na podlagi argumentov v CLI zapiše v HDFS ali Hive ali HBase.

Zdaj, ko razumemo arhitekturo in delovanje Apache Sqoop, razumemo razliko med Apache Flume in Apache Sqoop.

Vadnica za Apache Sqoop: Flume vs Sqoop

Glavna razlika med Flume in Sqoop je ta:

  • Flume v HDFS vnaša samo nestrukturirane podatke ali polstrukturirane podatke.
  • Medtem ko lahko Sqoop uvaža in izvozi strukturirane podatke iz podatkovnih skladišč RDBMS ali Enterprise v HDFS ali obratno.

Zdaj, ko napredujemo v naši vadnici Apache Sqoop, je skrajni čas, da preidemo skozi ukaze Apache Sqoop.

Vadnica za Apache Sqoop: Ukazi Sqoop

  • Sqoop - ukaz IMPORT

Ukaz Import se uporablja za uvoz tabele iz relacijskih baz podatkov v HDFS. V našem primeru bomo tabele iz baz podatkov MySQL uvozili v HDFS.

Kot lahko vidite na spodnji sliki, imamo v tabeli zaposlenih tabelo zaposlenih, ki jo bomo uvozili v HDFS.

Ukaz za uvoz tabele je:

sqoop import --connect jdbc: mysql: // localhost / zaposleni - uporabniško ime edureka - tabela zaposlenih

Kot lahko vidite na spodnji sliki, se bodo po izvedbi tega ukaza na zadnjem delu izvajale naloge na zemljevidu.

Po izvedbi kode lahko preverite spletni uporabniški vmesnik HDFS, tj. Localhost: 50070, kamor se podatki uvozijo.

  • Sqoop - IMPORT ukaz s ciljnim imenikom

Tabelo lahko tudi uvozite v določen imenik v HDFS z uporabo spodnjega ukaza:

sqoop import --connect jdbc: mysql: // localhost / zaposleni - uporabniško ime edureka - tabela zaposlenih --m 1 --target-dir / zaposleni

Sqoop podatke vzporedno uvaža iz večine virov baz podatkov. -m lastnost se uporablja za določanje števila preslikav, ki jih je treba izvesti.

Sqoop podatke vzporedno uvaža iz večine virov baz podatkov. Število opravil zemljevida (vzporedni procesi), ki jih želite uporabiti za uvoz, lahko določite s pomočjo -m ali –Številniki prepir. Vsak od teh argumentov ima celoštevilčno vrednost, ki ustreza stopnji vzporednosti, ki jo je treba uporabiti.

Število preslikav lahko nadzorujete neodvisno od števila datotek v imeniku. Uspešnost izvoza je odvisna od stopnje vzporednosti. Privzeto bo Sqoop vzporedno uporabljal štiri naloge za postopek izvoza. To morda ni optimalno, eksperimentirati boste morali z lastno nastavitvijo. Dodatna opravila lahko nudijo boljšo sočasnost, če pa je baza podatkov že zdaj ozka zaradi posodabljanja indeksov, priklica sprožilcev itd., Potem lahko dodatna obremenitev zmanjša zmogljivost.

Na spodnji sliki lahko vidite, da je število opravil preslikav 1.

Število datotek, ustvarjenih med uvozom tabel MySQL, je enako številu ustvarjenih mapperjev.

  • Sqoop - ukaz IMPORT s klavzulo Where

Podnabor tabele lahko uvozite z uporabo klavzule »where« v orodju za uvoz Sqoop. Izvede ustrezno poizvedbo SQL v ustreznem strežniku baze podatkov in rezultat shrani v ciljni imenik v HDFS. Za uvoz podatkov z ‘ kje „Klavzula:

sqoop import --connect jdbc: mysql: // localhost / zaposleni - uporabniško ime edureka - tabela zaposlenih --m 3 - kjer 'emp_no & gt 49000' --target-dir / Zadnje_zaposleni

  • Sqoop - prirastni uvoz

Sqoop ponuja način postopnega uvoza, s katerim lahko pridobite samo vrstice, novejše od nekaterih prej uvoženih nizov vrstic. Sqoop podpira dve vrsti postopnega uvoza: priloži in nazadnje spremenjena . Z argumentom –incremental lahko določite vrsto inkrementalnega uvoza, ki ga želite izvesti.

Morali bi določiti priloži način pri uvozu tabele, kjer se nenehno dodajajo nove vrstice z naraščajočimi vrednostmi id vrstic. Določite stolpec, ki vsebuje id vrstice z –Check-column . Sqoop uvozi vrstice, kjer ima stolpec za preverjanje vrednost večjo od vrednosti, določene z –Zadnja vrednost .

Pokliče se nadomestna strategija posodobitve tabel, ki jo podpira Sqoop nazadnje spremenjena način. To uporabite, ko bodo lahko posodobljene vrstice izvorne tabele, in vsaka taka posodobitev bo vrednost zadnjega spremenjenega stolpca nastavila na trenutni časovni žig.

Pri nadaljnjem uvozu morate določiti –Zadnja vrednost na ta način zagotovite uvoz samo novih ali posodobljenih podatkov. To se samodejno obdela z ustvarjanjem inkrementalnega uvoza kot shranjenega opravila, kar je najprimernejši mehanizem za izvajanje ponavljajočega se inkrementalnega uvoza.

Najprej vstavljamo novo vrstico, ki bo posodobljena v našem HDFS.

Ukaz za inkrementalni uvoz je:

sqoop import --connect jdbc: mysql: // localhost / staff --username edureka --table staff --target-dir / Latest_E Employees --incremental append --check-column emp_no - last-value 499999

Na spodnji sliki lahko vidite, s posodobljenimi podatki je ustvarjena nova datoteka.

  • Sqoop - Uvozi vse tabele

Vse tabele lahko iz strežnika baz podatkov RDBMS uvozite v HDFS. Podatki o vsaki tabeli so shranjeni v ločenem imeniku in ime imenika je enako imenu tabele. Vsaka tabela v tej zbirki podatkov mora imeti polje primarnega ključa. Ukaz za uvoz celotne tabele iz baze podatkov je:

primerek java razreda
sqoop import-all-tables --connect jdbc: mysql: // localhost / zaposleni --username edureka

  • Sqoop - Seznam baz podatkov

Z uporabo Sqoop lahko navedete baze podatkov, ki so prisotne v relacijski bazi podatkov. Orodje Sqoop list-databases razčleni in izvede poizvedbo 'POKAŽI DATABASE' proti strežniku baz podatkov. Ukaz za seznam baz podatkov je:

sqoop list-databases --connect jdbc: mysql: // localhost / --username edureka

  • Sqoop - tabele s seznami

S pomočjo Sqoop lahko tudi navedete tabele določene baze podatkov v strežniku baz podatkov MySQL. Orodje Sqoop list-tabel razčleni in izvede poizvedbo 'POKAŽI TABELE'. Ukaz za seznam tabel je baza podatkov je:

sqoop list-tabele --connect jdbc: mysql: // localhost / zaposleni --username edureka

  • Sqoop - Izvozi

Kot smo že omenili, lahko podatke iz HDFS izvozite tudi v bazo podatkov RDBMS. Ciljna tabela mora obstajati v ciljni bazi podatkov.Podatki so shranjeni kot zapisi v HDFS. Ti zapisi se preberejo in razčlenijo ter ločijo z uporabniškim ločilom.Privzeta operacija je vstaviti ves zapis iz vhodnih datotek v tabelo baze podatkov z uporabo stavka INSERT. V načinu posodobitve Sqoop ustvari stavek UPDATE, ki v bazo podatkov nadomesti obstoječi zapis.

Torej, najprej ustvarimo prazno tabelo, kamor bomo izvozili svoje podatke.

Ukaz za izvoz podatkov iz HDFS v relacijsko bazo podatkov je:

sqoop export --connect jdbc: mysql: // localhost / staff --username edureka --table emp --export-dir / user / edureka / zaposleni

  • Sqoop - Codegen

V objektno usmerjeni aplikaciji ima vsaka tabela baze podatkov en razred predmeta dostopa do podatkov, ki vsebuje metodi „getter“ in „setter“ za inicializacijo predmetov. Codegen samodejno generira razred DAO. Ustvari razred DAO v Javi, ki temelji na strukturi sheme tabel.

Ukaz za ustvarjanje kode Java je:

sqoop codegen --connect jdbc: mysql: // localhost / zaposleni --username edureka - tabela zaposlenih

Pot lahko vidite na zgornji sliki, kjer je generirana koda. Pojdimo po poti in preverimo ustvarjene datoteke.

Upam, da je ta spletni dnevnik informativen in dodane vrednosti za vas. Če vas zanima več, lahko to storite ki vam govori o velikih podatkih in o tem, kako Hadoop rešuje izzive, povezane z velikimi podatki.

Zdaj, ko ste razumeli Apache Sqoop, si oglejte Edureka, zaupanja vredno podjetje za spletno učenje z mrežo več kot 250.000 zadovoljnih učencev, ki se širijo po vsem svetu. Tečaj Edureka Big Data Hadoop Certification Training pomaga učencem, da postanejo strokovnjaki za HDFS, prejo, MapReduce, Pig, Hive, HBase, Oozie, Flume in Sqoop z uporabo primerov uporabe v realnem času na področju maloprodaje, družbenih medijev, letalstva, turizma in financ.

Imate vprašanje za nas? Prosimo, omenite to v oddelku za komentarje in se vam bomo javili.