Põhjalik SQOOP-arhitektuuri tutvustus

Apache Sqoop on andmete sisestamise tööriist, mis on ette nähtud massiandmete tõhusaks ülekandmiseks Apache Hadoopi ja struktureeritud andmekogude vahel, näiteks relatsioonandmebaasid, ja vastupidi.

Selle ajaveebi raames selgitan, kuidas arhitektuur töötab Sqoopi käsu täitmisel. Käsitlen selliseid üksikasju nagu purkide genereerimine Codegeni kaudu, MapReduce töö käivitamine ja Sqoopi impordi / ekspordi käsu käivitamise etapid.

Codegen

Codegeni mõistmine on hädavajalik, kuna sisemiselt muudab see meie Sqoopi töö purgiks, mis koosneb mitmest Java klassist, nagu POJO, ORM, ja klassist, mis rakendab DBWritable'i, laiendades SqoopRecordi relatsioonandmebaasidest andmete lugemiseks ja kirjutamiseks Hadoop & vice- vastupidi.

Purgis olevate klasside kontrollimiseks saate Codegeni luua selgesõnaliselt, nagu allpool näidatud.

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

Väljundpurk kirjutatakse teie kohalikku failisüsteemi. Saate Jar-faili, Java-faili ja Java-failid, mis on kompileeritud .class-failideks:

Vaatame loodud koodilõiku.

ORM-klass tabeli 'products' jaoks // kaardistamiseks loodud objekt-relatsiooniline modaal:

Setteri ja Getteri meetodid väärtuste saamiseks:

Sisemiselt kasutab see JDBC ettevalmistatud avaldusi Hadoopi kirjutamiseks ja ResultSet Hadoopist andmete lugemiseks.

Sqoopi import

Seda kasutatakse andmete importimiseks traditsioonilistest relatsiooniandmebaasidest Hadoopi.

Vaatame sama näidisjuppi.

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

Järgmised toimingud toimuvad sqoopi käivitamise käigus sisemiselt.

1. samm : lugege MySQL-i andmeid voogesituse teel. Enne andmete HDFS-i kirjutamist teeb see mitmesuguseid toiminguid.

Selle protsessi osana genereerib see kõigepealt koodi (tüüpiline kaardi vähendamise kood), mis pole midagi muud kui Java kood. Selle Java koodi abil proovib see importida.

  • Looge kood. (Hadoop MR)
  • Koostage kood ja genereerige Jar-fail.
  • Esitage Jar-fail ja tehke imporditoimingud

Impordi ajal peab ta tegema teatud otsused selle kohta, kuidas jagada andmed mitmeks lõimeks, et Sqoopi importi saaks skaleerida.

2. samm : saate aru andmete struktuurist ja tehke CodeGen

Kasutades ülaltoodud SQL-i lauset, saab see ühe kirje koos veergude nimedega. Selle teabe abil eraldab see veergude metaandmete teabe, andmetüübi jne.

3. samm : looge Java-fail, kompileerige see ja genereerige jar-fail

Koodide genereerimise osana peab ta mõistma andmete struktuuri ja rakendama seda objekti sissetulevatele andmetele sisemiselt, veendumaks, et andmed on õigesti sihtandmebaasi kopeeritud. Igas unikaalses tabelis on üks Java-fail, mis räägib andmete struktuurist.

See jar-fail süstitakse Sqoopi binaarkaartidesse, et rakendada struktuuri sissetulevatele andmetele.

4. samm : kustutage sihtkataloog, kui see on juba olemas.

5. samm : importige andmed

Siin luuakse ühendus ressursihalduriga, hankitakse ressurss ja käivitatakse rakendusemeister.

Andmete võrdse jaotuse tegemiseks kaardi ülesannete vahel täidab see vaikimisi piiripäringu põhivõtme põhjal

leida tabelis minimaalne ja maksimaalne kirjete arv.

Maksimaalse arvu põhjal jagatakse see kaardistajate arvuga ja jagatakse iga kaardistaja vahel.

Vaikimisi kasutab see 4 kaardistajat:

See täidab neid töid erinevatel täituritel, nagu allpool näidatud:

Kaardistajate vaikenumbrit saab muuta järgmise parameetri seadistamisega:

Nii et meie puhul kasutab see 4 lõime. Iga lõim töötleb üksteist välistavaid alamhulki, see tähendab, et iga lõime töötleb teistest erinevaid andmeid.

Erinevate väärtuste nägemiseks vaadake järgmist:

Iga täituri sõlme all tehtavad toimingud:

Kui teostate Sqooopi taru importimise, toimub üks täiendav samm täitmise osana.

6. samm : kopeerige andmed taru tabelisse

Sqoop Export

Seda kasutatakse andmete eksportimiseks Hadoopist traditsioonilistesse relatsiooniandmebaasidesse.

Vaatame sama näidisjuppi:

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:

  • Taruarhitektuur sügavusega koos koodiga .
  • HDFS-i arhitektuur sügavuses koos koodiga .

Kui soovite ka seda, võite minuga ühendust võtta LinkedInis - Jayvardhan Reddy.

Kui teile meeldis seda artiklit lugeda, võite klõpsata klapi ja anda teistele sellest teada. Kui soovite, et lisaksin midagi muud, jätke palun vastus?