Co je SQOOP v Hadoopu?
Apache SQOOP (SQL-to-Hadoop) je nástroj určený k podpoře hromadného exportu a importu dat do HDFS ze skladů strukturovaných dat, 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 konektorů, který podporuje pluginy pro zajištění připojení k novým externím systémům.
Příkladem použití Hadoop Sqoop je podnik, který provozuje noční import Sqoop pro načtení denních dat z produkčního transakčního RDBMS do datového skladu Hive pro další analýzu.
Dále v tomto výukovém programu Apache Sqoop se dozvíme o architektuře Apache Sqoop.
Sqoop architektura
Všechny stávající systémy pro správu databází jsou navrženy s ohledem na standard SQL. Každý DBMS se však do určité míry liší dialektem. Tento rozdíl tedy představuje výzvu, pokud jde o datové přenosy napříč systémy. Sqoop konektory jsou komponenty, které pomáhají tyto výzvy překonat.
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 populárních relačních databází, včetně MySQL, PostgreSQL, Oracle, SQL Server a DB2. Každý z těchto konektorů ví, jak komunikovat s přidruženým DBMS. K dispozici je také obecný konektor JDBC pro připojení k jakékoli databázi, která podporuje protokol JDBC Java. Data Sqoop Big navíc poskytují optimalizované konektory MySQL a PostgreSQL, které k efektivnímu hromadnému přenosu používají API specifická pro databázi.
Kromě toho má Sqoop ve velkých datech různé konektory třetích stran pro datové sklady, od podnikových datových skladů (včetně Netezza, Teradata a Oracle) až po obchody NoSQL (jako je Couchbase). Tyto konektory však nejsou dodávány s balíčkem 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 klastrů Hadoop. Tento proces hromadného načítání dat do Hadoopu z heterogenních zdrojů a jejich následného zpracování přichází s určitou sadou výzev. Udržování a zajišťování konzistence dat a zajišťování efektivního využívání zdrojů jsou některé faktory, které je třeba zvážit před výběrem správného přístupu k datovému zatížení.
Hlavní problémy:
1. Načtení dat pomocí skriptů
Tradiční přístup k načítání dat pomocí skriptů není vhodný pro hromadné načítání dat do Hadoopu; tento přístup je neefektivní a velmi časově náročný.
2. Přímý přístup k externím datům prostřednictvím aplikace 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 s redukcí mapy tyto aplikace komplikuje. Tento přístup tedy není proveditelný.
3. Kromě možnosti pracovat s obrovskými daty může Hadoop pracovat s daty v několika různých formách. Aby bylo možné načíst taková heterogenní data do Hadoopu, byly vyvinuty různé nástroje. Sqoop a Flume jsou dva takové nástroje pro načítání dat.
Dále v tomto výukovém programu Sqoop s příklady se dozvíme o rozdílech mezi Sqoop, Flume a HDFS.
Sqoop vs Flume vs HDFS v Hadoop
Sqoop | Žlab | HDFS |
---|---|---|
Sqoop se používá pro import dat ze zdrojů strukturovaných dat, jako je RDBMS. | Flume se používá pro přesun hromadně streamovaných dat 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 do více datových uzlů. |
HDFS je cíl pro import dat pomocí Sqoop. | Tok dat do HDFS nulovým nebo více kanály. | HDFS je konečným cílem pro ukládání dat. |
Načtení dat Sqoop není řízeno událostmi. | Načítání dat žlabů 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 nutné použít pouze příkazy Sqoop, protože jeho konektory vědí, jak komunikovat se zdroji strukturovaných dat a načítat z nich data. | Chcete-li načíst streamovaná data, jako jsou tweety generované na Twitteru nebo soubory protokolu webového serveru, měl by se použít Flume. Agenti žlabů jsou vytvořeni pro načítání streamovaných dat. | HDFS má vlastní vestavěné příkazy prostředí pro ukládání dat do něj. HDFS nemůže importovat streamovaná data |