de Jayvardhan Reddy

O introducere în profunzime a arhitecturii SQOOP

O introducere in profunzime a arhitecturii SQOOP
Credite de imagine: hadoopsters.net

Apache Sqoop este un instrument de ingestie de date conceput pentru transferul eficient de date în masă între Apache Hadoop și magazine structurate de date, cum ar fi baze de date relaționale și viceversa.

1611265807 413 O introducere in profunzime a arhitecturii SQOOP
Credite de imagine: hdfstutorial.com

Ca parte a acestui blog, voi explica cum funcționează arhitectura la executarea unei comenzi Sqoop. Voi acoperi detalii precum generarea de jar prin Codegen, execuția jobului MapReduce și diferitele etape implicate în rularea unei comenzi de import / export Sqoop.

Codegen

Înțelegerea Codegen este esențială, deoarece pe plan intern aceasta transformă jobul nostru Sqoop într-un borcan care constă din mai multe clase Java, cum ar fi POJO, ORM și o clasă care implementează DBWritable, extinzând SqoopRecord pentru a citi și scrie datele din bazele de date relaționale la Hadoop și vice- versa.

Puteți crea un Codegen în mod explicit așa cum se arată mai jos pentru a verifica clasele prezente ca parte a borcanului.

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

Jar-ul de ieșire va fi scris în sistemul de fișiere local. Veți primi un fișier Jar, fișier Java și fișiere java care sunt compilate în fișiere .class:

1611265808 520 O introducere in profunzime a arhitecturii SQOOP

Să vedem un fragment din codul care va fi generat.

Clasa ORM pentru „produse” de masă // Mod relațional obiect generat pentru mapare:

1611265808 90 O introducere in profunzime a arhitecturii SQOOP

Metode Setter & Getter pentru a obține valori:

1611265809 490 O introducere in profunzime a arhitecturii SQOOP

Intern folosește declarații pregătite de JDBC pentru a scrie către Hadoop și ResultSet pentru a citi datele de la Hadoop.

1611265809 781 O introducere in profunzime a arhitecturii SQOOP

Import Sqoop

Este folosit pentru a importa date din bazele de date relaționale tradiționale în Hadoop.

O introducere in profunzime a arhitecturii SQOOP
Credite de imagine: manechine.com

Să vedem un fragment de probă pentru același lucru.

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

Următorii pași au loc intern în timpul executării sqoop.

Pasul 1: Citiți datele din MySQL în mod streaming. Face diverse operațiuni înainte de a scrie datele în HDFS.

1611265810 877 O introducere in profunzime a arhitecturii SQOOP

Ca parte a acestui proces, va genera mai întâi cod (cod tipic de reducere a hărții) care nu este altceva decât cod Java. Folosind acest cod Java va încerca să importe.

  • Generați codul. (Hadoop MR)
  • Compilați codul și generați fișierul Jar.
  • Trimiteți fișierul Jar și efectuați operațiunile de import

În timpul importului, trebuie să ia anumite decizii cu privire la modul de împărțire a datelor în mai multe fire, astfel încât importul Sqoop să poată fi scalat.

Pasul 2: Înțelegeți structura datelor și efectuați CodeGen

1611265810 260 O introducere in profunzime a arhitecturii SQOOP

Folosind declarația SQL de mai sus, va prelua o înregistrare împreună cu numele coloanelor. Folosind aceste informații, va extrage informațiile despre metadate ale coloanelor, tipului de date etc.

1611265811 290 O introducere in profunzime a arhitecturii SQOOP
Credite de imagine: cs.tut.fi

Pasul 3: Creați fișierul java, compilați-l și generați un fișier jar

Ca parte a generării de cod, trebuie să înțeleagă structura datelor și trebuie să aplice acel obiect pe datele primite intern pentru a se asigura că datele sunt copiate corect în baza de date țintă. Fiecare tabel unic are un fișier Java care vorbește despre structura datelor.

1611265811 237 O introducere in profunzime a arhitecturii SQOOP

Acest fișier jar va fi injectat în binare Sqoop pentru a aplica structura datelor primite.

Pasul 4: Ștergeți directorul țintă dacă acesta există deja.

1611265811 928 O introducere in profunzime a arhitecturii SQOOP

Pasul 5: Importați datele

1611265812 755 O introducere in profunzime a arhitecturii SQOOP

Aici, se conectează la un manager de resurse, primește resursa și pornește aplicația master.

1611265812 493 O introducere in profunzime a arhitecturii SQOOP

Pentru a efectua o distribuție egală a datelor între sarcinile hărții, acesta execută în mod implicit o interogare la graniță bazată pe cheia primară
pentru a găsi numărul minim și maxim de înregistrări în tabel.
Pe baza numărului maxim, acesta se va împărți la numărul de mapatori și îl va împărți între fiecare mapator.

1611265812 771 O introducere in profunzime a arhitecturii SQOOP

În mod implicit, folosește 4 mapere:

1611265813 655 O introducere in profunzime a arhitecturii SQOOP

Execută aceste lucrări pe diferiți executanți, după cum se arată mai jos:

1611265813 799 O introducere in profunzime a arhitecturii SQOOP

Numărul implicit de mapere poate fi modificat prin setarea următorului parametru:

1611265813 451 O introducere in profunzime a arhitecturii SQOOP

Deci, în cazul nostru, folosește 4 fire. Fiecare fir procesează subseturi care se exclud reciproc, adică fiecare fir procesează date diferite de celelalte.

Pentru a vedea diferitele valori, consultați cele de mai jos:

1611265814 785 O introducere in profunzime a arhitecturii SQOOP

Operații care se efectuează sub fiecare nod executor:

1611265814 154 O introducere in profunzime a arhitecturii SQOOP

În cazul în care efectuați un import Sqooop stup, are loc un pas suplimentar ca parte a execuției.

Pasul 6: Copiați datele în tabelul stupului

1611265815 650 O introducere in profunzime a arhitecturii SQOOP

Export Sqoop

Aceasta este utilizată pentru a exporta date de la Hadoop în bazele de date relaționale tradiționale.

1611265815 919 O introducere in profunzime a arhitecturii SQOOP
Credite de imagine: slideshare.net

Să vedem un fragment de probă pentru același lucru:

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

La executarea comenzii de mai sus, au loc pașii de execuție (1-4) similari importului Sqoop, dar datele sursă sunt citite din sistemul de fișiere (care nu este altceva decât HDFS). Aici va folosi granițele dimensiunii blocului pentru a împărți datele și va fi îngrijită intern de Sqoop.

Divizările de procesare se fac așa cum se arată mai jos:

1611265816 468 O introducere in profunzime a arhitecturii SQOOP

După conectarea la baza de date respectivă pe care urmează să fie exportate înregistrările, va emite o comandă de inserare JDBC pentru a citi datele de pe HDFS și a le stoca în baza de date așa cum se arată mai jos.

1611265816 280 O introducere in profunzime a arhitecturii SQOOP

Acum că am văzut cum funcționează intern Sqoop, puteți determina fluxul de execuție de la generarea de jar la executarea unei sarcini MapReduce la trimiterea unui job Sqoop.

Notă: Comenzile care au fost executate legate de această postare sunt adăugate ca parte a mea GIT cont.

În mod similar, puteți citi mai multe aici:

Dacă doriți și dvs., vă puteți conecta cu mine pe LinkedIn – Jayvardhan Reddy.

Dacă ți-a plăcut să citești acest articol, poți să dai clic pe clap și să îi anunți pe ceilalți. Dacă doriți să mai adaug ceva, vă rugăm să nu ezitați să lăsați un răspuns?