Tutorial Sqoop: Ce este Apache Sqoop? Architectură & Exemplu
Ce este SQOOP în Hadoop?
Apache SQOOP (SQL-to-Hadoop) este un instrument conceput pentru a sprijini exportul și importul în bloc de date în HDFS din depozite de date structurate, cum ar fi baze de date relaționale, depozite de date de întreprindere și sisteme NoSQL. Este un instrument de migrare a datelor bazat pe o arhitectură de conector care acceptă pluginuri pentru a oferi conectivitate la noi sisteme externe.
Un exemplu de caz de utilizare al Hadoop Sqoop este o întreprindere care rulează un import Sqoop nocturn pentru a încărca datele zilei dintr-un RDBMS tranzacțional de producție într-un Stup depozit de date pentru analize ulterioare.
În continuare, în acest tutorial Apache Sqoop, vom afla despre arhitectura Apache Sqoop.
Sqoop Architectură
Toate cele existente Sisteme de gestionare a bazelor de date sunt proiectate cu SQL standard în minte. Cu toate acestea, fiecare DBMS diferă într-o oarecare măsură în ceea ce privește dialectul. Deci, această diferență ridică provocări atunci când vine vorba de transferurile de date între sisteme. Conectorii Sqoop sunt componente care ajută la depășirea acestor provocări.
Transferul de date între Sqoop Hadoop și sistemul de stocare extern este posibil cu ajutorul conectorilor Sqoop.
Sqoop are conectori pentru lucrul cu o serie de baze de date relaționale populare, inclusiv MySQL, PostgreSQL, Oracle, SQL Server și DB2. Fiecare dintre acești conectori știe cum să interacționeze cu DBMS-ul asociat. Există, de asemenea, un conector JDBC generic pentru conectarea la orice bază de date care acceptă Javaprotocolul JDBC al lui. În plus, Sqoop Big Data oferă optimizate MySQL si PostgreSQL conectori care folosesc API-uri specifice bazei de date pentru a efectua transferuri în bloc în mod eficient.
În plus, Sqoop în Big Data are diferiți conectori terți pentru depozite de date, de la întreprinderi depozite de date (inclusiv Netezza, Teradata și Oracle) către magazinele NoSQL (cum ar fi Couchbase). Cu toate acestea, acești conectori nu vin cu pachetul Sqoop; acestea trebuie descărcate separat și pot fi adăugate cu ușurință la o instalare Sqoop existentă.
De ce avem nevoie de Sqoop?
Procesarea analitică folosind Hadoop necesită încărcarea unor cantități uriașe de date din diverse surse în clustere Hadoop. Acest proces de încărcare în masă a datelor în Hadoop, din surse eterogene și apoi procesarea lor, vine cu un anumit set de provocări. Menținerea și asigurarea coerenței datelor și asigurarea utilizării eficiente a resurselor sunt câțiva factori de care trebuie să luați în considerare înainte de a alege abordarea potrivită pentru încărcarea datelor.
Probleme majore:
1. Încărcarea datelor folosind Scripturi
Abordarea tradițională de utilizare a scripturilor pentru a încărca date nu este potrivită pentru încărcarea în bloc a datelor în Hadoop; această abordare este ineficientă și necesită foarte mult timp.
2. Acces direct la date externe prin aplicația Map-Reduce
Furnizarea accesului direct la datele care rezidă în sisteme externe (fără încărcare în Hadoop) pentru aplicațiile de reducere a hărților complică aceste aplicații. Deci, această abordare nu este fezabilă.
3. Pe lângă capacitatea de a lucra cu date enorme, Hadoop poate lucra cu date în mai multe forme diferite. Deci, pentru a încărca astfel de date eterogene în Hadoop, au fost dezvoltate diferite instrumente. Sqoop si uluc sunt două astfel de instrumente de încărcare a datelor.
În continuare, în acest tutorial Sqoop cu exemple, vom afla despre diferența dintre Sqoop, Flume și HDFS.
Sqoop vs Flume vs HDFS în Hadoop
Sqoop | uluc | HDFS |
---|---|---|
Sqoop este utilizat pentru importarea datelor din surse de date structurate, cum ar fi RDBMS. | Flume este utilizat pentru mutarea datelor în flux în masă în HDFS. | HDFS este un sistem de fișiere distribuit utilizat de ecosistemul Hadoop pentru a stoca date. |
Sqoop are o arhitectură bazată pe conector. Conectorii știu să se conecteze la sursa de date respectivă și să preia datele. | Flume are o arhitectură bazată pe agenți. Aici este scris un cod (care se numește „agent”) care se ocupă de preluarea datelor. | HDFS are o arhitectură distribuită în care datele sunt distribuite pe mai multe noduri de date. |
HDFS este o destinație pentru importul de date folosind Sqoop. | Datele circulă către HDFS prin zero sau mai multe canale. | HDFS este o destinație finală pentru stocarea datelor. |
Încărcarea datelor Sqoop nu este determinată de evenimente. | Încărcarea datelor Flume poate fi determinată de un eveniment. | HDFS stochează doar datele furnizate prin orice mijloc. |
Pentru a importa date din surse de date structurate, trebuie să utilizați numai comenzile Sqoop, deoarece conectorii săi știu să interacționeze cu sursele de date structurate și să preia date de la acestea. | Pentru a încărca date de streaming, cum ar fi tweet-uri generate pe Twitter sau fișiere jurnal ale unui server web, ar trebui utilizat Flume. Agenții Flume sunt creați pentru preluarea datelor în flux. | HDFS are propriile comenzi shell încorporate pentru a stoca date în el. HDFS nu poate importa date de streaming |