Apache Sqoop -opetusohjelma - Tuo / vie tietoja HDFS: n ja RDBMS: n välillä



Apache Sqoop -opetusohjelma: Sqoop on työkalu tietojen siirtämiseen Hadoop- ja relaatiotietokantojen välillä. Tämä blogi kattaa Sooopin tuonnin ja viennin MySQL: stä.

Ennen kuin aloitat tämän Apache Sqoop -opetusohjelman kanssa, ottakaamme askel taaksepäin. Voitko muistaa tiedonsiirron tärkeyden, kuten keskustelimme siitä aiemmassa blogissamme Apache Flume . Nyt, kun tiedämme, että Apache Flume on tiedonsiirtotyökalu strukturoimattomille lähteille, mutta organisaatiot tallentavat toimintatietonsa relaatiotietokantoihin. Joten tarvittiin työkalu, joka voi tuoda ja viedä tietoja relaatiotietokannoista. Siksi Apache Sqoop syntyi. Sqoop voi helposti integroitua Hadoopin kanssa ja kaataa jäsenneltyjä tietoja relaatiotietokannoista HDFS: ssä täydentäen Hadoopin voimaa. Tämän vuoksi, valtuuttaa vankan tietämyksen Apache Sqoopista ja Flumesta.

Aluksi Sqoopin kehitti ja ylläpiti Cloudera. Myöhemmin 23. heinäkuuta 2011 Apache inkuboi sitä. Huhtikuussa 2012 Sqoop-projektiä mainostettiin Apachen huipputason projektina.





Tässä Apache Flume -opetusblogissa käsitellään:



Aloitamme tämän Apache Sqoop -opetusohjelman esittelemällä Apache Sqoop. Sitten eteenpäin ymmärrämme Apache Sqoopin käytön edut.

Apache Sqoop -opetusohjelma: Sqoop-esittely

Apache Sqoop - Apache Sqoop -opastus - EdurekaYleensä sovellukset ovat vuorovaikutuksessa relaatiotietokannan kanssa RDBMS: n avulla, ja näin ollen relaatiotietokannat ovat yksi tärkeimmistä Big Data -lähteistä. Tällaiset tiedot tallennetaan RDB-palvelimiin relaatiorakenteeseen. Tässä Apache Sqoopilla on tärkeä rooli , joka tarjoaa toteutettavissa olevan vuorovaikutuksen relaatiotietokantapalvelimen ja HDFS: n välillä.

Joten Apache Sqoop on työkalu joka on suunniteltu siirtämään tietoja välillä HDFS (Hadoop-tallennus) ja relaatiotietokantapalvelimet, kuten MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres jne. Apache Sqoop tuo tietoja relaatiotietokannoista HDFS: ään ja vie tietoja HDFS: stä relaatiotietokantoihin. Se siirtää tehokkaasti massadataa Hadoopin ja ulkoisten tietovarastojen, kuten yritystietovarastojen, relaatiotietokantojen, jne. Välillä.



Näin Sqoop sai nimensä - “ SQ L oli avata & Hadoop SQL: ään '.

Lisäksi Sqoopia käytetään tietojen tuomiseen ulkoisista tietopisteistä Hadoop-ekosysteemin työkaluihin, kuten Pesä & HBase .

Nyt, kun tiedämme mikä on Apache Sqoop. Joten edetään Apache Sqoop -opetusohjelmassa ja ymmärretään, miksi organisaatiot käyttävät Sqoopia laajasti.

Apache Sqoop -opetusohjelma: Miksi Sqoop?

Hadoop-kehittäjälle varsinainen peli alkaa, kun tiedot ladataan HDFS: ään. He pelaavat näitä tietoja saadakseen erilaisia ​​oivalluksia, jotka on piilotettu HDFS: ään.

