Čo je SQOOP v Hadoope?
Apache SQOOP (SQL-to-Hadoop) je nástroj určený na podporu hromadného exportu a importu údajov do HDFS zo štruktúrovaných dátových skladov, ako sú relačné databázy, podnikové dátové sklady a systémy NoSQL. Jedná sa o nástroj na migráciu údajov založený na architektúre konektorov, ktorý podporuje doplnky na zabezpečenie pripojenia k novým externým systémom.
Príkladom použitia Hadoop Sqoop je podnik, ktorý prevádzkuje nočný import Sqoop na načítanie denných údajov z produkčného transakčného RDBMS do dátového skladu Hive pre ďalšiu analýzu.
Ďalej v tomto výučbe Apache Sqoop sa dozvieme o architektúre Apache Sqoop.
Sqoop architektúra
Všetky existujúce systémy správy databáz sú navrhnuté s ohľadom na štandardy SQL. Každý DBMS sa však do istej miery líši, čo sa týka dialektu. Tento rozdiel teda predstavuje problémy, pokiaľ ide o prenos údajov v rámci systémov. Sqoop konektory sú komponenty, ktoré pomáhajú prekonávať tieto výzvy.
Prenos dát medzi Sqoop Hadoop a externým úložným systémom je možný pomocou konektorov Sqoop.
Sqoop má konektory na prácu s celým radom populárnych relačných databáz, vrátane MySQL, PostgreSQL, Oracle, SQL Server a DB2. Každý z týchto konektorov vie, ako interagovať s pridruženým systémom DBMS. K dispozícii je tiež všeobecný konektor JDBC na pripojenie k akejkoľvek databáze, ktorá podporuje protokol JDBC Java. Sqoop Big data navyše poskytujú optimalizované konektory MySQL a PostgreSQL, ktoré používajú API špecifické pre databázu na efektívne vykonávanie hromadných prenosov.
Okrem toho má Sqoop vo veľkých dátach rôzne konektory tretích strán pre dátové sklady, od podnikových dátových skladov (vrátane Netezza, Teradata a Oracle) až po obchody NoSQL (napríklad Couchbase). Tieto konektory však nie sú dodávané s balíkom Sqoop; tie je potrebné stiahnuť samostatne a dajú sa ľahko pridať do existujúcej inštalácie Sqoop.
Prečo potrebujeme Sqoop?
Analytické spracovanie pomocou Hadoopu vyžaduje načítanie obrovského množstva dát z rôznych zdrojov do klastrov Hadoop. Tento proces hromadného načítania údajov do systému Hadoop z heterogénnych zdrojov a ich následného spracovania prináša určitú výzvu. Udržiavanie a zabezpečenie konzistencie údajov a zabezpečenie efektívneho využívania zdrojov sú niektoré faktory, ktoré je potrebné zohľadniť pred výberom správneho prístupu k načítaniu údajov.
Hlavné problémy:
1. Načítanie údajov pomocou skriptov
Tradičný prístup používania skriptov na načítanie údajov nie je vhodný na hromadné načítanie údajov do Hadoopu; tento prístup je neefektívny a časovo veľmi náročný.
2. Priamy prístup k externým údajom prostredníctvom aplikácie Map-Reduce
Poskytovanie priameho prístupu k údajom uloženým na externých systémoch (bez načítania do Hadoopu) pre aplikácie na redukciu máp tieto aplikácie komplikuje. Tento prístup teda nie je uskutočniteľný.
3. Okrem schopnosti pracovať s obrovskými dátami môže Hadoop pracovať s dátami aj v niekoľkých rôznych formách. Na načítanie takýchto heterogénnych údajov do systému Hadoop boli vyvinuté rôzne nástroje. Sqoop a Flume sú dva také nástroje na načítanie údajov.
Ďalej v tomto výučbe Sqoopu s príkladmi sa dozvieme o rozdieloch medzi Sqoop, Flume a HDFS.
Sqoop vs Flume vs HDFS v Hadoop
Sqoop | Žlab | HDFS |
---|---|---|
Sqoop sa používa na import údajov zo zdrojov štruktúrovaných údajov, ako je RDBMS. | Flume sa používa na presun hromadne streamovaných údajov do HDFS. | HDFS je distribuovaný súborový systém používaný ekosystémom Hadoop na ukladanie údajov. |
Sqoop má architektúru založenú na konektoroch. Konektory vedia, ako sa pripojiť k príslušnému zdroju údajov a načítať údaje. | Flume má architektúru založenú na agentoch. Tu sa napíše kód (ktorý sa nazýva „agent“), ktorý sa stará o načítanie údajov. | HDFS má distribuovanú architektúru, kde sú dáta distribuované do viacerých dátových uzlov. |
HDFS je cieľ pre import dát pomocou Sqoop. | Dátové toky do HDFS nula alebo viac kanálov. | HDFS je konečným cieľom pre ukladanie údajov. |
Načítanie údajov servera Sqoop nie je riadené udalosťami. | Zaťaženie dát žľabu môže byť vyvolané udalosťou. | HDFS iba ukladá údaje, ktoré mu boli poskytnuté, a to akýmkoľvek spôsobom. |
Na import údajov zo zdrojov štruktúrovaných údajov je potrebné používať iba príkazy Sqoop, pretože ich konektory vedia, ako interagovať so zdrojmi štruktúrovaných údajov a načítať z nich údaje. | Na načítanie streamovaných údajov, ako sú tweety vygenerované na Twitteri alebo súbory denníka webového servera, by sa mal použiť Flume. Agenti náhonu sú vyrobené na načítanie streamovaných údajov. | HDFS má vlastné vstavané shell príkazy na ukladanie dát do neho. HDFS nemôže importovať streamované dáta |