Sqoop Tutorial: Co je Apache Sqoop? Architecture & Příklad
Co je SQOOP v Hadoopu?
Apache SQOOP (SQL-to-Hadoop) je nástroj navržený pro podporu hromadného exportu a importu dat do HDFS ze strukturovaných datových úložišť, jako jsou relační databáze, podnikové datové sklady a systémy NoSQL. Jedná se o nástroj pro migraci dat založený na architektuře konektoru, který podporuje zásuvné moduly pro připojení k novým externím systémům.
Příkladem použití Hadoop Sqoop je podnik, který spouští noční import Sqoop pro načtení denních dat z produkčního transakčního RDBMS do Úl datový sklad pro další analýzu.
Dále se v tomto tutoriálu Apache Sqoop seznámíme s architekturou Apache Sqoop.
Sqoop Architecture
Všechny stávající Systémy pro správu databází jsou navrženy s SQL standard v mysli. Každý DBMS se však do určité míry liší s ohledem na dialekt. Tento rozdíl tedy představuje problémy, pokud jde o přenosy dat mezi systémy. Sqoop Connectors jsou komponenty, které pomáhají překonat tyto výzvy.
Přenos dat mezi Sqoop Hadoop a externím úložným systémem je možný pomocí konektorů Sqoop.
Sqoop má konektory pro práci s řadou oblíbených relačních databází, včetně MySQL, PostgreSQL, Oracle, SQL Server a DB2. Každý z těchto konektorů ví, jak interagovat s přidruženým DBMS. K dispozici je také obecný konektor JDBC pro připojení k jakékoli databázi, která podporuje Javaprotokol JDBC. Navíc Sqoop Big data poskytuje optimalizované MySQL a PostgreSQL konektory, které používají rozhraní API specifická pro databázi k efektivnímu provádění hromadných přenosů.

Kromě toho má Sqoop v oblasti velkých dat různé konektory třetích stran pro úložiště dat, od podnikových datové sklady (včetně Netezza, Teradata a Oracle) do obchodů NoSQL (jako je Couchbase). Tyto konektory se však nedodávají se svazkem Sqoop; ty je třeba stáhnout samostatně a lze je snadno přidat do stávající instalace Sqoop.
Proč potřebujeme Sqoop?
Analytické zpracování pomocí Hadoop vyžaduje načítání obrovského množství dat z různých zdrojů do clusterů Hadoop. Tento proces hromadného načítání dat do Hadoopu z heterogenních zdrojů a jejich následného zpracování s sebou nese určitou sadu výzev. Udržování a zajištění konzistence dat a zajištění efektivního využití zdrojů jsou některé faktory, které je třeba zvážit před výběrem správného přístupu k načítání dat.
Hlavní problémy:
1. Načítání dat pomocí skriptů
Tradiční přístup používání skriptů k načítání dat není vhodný pro hromadné načítání dat do Hadoop; tento přístup je neefektivní a časově velmi náročný.
2. Přímý přístup k externím datům přes aplikaci Map-Reduce
Poskytování přímého přístupu k datům uloženým na externích systémech (bez načítání do Hadoop) pro aplikace pro redukci map tyto aplikace komplikuje. Tento přístup tedy není proveditelný.
3. Kromě schopnosti pracovat s obrovskými daty může Hadoop pracovat s daty v několika různých formách. Takže pro načtení takových heterogenních dat do Hadoopu byly vyvinuty různé nástroje. Sqoop a Tok jsou dva takové nástroje načítání dat.
Dále v tomto tutoriálu Sqoop s příklady se dozvíme o rozdílu mezi Sqoop, Flume a HDFS.
Sqoop vs Flume vs HDFS v Hadoopu
| Sqoop | Tok | HDFS |
|---|---|---|
| Sqoop se používá pro import dat ze strukturovaných datových zdrojů, jako je RDBMS. | Flume se používá pro přesun hromadných datových proudů do HDFS. | HDFS je distribuovaný souborový systém používaný ekosystémem Hadoop k ukládání dat. |
| Sqoop má architekturu založenou na konektorech. Konektory vědí, jak se připojit k příslušnému zdroji dat a načíst data. | Flume má architekturu založenou na agentech. Zde je napsán kód (který se nazývá 'agent'), který se stará o načítání dat. | HDFS má distribuovanou architekturu, kde jsou data distribuována přes více datových uzlů. |
| HDFS je cíl pro import dat pomocí Sqoop. | Data proudí do HDFS přes žádný nebo více kanálů. | HDFS je konečným cílem pro ukládání dat. |
| Načítání dat Sqoop není řízeno událostmi. | Načtení dat kanálu může být řízeno událostí. | HDFS pouze ukládá data, která mu byla poskytnuta jakýmkoli způsobem. |
| Aby bylo možné importovat data ze zdrojů strukturovaných dat, je třeba používat pouze příkazy Sqoop, protože jeho konektory vědí, jak interagovat se zdroji strukturovaných dat a získávat z nich data. | Aby bylo možné načíst streamovaná data, jako jsou tweety generované na Twitteru nebo soubory protokolu webového serveru, měl by být použit Flume. Agenti flume jsou navrženi pro načítání streamovaných dat. | HDFS má své vlastní vestavěné příkazy shellu pro ukládání dat do něj. HDFS nemůže importovat data streamování |