Joten tätä analyysiä varten relaatiotietokantojen hallintajärjestelmissä olevat tiedot on siirrettävä HDFS: ään. Kirjoitustehtävä koodi tietojen tuonnille ja viennille relaatiotietokannasta HDFS: ään on mielenkiintoista ja tylsiä. Täällä Apache Sqoop tulee pelastamaan ja poistaa heidän tuskansa. Se automatisoi tietojen tuonnin ja viennin.

Sqoop tekee kehittäjien elämästä helppoa tarjoamalla CLI: n tietojen tuontia ja vientiä varten. Heidän on vain annettava perustiedot, kuten tietokannan todennus, lähde, kohde, toiminnot jne. Se huolehtii jäljellä olevasta osasta.

Sqoop muuntaa komennon sisäisesti MapReduce-tehtäviksi, jotka sitten suoritetaan HDFS: n kautta. Se käyttää YARN-kehystä tietojen tuontiin ja vientiin, mikä tarjoaa vikasietoisuuden rinnakkaisuuden lisäksi.

Tässä Sqoop Tutorial -blogissa eteenpäin ymmärrämme Sqoopin tärkeimmät ominaisuudet ja sitten siirrymme Apache Sqoop -arkkitehtuuriin.

Apache Sqoop -opetusohjelma: Sqoopin tärkeimmät ominaisuudet

Sqoop tarjoaa monia merkittäviä ominaisuuksia, kuten:

  1. Täyslasti : Apache Sqoop voi ladata koko taulukon yhdellä komennolla. Voit myös ladata kaikki taulukot tietokannasta yhdellä komennolla.
  2. Lisääntyvä Ladata : Apache Sqoop tarjoaa myös lisäkuormituksen, johon voit ladata taulukon osia aina, kun se päivitetään.
  3. Rinnakkainen tuonti ja vienti : Sqoop käyttää YARN-kehystä tietojen tuontiin ja vientiin, mikä tarjoaa vikasietoisuuden rinnakkaisuuden lisäksi.
  4. Tuonti tuloksia / SQL kysely : Voit myös tuoda SQL-kyselystä palautetun tuloksen HDFS: ssä.
  5. Puristus : Voit pakata tietoja käyttämällä deflate (gzip) -algoritmia –compress-argumentilla tai määrittämällä –compression-codec -argumentin. Voit myös ladata pakatun taulukon sisään Apache Hive .
  6. Liittimet varten kaikki suuri RDBMS Tietokannat : Apache Sqoop tarjoaa liittimiä useille RDBMS-tietokannoille, jotka kattavat melkein koko kehän.
  7. Kerberos Turvallisuus Liittäminen : Kerberos on tietokoneverkon todennusprotokolla, joka toimii ”lippujen” perusteella, jotta ei-suojatun verkon kautta kommunikoivat solmut voivat todistaa henkilöllisyytensä turvallisesti. Sqoop tukee Kerberos-todennusta.
  8. Ladata tiedot suoraan osaksi HIVE / HBase : Voit ladata tietoja suoraan kohteeseen Apache Hive analysointia varten ja myös sijoittaa tietosi HBaseen, joka on NoSQL-tietokanta.
  9. Tuki varten Kertyminen : Voit myös kehottaa Sqoopia tuomaan taulukon Accumulossa HDFS: ssä olevan hakemiston sijaan.

Arkkitehtuuri on sellainen, joka antaa Apache Sqoopille nämä edut. Nyt kun tiedämme Apache Sqoopin ominaisuudet, siirrytään eteenpäin ja ymmärretään Apache Sqoopin arkkitehtuuri ja toiminta.

Apache Sqoop -opetusohjelma: Sqoop-arkkitehtuuri ja työskentely

Kerro meille, kuinka Apache Sqoop toimii, käyttämällä alla olevaa kaaviota:

Tuontityökalu tuo yksittäiset taulukot RDBMS: stä HDFS: ään. Jokaista taulukon riviä käsitellään tietueena HDFS: ssä.

