Perusteellinen esittely SQOOP-arkkitehtuuriin

Apache Sqoop on tiedonsiirtotyökalu, joka on suunniteltu tehokkaan massatiedon siirtämiseksi Apache Hadoopin ja jäsenneltyjen tietovarastojen, kuten relaatiotietokantojen, ja päinvastoin.

Osana tätä blogia selitän miten arkkitehtuuri toimii Sqoop-komennon suorittamisessa. Käsittelen yksityiskohtia, kuten purkkien luomisen Codegenin kautta, MapReduce-työn suorittamisen ja Sqoop-tuonti- / vientikomennon suorittamisen vaiheet.

Codegen

Codegenin ymmärtäminen on välttämätöntä, koska sisäisesti tämä muuttaa Sqoop-työmme purkkiin, joka koostuu useista Java-luokista, kuten POJO, ORM, ja luokasta, joka toteuttaa DBWritable-laajennuksen, laajentamalla SqoopRecordia lukemaan ja kirjoittamaan tietoja relaatiotietokannoista Hadoopiin ja vice- päinvastoin.

Voit luoda Codegenin nimenomaisesti alla esitetyllä tavalla tarkistaaksesi purkin osana olevat luokat.

sqoop codegen \ -- connect jdbc:mysql://ms.jayReddy.com:3306/retail_db \ -- username retail_user \ -- password ******* \ -- table products

Tulostuspurkki kirjoitetaan paikalliseen tiedostojärjestelmään. Saat Jar-tiedoston, Java-tiedoston ja Java-tiedostot, jotka on koottu .class-tiedostoiksi:

Katsotaanpa katkelmia luotavasta koodista.

ORM-luokka taulukon tuotteille // Kartoitukselle luotu objektisuhteellinen modeemi:

Setter & Getter -menetelmät arvojen saamiseksi:

Sisäisesti se käyttää JDBC: n laatimia lausuntoja kirjoittaakseen Hadoopille ja ResultSet lukemaan tietoja Hadoopista.

Sqoop-tuonti

Sitä käytetään tietojen tuomiseen perinteisistä relaatiotietokannoista Hadoopiin.

Katsotaanpa näyte katkelma samasta.

sqoop import \ -- connect jdbc:mysql://ms.jayReddy.com:3306/retail_db \ -- username retail_user \ -- password ******* \ -- table products \ -- warehouse-dir /user/jvanchir/sqoop_prac/import_table_dir \ -- delete-target-dir

Seuraavat vaiheet suoritetaan sisäisesti sqoopin suorituksen aikana.

Vaihe 1 : Lue tiedot MySQL: stä suoratoistona. Se tekee erilaisia ​​toimintoja ennen tietojen kirjoittamista HDFS: ään.

Osana tätä prosessia se luo ensin koodin (tyypillinen kartan vähennyskoodi), joka ei ole muuta kuin Java-koodi. Tämän Java-koodin avulla se yrittää tuoda.

  • Luo koodi. (Hadoop MR)
  • Käännä koodi ja luo Jar-tiedosto.
  • Lähetä Jar-tiedosto ja suorita tuonti

Tuonnin aikana sen on tehtävä tietyt päätökset siitä, miten tiedot jaetaan useisiin säikeisiin, jotta Sqoop-tuonti voidaan skaalata.

Vaihe 2 : Ymmärrä tietojen rakenne ja suorita CodeGen

Edellä olevaa SQL-käskyä käyttämällä se hakee yhden tietueen sarakkeiden nimien kanssa. Tätä tietoa käyttämällä se purkaa sarakkeiden, tietotyypin jne. Metatiedot.

Vaihe 3 : Luo java-tiedosto, koota se ja luo jar-tiedosto

Osana koodinmuodostusta sen on ymmärrettävä tietojen rakenne ja sen on sovellettava kyseistä objektia tuleviin tietoihin sisäisesti varmistaakseen, että tiedot on kopioitu oikein kohdetietokantaan. Jokaisessa yksilöllisessä taulukossa on yksi Java-tiedosto, joka puhuu tietojen rakenteesta.

Tämä purkitiedosto injektoidaan Sqoop-binaareihin rakenteen soveltamiseksi tulevaan dataan.

Vaihe 4 : Poista kohdehakemisto, jos se on jo olemassa.

Vaihe 5 : Tuo tiedot

Täällä se muodostaa yhteyden resurssienhallintaan, saa resurssin ja käynnistää sovelluspäällikön.

Tasatiedon jakamiseksi karttatehtävien välillä se suorittaa sisäisesti rajakyselyn oletusarvoisesti ensisijaisen avaimen perusteella

löytää taulukon vähimmäis- ja enimmäismäärä.

Suurimman lukumäärän perusteella se jaetaan kartoittajien lukumäärällä ja jaetaan jokaisen kartoittajan kesken.

Se käyttää oletuksena 4 kartoitinta:

Se suorittaa nämä tehtävät eri toteuttajille alla esitetyllä tavalla:

Oletuskartoittajien määrää voidaan muuttaa asettamalla seuraava parametri:

Joten meidän tapauksessamme se käyttää 4 säiettä. Jokainen ketju käsittelee toisiaan poissulkevia osajoukkoja, toisin sanoen jokainen ketju käsittelee eri tietoja kuin muut.

Jos haluat nähdä eri arvot, tutustu seuraaviin:

Toiminnot, joita suoritetaan jokaisen suorittajan solmun alla:

Jos suoritat Sqooop-pesän tuonnin, suorituksen yhteydessä tapahtuu yksi ylimääräinen askel.

Vaihe 6 : Kopioi tiedot pesäkkeeseen

Sqoop Export

Tätä käytetään tietojen viemiseen Hadoopista perinteisiin relaatiotietokantoihin.

Katsotaanpa näyte katkelma samasta:

sqoop export \ -- connect jdbc:mysql://ms.jayReddy.com:3306/retail_export \ -- username retail_user \ -- password ******* \ -- table product_sqoop_exp \ -- export-dir /user/jvanchir/sqoop_prac/import_table_dir/products

On executing the above command, the execution steps (1–4) similar to Sqoop import take place, but the source data is read from the file system (which is nothing but HDFS). Here it will use boundaries upon block size to divide the data and it is internally taken care by Sqoop.

The processing splits are done as shown below:

After connecting to the respective database to which the records are to be exported, it will issue a JDBC insert command to read data from HDFS and store it into the database as shown below.

Now that we have seen how Sqoop works internally, you can determine the flow of execution from jar generation to execution of a MapReduce task on the submission of a Sqoop job.

Note: The commands that were executed related to this post are added as part of my GIT account.

Similarly, you can also read more here:

  • Hive-arkkitehtuuri syvyydessä koodilla .
  • HDFS-arkkitehtuuri syvyydessä koodilla .

Jos haluat myös, voit ottaa yhteyttä minuun LinkedInissä - Jayvardhan Reddy.

Jos pidit tämän artikkelin lukemisesta, voit napsauttaa taputusta ja kertoa muille siitä. Jos haluat minun lisäävän jotain muuta, voit jättää vastauksen?