Ce este SQOOP în Hadoop?
Apache SQOOP (SQL-to-Hadoop) este un instrument conceput pentru a sprijini exportul și importul în vrac de date în HDFS din stocuri de date structurate, cum ar fi baze de date relaționale, depozite de date pentru întreprinderi și sisteme NoSQL. Este un instrument de migrare a datelor bazat pe o arhitectură de conector care acceptă pluginuri pentru a oferi conectivitate noilor sisteme externe.
Un exemplu de utilizare a Hadoop Sqoop este o întreprindere care execută un import Sqoop pe noapte pentru a încărca datele zilei dintr-un RDBMS tranzacțional de producție într-un depozit de date Hive pentru o analiză ulterioară.
În continuare, în acest tutorial Apache Sqoop, vom afla despre arhitectura Apache Sqoop.
Sqoop Architecture
Toate sistemele de gestionare a bazelor de date existente sunt proiectate având în vedere standardul SQL. Cu toate acestea, fiecare SGBD diferă în ceea ce privește dialectul într-o oarecare măsură. Deci, această diferență creează provocări atunci când vine vorba de transferul 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 a lucra 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 SGBD-ul său asociat. Există, de asemenea, un conector JDBC generic pentru conectarea la orice bază de date care acceptă protocolul JDBC Java. În plus, Sqoop Big Data oferă conectori MySQL și PostgreSQL optimizați care utilizează API-uri specifice bazei de date pentru a efectua transferuri în bloc în mod eficient.
În plus, Sqoop in big data are diferiți conectori terți pentru magazinele de date, de la depozite de date pentru întreprinderi (inclusiv Netezza, Teradata și Oracle) până la magazine 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 instalație Sqoop existentă.
De ce avem nevoie de Sqoop?
Procesarea analitică utilizând Hadoop necesită încărcarea unor cantități uriașe de date din diverse surse în clustere Hadoop. Acest proces de încărcare a datelor în bloc în Hadoop, din surse eterogene și apoi procesarea acestuia, 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 luat în considerare înainte de a selecta abordarea potrivită pentru încărcarea datelor.
Probleme majore:
1. Încărcarea datelor folosind Scripturi
Abordarea tradițională a utilizării scripturilor pentru încărcarea datelor nu este potrivită pentru încărcarea în bloc a datelor în Hadoop; această abordare este ineficientă și consumă mult timp.
2. Acces direct la date externe prin aplicația Map-Reduce
Furnizarea accesului direct la datele care se află la sistemele externe (fără încărcare în Hadoop) pentru aplicații de reducere a hărții 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 și Flume 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 | Canal | HDFS |
---|---|---|
Sqoop este utilizat pentru importul de date din surse de date structurate, cum ar fi RDBMS. | Flume este utilizat pentru mutarea datelor în flux în vrac î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 cum 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. | Fluxurile de date către HDFS prin zero sau mai multe canale. | HDFS este o destinație supremă pentru stocarea datelor. |
Încărcarea datelor Sqoop nu este bazată pe evenimente. | Încărcarea datelor Flume poate fi condusă de un eveniment. | HDFS stochează doar datele furnizate acestuia prin orice mijloace. |
Pentru a importa date din surse de date structurate, trebuie să utilizați numai comenzile Sqoop, deoarece conectorii săi știu cum 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, Flume ar trebui să fie utilizat. Agenții Flume sunt construiți pentru preluarea datelor de streaming. | HDFS are propriile comenzi shell încorporate pentru a stoca date în el. HDFS nu poate importa date de streaming |