Kun lähetämme Sqoop-komennon, päätehtävä jakautuu alitehtäviin, jotka yksittäinen karttatehtävä käsittelee sisäisesti. Karttatehtävä on alitehtävä, joka tuo osan tiedoista Hadoop-ekosysteemiin. Kaikki karttatehtävät tuovat koko datan yhdessä.

Vienti toimii myös samalla tavalla.

Vientityökalu vie joukon tiedostoja HDFS: stä takaisin RDBMS: ään. Sqoop-syötteenä annetut tiedostot sisältävät tietueita, jotka kutsutaan taulukon riveiksi.

Kun lähetämme työmme, se kartoitetaan karttatehtäviin, joka tuo palan tietoja HDFS: stä. Nämä palat viedään jäsenneltyyn datakohteeseen. Yhdistämällä kaikki nämä viedyt tietopalat, vastaanotamme koko datan määränpäähän, joka on useimmissa tapauksissa RDBMS (MYSQL / Oracle / SQL Server).

Pelkistysvaihe vaaditaan aggregaatioiden tapauksessa. Mutta Apache Sqoop vain tuo ja vie tietoja, joita se ei tee mitään. Kartta työn käynnistäminen useita kartoittimia riippuen käyttäjän määrittämästä numerosta. Sqoop-tuontia varten jokaiselle kartoitustehtävälle määritetään osa tuotavista tiedoista. Sqoop jakaa syötetyt tiedot kartoittajien kesken tasaisesti saadakseen korkean suorituskyvyn. Sitten kukin kartoitin luo yhteyden tietokantaan JDBC: n avulla ja hakee Sqoopin osoittaman osan tiedoista ja kirjoittaa sen HDFS: ään tai Hiveen tai HBaseen CLI: ssä annettujen argumenttien perusteella.

Nyt kun ymmärrämme Apache Sqoopin arkkitehtuurin ja toiminnan, ymmärretään ero Apache Flume ja Apache Sqoop välillä.

Apache Sqoop -opetusohjelma: Flume vs Sqoop

Suurin ero Flume ja Sqoop välillä on, että:

  • Flume vain syö rakenteettomia tietoja tai osittain jäsenneltyjä tietoja HDFS: ään.
  • Vaikka Sqoop voi tuoda sekä viedä jäsenneltyjä tietoja RDBMS- tai Enterprise-tietovarastoista HDFS: ään tai päinvastoin.

Nyt Apache Sqoop -oppaassa on korkea aika käydä läpi Apache Sqoop -komennot.

Apache Sqoop -opetusohjelma: Sqoop-komennot

  • Sqoop - IMPORT-komento

Tuo-komentoa käytetään taulukon tuomiseen relaatiotietokannoista HDFS: ään. Meidän tapauksessamme aiomme tuoda taulukoita MySQL-tietokannoista HDFS: ään.

Kuten alla olevasta kuvasta näet, työntekijätietokannassa on työntekijätaulukko, jonka tuomme HDFS: ään.

Taulukon tuontikomento on:

sqoop import --connect jdbc: mysql: // localhost / työntekijät - käyttäjätunnus edureka --taulukon työntekijät

Kuten alla olevasta kuvasta näet, tämän komennon suorittamisen jälkeen karttatehtävät suoritetaan takana.

Kun koodi on suoritettu, voit tarkistaa HDFS: n web-käyttöliittymän eli localhost: 50070, johon tiedot tuodaan.

  • Sqoop - IMPORT-komento kohdehakemistolla

Voit myös tuoda taulukon tiettyyn hakemistoon HDFS: ssä alla olevan komennon avulla:

sqoop import --connect jdbc: mysql: // localhost / työntekijät - käyttäjätunnus edureka --taulukko työntekijät --m 1 --target-dir / työntekijät

Sqoop tuo tietoja rinnakkain useimmista tietokantalähteistä. -m ominaisuutta käytetään määrittämään suoritettavien kartoittajien määrä.

Sqoop tuo tietoja rinnakkain useimmista tietokantalähteistä. Voit määrittää tuonti suoritettavien karttatehtävien (rinnakkaisten prosessien) määrän käyttämällä -m tai –Lukukarttajat Perustelu. Kukin näistä argumenteista käyttää kokonaislukua, joka vastaa käytetyn rinnakkaisuuden astetta.

