Što je SQOOP u Hadoopu?
Apache SQOOP (SQL-to-Hadoop) alat je dizajniran za podršku skupnom izvozu i uvozu podataka u HDFS iz strukturiranih spremišta podataka, poput relacijskih baza podataka, skladišta podataka poduzeća i NoSQL sustava. To je alat za migraciju podataka zasnovan na arhitekturi konektora koji podržava dodatke za pružanje povezivanja s novim vanjskim sustavima.
Primjer upotrebe Hadoop Sqoop-a je poduzeće koje izvodi noćni uvoz Sqoop-a za učitavanje dnevnih podataka iz proizvodnog transakcijskog RDBMS-a u skladište podataka Hive-a za daljnju analizu.
Dalje u ovom vodiču za Apache Sqoop naučit ćemo o arhitekturi Apache Sqoop.
Sqoop arhitektura
Svi postojeći sustavi za upravljanje bazama podataka dizajnirani su s obzirom na SQL standard. Međutim, svaki DBMS se donekle razlikuje u odnosu na dijalekt. Dakle, ova razlika predstavlja izazove kada je riječ o prijenosu podataka kroz sustave. Sqoop konektori su komponente koje pomažu u prevladavanju ovih izazova.
Prijenos podataka između Sqoop Hadoopa i vanjskog sustava za pohranu omogućen je uz pomoć Sqoopovih konektora.
Sqoop ima konektore za rad s nizom popularnih relacijskih baza podataka, uključujući MySQL, PostgreSQL, Oracle, SQL Server i DB2. Svaki od ovih konektora zna kako komunicirati s pripadajućim DBMS-om. Tu je i generički JDBC konektor za povezivanje s bilo kojom bazom podataka koja podržava Javin JDBC protokol. Uz to, Sqoop Big data pruža optimizirane MySQL i PostgreSQL konektore koji koriste API-je specifične za bazu podataka za učinkovito obavljanje skupnih prijenosa.
Uz to, Sqoop u velikim podacima ima razne konektore nezavisnih proizvođača za pohranu podataka, od skladišta podataka poduzeća (uključujući Netezzu, Teradata i Oracle) do NoSQL trgovina (poput Couchbase). Međutim, ovi konektori ne dolaze sa Sqoop paketom; one treba preuzeti posebno i mogu se lako dodati postojećoj instalaciji Sqoop-a.
Zašto nam treba Sqoop?
Analitička obrada pomoću Hadoopa zahtijeva učitavanje ogromnih količina podataka iz različitih izvora u Hadoop klastere. Ovaj postupak skupnog učitavanja podataka u Hadoop, iz heterogenih izvora, a zatim njihova obrada, dolazi s određenim nizom izazova. Održavanje i osiguravanje dosljednosti podataka i osiguravanje učinkovite upotrebe resursa, neki su čimbenici koje treba uzeti u obzir prije odabira pravog pristupa za učitavanje podataka.
Veliki problemi:
1. Učitavanje podataka pomoću skripti
Tradicionalni pristup korištenju skripti za učitavanje podataka nije prikladan za skupno učitavanje podataka u Hadoop; ovaj je pristup neučinkovit i vrlo dugotrajan.
2. Izravan pristup vanjskim podacima putem aplikacije Map-Reduce
Pružanje izravnog pristupa podacima koji se nalaze na vanjskim sustavima (bez učitavanja u Hadoop) za programe za smanjenje karte komplicira ove aplikacije. Dakle, ovaj pristup nije izvediv.
3. Osim što može raditi s ogromnim podacima, Hadoop može raditi s podacima u nekoliko različitih oblika. Dakle, za učitavanje takvih heterogenih podataka u Hadoop razvijeni su različiti alati. Sqoop i Flume dva su takva alata za učitavanje podataka.
Dalje u ovom vodiču za Sqoop s primjerima naučit ćemo o razlici između Sqoopa, Flumea i HDFS-a.
Sqoop vs Flume vs HDFS u Hadoopu
Sqoop | Žlijeb | HDFS |
---|---|---|
Sqoop se koristi za uvoz podataka iz strukturiranih izvora podataka kao što je RDBMS. | Flume se koristi za premještanje skupnih podataka u HDFS. | HDFS je distribuirani datotečni sustav koji koristi Hadoop ekosustav za pohranu podataka. |
Sqoop ima arhitekturu temeljenu na konektorima. Konektori se znaju povezati s odgovarajućim izvorom podataka i dohvatiti podatke. | Flume ima arhitekturu zasnovanu na agentu. Ovdje je napisan kod (koji se naziva 'agent') koji se brine za dohvaćanje podataka. | HDFS ima distribuiranu arhitekturu gdje se podaci distribuiraju kroz više podatkovnih čvorova. |
HDFS je odredište za uvoz podataka pomoću Sqoopa. | Podaci se prebacuju na HDFS kroz nula ili više kanala. | HDFS je krajnje odredište za pohranu podataka. |
Učitavanje podataka Sqoop-a ne temelji se na događajima. | Opterećenje podataka fluma može se pokretati događajem. | HDFS samo pohranjuje podatke koji su mu dostavljeni na bilo koji način. |
Da bi se uvezli podaci iz strukturiranih izvora podataka, moraju se koristiti samo naredbe Sqoop, jer njegovi konektori znaju kako komunicirati sa strukturiranim izvorima podataka i dohvatiti podatke iz njih. | Da bi se učitali streaming podaci poput tweetova generiranih na Twitteru ili datoteka dnevnika web poslužitelja, treba koristiti Flume. Sredstva fluma izgrađena su za dohvaćanje podataka o strujanju. | HDFS ima svoje ugrađene naredbe ljuske za spremanje podataka u njega. HDFS ne može uvesti streaming podatke |