Voit hallita kartoittajien määrää riippumatta hakemistossa olevien tiedostojen määrästä. Viennin suorituskyky riippuu rinnakkaisuuden asteesta. Oletusarvoisesti Sqoop käyttää neljää tehtävää rinnakkain vientiprosessissa. Tämä ei välttämättä ole optimaalinen, sinun on kokeiltava omaa asetustasi. Lisätehtävät voivat tarjota parempaa samanaikaisuutta, mutta jos tietokannassa on jo pullonkaula indeksien päivittämisessä, laukaisimien kutsumisessa ja niin edelleen, lisäkuorma voi heikentää suorituskykyä.

Alla olevasta kuvasta näet, että mapper-tehtävän määrä on 1.

MySQL-taulukoiden tuonnissa luotavien tiedostojen määrä on yhtä suuri kuin luotujen kartoittajien määrä.

  • Sqoop - IMPORT-komento jossa -lauseke

Voit tuoda taulukon osajoukon Sqoop-tuontityökalun missä-lausekkeella. Se suorittaa vastaavan SQL-kyselyn vastaavassa tietokantapalvelimessa ja tallentaa tuloksen kohdehakemistoon HDFS: ssä. Voit käyttää seuraavaa komentoa tuodaksesi tietoja missä ”Lauseke:

sqoop import --connect jdbc: mysql: // localhost / työntekijät - käyttäjätunnus edureka --taulukon työntekijät --m 3 - jonne 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - Inkrementaalinen tuonti

Sqoop tarjoaa inkrementaalisen tuontitilan, jota voidaan käyttää hakemaan vain uudempia rivejä kuin jotkut aiemmin tuotut rivit. Sqoop tukee kahta erilaista tuonnin tyyppiä: liitä ja viimeksi muokattu . Voit määrittää –incremental-argumentin avulla suoritettavan inkrementaalisen tuonnin tyypin.

Sinun tulisi määrittää liitä -tila tuodessasi taulukkoa, johon uusia rivejä lisätään jatkuvasti rivin id-arvojen kasvaessa. Määrität sarakkeen, joka sisältää rivin tunnuksen –Tarkista-sarake . Sqoop tuo rivit, joissa tarkistussarakkeen arvo on suurempi kuin kohdassa määritetty Viimeinen arvo .

Sqoopin tukema vaihtoehtoinen taulukon päivitysstrategia kutsutaan viimeksi muokattu -tilassa. Käytä tätä, kun lähdetaulukon rivejä saatetaan päivittää, ja jokainen tällainen päivitys asettaa viimeisen muokatun sarakkeen arvon nykyiseen aikaleimaan.

Kun suoritat myöhempää tuontia, sinun on määritettävä Viimeinen arvo tällä tavoin varmistaaksesi, että tuot vain uudet tai päivitetyt tiedot. Tämä hoidetaan automaattisesti luomalla inkrementaalinen tuonti tallennetuksi työksi, mikä on ensisijainen mekanismi toistuvan inkrementaalisen tuonnin suorittamiseksi.

Ensin lisätään uusi rivi, joka päivitetään HDFS: ään.

Inkrementaalisen tuonnin komento on:

sqoop import --connect jdbc: mysql: // localhost / staff - käyttäjänimi edureka --taulukon työntekijät --target-dir / Latest_Employees - inkrementaalinen lisäys --check-column Emp_no --last-value 499999

Alla olevassa kuvassa näkyy, että päivitetyillä tiedoilla luodaan uusi tiedosto.

  • Sqoop - Tuo kaikki taulukot

Voit tuoda kaikki taulukot RDBMS-tietokantapalvelimelta HDFS: ään. Jokainen taulukon data tallennetaan erilliseen hakemistoon ja hakemiston nimi on sama kuin taulukon nimi. On pakollista, että jokaisessa tietokannan taulukossa on oltava ensisijainen avainkenttä. Komento, jolla kaikki taulukot tuodaan tietokannasta, on:

sqoop import-all-tables - yhdistä jdbc: mysql: // localhost / työntekijät --käyttäjänimi edureka

  • Sqoop - Luettelotietokannat

Voit luetella suhteetietokannassa olevat tietokannat Sqoopin avulla. Sqoop-luettelotietokantatyökalu jäsentää ja suorittaa ”NÄYTÄ TIETOKANNAT” -kyselyn tietokantapalvelinta vastaan. Komento tietokantojen listalle on:

matriisin pituus javascript-muodossa
sqoop list-tietokannat --connect jdbc: mysql: // localhost / --username edureka

  • Sqoop - Luettelotaulukot

Voit myös luetella tietyn tietokannan taulukot MySQL-tietokantapalvelimessa Sqoopin avulla. Sqoop-luettelotaulukot -työkalu jäsentää ja suorittaa NÄYTÄ TAULUKOT -kyselyn. Taulukoiden luettelointikomento on tietokanta:

sqoop-listataulukot --connect jdbc: mysql: // localhost / työntekijät - käyttäjätunnus edureka

  • Sqoop - Vie

Kuten edellä keskustelimme, voit myös viedä tietoja HDFS: stä RDBMS-tietokantaan. Kohdetaulukon on oltava olemassa kohdetietokannassa.Tiedot tallennetaan tietueina HDFS: ään. Nämä tietueet luetaan, jäsennetään ja rajoitetaan käyttäjän määrittelemällä erottimella.Oletustoiminto on lisätä kaikki tietue syötetiedostoista tietokantataulukkoon INSERT-käskyn avulla. Päivitystilassa Sqoop luo UPDATE-käskyn, joka korvaa olemassa olevan tietueen tietokantaan.

Joten ensin luomme tyhjän taulukon, johon viedään tietomme.

Komento tietojen viemiseksi HDFS: stä relaatiotietokantaan on:

sqoop export --connect jdbc: mysql: // localhost / työntekijät - käyttäjätunnus edureka --taulukko emp --export-dir / user / edureka / työntekijät

  • Sqoop - Codegen

Kohdekeskeisessä sovelluksessa jokaisella tietokantataulukolla on yksi Data Access Object -luokka, joka sisältää ”getter” - ja “setter” -menetelmät objektien alustamiseksi. Codegen luo DAO-luokan automaattisesti. Se luo DAO-luokan Java-ohjelmassa Table Schema -rakenteen perusteella.

Komento generoida java-koodi on:

sqoop codegen --connect jdbc: mysql: // localhost / työntekijät - käyttäjätunnus edureka --taulukon työntekijät

Näet yllä olevan kuvan polun, jossa koodi luodaan. Mennään polkua ja tarkistetaan luodut tiedostot.

Toivon, että tämä blogi on informatiivinen ja lisäarvoa sinulle. Jos olet kiinnostunut oppimaan lisää, voit käydä tämän läpi joka kertoo sinulle Big Dataista ja siitä, kuinka Hadoop ratkaisee Big Dataan liittyviä haasteita.

Nyt kun olet ymmärtänyt Apache Sqoopin, tutustu Edureka, luotettava verkko-oppimisyritys, jolla on yli 250 000 tyytyväisen oppijan verkosto, joka levisi ympäri maailmaa. Edureka Big Data Hadoop -sertifiointikoulutus auttaa oppijoita tulemaan HDFS-, Lanka-, MapReduce-, Pig-, Hive-, HBase-, Oozie-, Flume- ja Sqoop-asiantuntijoiksi käyttämällä reaaliaikaisia ​​käyttötapauksia vähittäiskaupan, sosiaalisen median, ilmailun, matkailun ja rahoituksen verkkotunnuksissa.

Onko sinulla kysymys meille? Mainitse se kommenttiosassa ja palaamme sinuun.