Výukový program Apache Sqoop - Import / Export dat mezi HDFS a RDBMS



Výukový program Apache Sqoop: Sqoop je nástroj pro přenos dat mezi Hadoop a relačními databázemi. Tento blog se zabývá importem a exportem Sooop z MySQL.

Než začneme s tímto výukovým programem Apache Sqoop, udělejme krok zpět. Vzpomínáte si na důležitost přijímání dat, jak jsme o tom diskutovali v našem dřívějším blogu Apache žlab . Nyní víme, že Apache Flume je nástroj pro příjem dat pro nestrukturované zdroje, ale organizace ukládají svá provozní data do relačních databází. Proto byla potřeba nástroj, který by dokázal importovat a exportovat data z relačních databází. Proto se narodil Apache Sqoop. Sqoop lze snadno integrovat s Hadoopem a ukládat strukturovaná data z relačních databází na HDFS, což doplňuje sílu Hadoopu. To je důvod, proč, nařizuje důkladnou znalost Apache Sqoop a Flume.

Zpočátku byl Sqoop vyvinut a udržován společností Cloudera. Později, 23. července 2011, to bylo inkubováno Apache. V dubnu 2012 byl projekt Sqoop propagován jako projekt nejvyšší úrovně Apache.





V tomto výukovém blogu Apache Flume se budeme věnovat:



Tento tutoriál Apache Sqoop začneme zavedením Apache Sqoop. Poté budeme rozumět výhodám používání Apache Sqoop.

Výukový program Apache Sqoop: Úvod do Sqoop

Apache Sqoop - Výukový program Apache Sqoop - EdurekaObecně platí, že aplikace interagují s relační databází pomocí RDBMS, a proto se relační databáze stávají jedním z nejdůležitějších zdrojů, které generují velká data. Taková data jsou uložena na serverech RDB v relační struktuře. Zde hraje Apache Sqoop důležitou roli , poskytující proveditelnou interakci mezi serverem relační databáze a HDFS.

Apache Sqoop je tedy nástroj který je určen k přenosu dat mezi HDFS (Úložiště Hadoop) a relační databázové servery jako MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres atd. Apache Sqoop importuje data z relačních databází do HDFS a exportuje data z HDFS do relačních databází. Efektivně přenáší hromadná data mezi Hadoop a externími datovými sklady, jako jsou podnikové datové sklady, relační databáze atd.



Tak dostal Sqoop své jméno - “ SQ L k Had otevřeno & Hadoop to SQL “.

Navíc se Sqoop používá k importu dat z externích datových úložišť do nástrojů ekosystému Hadoop Úl & HBase .

Nyní, jak víme, co je Apache Sqoop. Pojďme tedy pokročit v našem výukovém programu Apache Sqoop a pochopit, proč organizace Sqoop značně využívají.

Výukový program Apache Sqoop: Proč Sqoop?

Pro vývojáře Hadoop začíná skutečná hra po načtení dat do HDFS. Hrají si s těmito daty, aby získali různé postřehy skryté v datech uložených v HDFS.

Pro tuto analýzu je tedy nutné data uložená v systémech správy relačních databází přenést na HDFS. Úkol psát kód pro import a export dat z relační databáze do HDFS je nezajímavý a zdlouhavý. To je místo, kde Apache Sqoop přijde na záchranu a odstraní jejich bolest. Automatizuje proces importu a exportu dat.

Sqoop usnadňuje život vývojářům poskytováním rozhraní příkazového řádku pro import a export dat. Musí pouze poskytnout základní informace, jako je autentizace databáze, zdroj, cíl, operace atd. Postará se o zbývající část.

Sqoop interně převede příkaz na úlohy MapReduce, které se poté provedou přes HDFS. Používá rámec YARN k importu a exportu dat, což poskytuje odolnost vůči chybám na vrcholu paralelismu.

Pokrok v tomto blogu Sqoop Tutorial, porozumíme klíčovým vlastnostem Sqoop a poté přejdeme k architektuře Apache Sqoop.

Výukový program Apache Sqoop: Klíčové vlastnosti Sqoop

Sqoop poskytuje mnoho hlavních funkcí, jako jsou:

  1. Plně naložen : Apache Sqoop může načíst celou tabulku jediným příkazem. Můžete také načíst všechny tabulky z databáze pomocí jediného příkazu.
  2. Přírůstkové Zatížení : Apache Sqoop také poskytuje možnost přírůstkového načtení, kde můžete načíst části tabulky, kdykoli je aktualizována.
  3. Paralelní import Export : Sqoop používá rámec YARN k importu a exportu dat, což poskytuje odolnost vůči chybám navíc k paralelismu.
  4. Import Výsledek z SQL dotaz : Můžete také importovat výsledek vrácený z dotazu SQL v HDFS.
  5. Komprese : Data můžete komprimovat pomocí algoritmu deflate (gzip) s argumentem –compress nebo zadáním argumentu –compression-codec. Můžete také načíst komprimovanou tabulku v Apache Hive .
  6. Konektory pro Všechno hlavní, důležitý RDBMS Databáze : Apache Sqoop poskytuje konektory pro více databází RDBMS pokrývající téměř celý obvod.
  7. Kerberos Bezpečnostní Integrace : Kerberos je protokol pro ověřování v počítačové síti, který funguje na základě „lístků“, které umožňují uzlům komunikujícím přes nezabezpečenou síť navzájem bezpečně prokazovat svoji totožnost. Sqoop podporuje ověřování pomocí protokolu Kerberos.
  8. Zatížení data přímo do Úl / HBase : Data můžete načíst přímo do Apache Hive pro analýzu a také výpis dat v HBase, což je databáze NoSQL.
  9. Podpěra, podpora pro Nashromáždění : Můžete také dát Sqoopu pokyn, aby importoval tabulku v Accumulo místo adresáře v HDFS.

Architektura je ta, která umožňuje Apache Sqoop s těmito výhodami. Nyní, jak známe funkce Apache Sqoop, pojďme kupředu a pochopme architekturu a fungování Apache Sqoop.

Výukový program Apache Sqoop: Sqoop Architecture & Working

Pojďme pochopit, jak Apache Sqoop funguje, pomocí následujícího diagramu:

Nástroj pro import importuje jednotlivé tabulky z RDBMS do HDFS. Každý řádek v tabulce je považován za záznam v HDFS.

periodická tabulka nástrojů devops

Když zadáme příkaz Sqoop, náš hlavní úkol se rozdělí na dílčí úkoly, které interně zpracovává jednotlivé mapové úlohy. Mapová úloha je dílčí úkol, který importuje část dat do ekosystému Hadoop. Dohromady všechny úlohy Map importují všechna data.

Podobným způsobem funguje i export.

Nástroj pro export exportuje sadu souborů z HDFS zpět do RDBMS. Soubory zadané jako vstup do Sqoopu obsahují záznamy, které se v tabulce nazývají jako řádky.

Když zadáme naši úlohu, je namapována do Mapových úkolů, což přináší hromadu dat z HDFS. Tyto bloky jsou exportovány do cíle strukturovaných dat. Kombinací všech těchto exportovaných bloků dat dostáváme všechna data na místo určení, což je ve většině případů RDBMS (MYSQL / Oracle / SQL Server).

V případě agregací je vyžadována redukční fáze. Apache Sqoop ale pouze importuje a exportuje data, která neprovádí žádné agregace. Spuštění úlohy mapování více mapovačů v závislosti na počtu definovaném uživatelem. U importu Sqoop bude každé úloze mapovače přiřazena část dat, která mají být importována. Sqoop rovnoměrně rozděluje vstupní data mezi mapovače, aby získal vysoký výkon. Pak každý mapovač vytvoří spojení s databází pomocí JDBC a načte část dat přiřazených Sqoop a zapíše ji do HDFS nebo Hive nebo HBase na základě argumentů uvedených v CLI.

Nyní, když rozumíme architektuře a fungování Apache Sqoop, pojďme pochopit rozdíl mezi Apache Flume a Apache Sqoop.

Výukový program Apache Sqoop: Flume vs Sqoop

Hlavní rozdíl mezi Flume a Sqoop spočívá v tom, že:

  • Flume přijímá do HDFS pouze nestrukturovaná data nebo polostrukturovaná data.
  • Zatímco Sqoop může importovat i exportovat strukturovaná data z datových skladů RDBMS nebo Enterprise na HDFS nebo naopak.

Nyní, postupující v našem výukovém programu Apache Sqoop, je nejvyšší čas projít příkazy Apache Sqoop.

Výukový program Apache Sqoop: Příkazy Sqoop

  • Sqoop - příkaz IMPORT

Příkaz Import se používá k importu tabulky z relačních databází do HDFS. V našem případě budeme importovat tabulky z MySQL databází na HDFS.

Jak vidíte na následujícím obrázku, máme tabulku zaměstnanců v databázi zaměstnanců, kterou budeme importovat do HDFS.

Příkaz pro import tabulky je:

import sqoop --connect jdbc: mysql: // localhost / zaměstnanci --username edureka --tabulka zaměstnanců

Jak můžete vidět na následujícím obrázku, po provedení tohoto příkazu budou úlohy Mapy provedeny na zadním konci.

Po provedení kódu můžete zkontrolovat webové uživatelské rozhraní HDFS, tj. Localhost: 50070, kam se importují data.

  • Sqoop - příkaz IMPORT s cílovým adresářem

Tabulku můžete také importovat do konkrétního adresáře v HDFS pomocí následujícího příkazu:

import sqoop --connect jdbc: mysql: // localhost / zaměstnanci --username edureka --tabulka zaměstnanců --m 1 --cílový adresář / zaměstnanci

Sqoop importuje data paralelně z většiny databázových zdrojů. -m vlastnost se používá k určení počtu mapovačů, které mají být provedeny.

Sqoop importuje data paralelně z většiny databázových zdrojů. Můžete určit počet mapových úloh (paralelních procesů), které se mají použít k provedení importu, pomocí -m nebo –Počet mapovačů argument. Každý z těchto argumentů má celočíselnou hodnotu, která odpovídá stupni použitého paralelismu.

Počet mapovačů můžete ovládat nezávisle na počtu souborů v adresáři. Výkon exportu závisí na míře paralelismu. Ve výchozím nastavení bude Sqoop pro proces exportu používat současně čtyři úkoly. To nemusí být optimální, budete muset experimentovat s vlastním konkrétním nastavením. Další úkoly mohou nabídnout lepší souběžnost, ale pokud je databáze již zúžena při aktualizaci indexů, vyvolání spouštěčů atd., Pak další zatížení může snížit výkon.

Na následujícím obrázku vidíte, že počet úkolů mapovače je 1.

Počet souborů, které jsou vytvořeny při importu tabulek MySQL, se rovná počtu vytvořených mapovačů.

  • Sqoop - příkaz IMPORT s klauzulí Where

Podskupinu tabulky můžete importovat pomocí klauzule „where“ v nástroji pro import Sqoop. Spustí odpovídající SQL dotaz na příslušném databázovém serveru a uloží výsledek do cílového adresáře v HDFS. Následující příkaz můžete použít k importu dat pomocí ‚ kde „Doložka:

import sqoop --connect jdbc: mysql: // localhost / zaměstnanci --username edureka --tabulka zaměstnanců --m 3 - kde 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - přírůstkový import

Sqoop poskytuje režim přírůstkového importu, který lze použít k načtení pouze novějších řádků než některé dříve importované sady řádků. Sqoop podporuje dva typy přírůstkových importů: připojit a naposledy změněno . Pomocí argumentu –incremental můžete určit typ přírůstkového importu, který se má provést.

Měli byste specifikovat připojit režim při importu tabulky, kde jsou neustále přidávány nové řádky se zvyšujícími se hodnotami id řádků. Sloupec obsahující ID řádku určíte pomocí –Kontrolní sloupec . Sqoop importuje řádky, kde má kontrolní sloupec hodnotu větší než ta, která je uvedena v –Poslední hodnota .

Je volána alternativní strategie aktualizace tabulky podporovaná Sqoop naposledy změněno režimu. Toto byste měli použít, když je možné aktualizovat řádky zdrojové tabulky, a každá taková aktualizace nastaví hodnotu naposledy upraveného sloupce na aktuální časové razítko.

Při spuštění následného importu byste měli zadat –Poslední hodnota tímto způsobem zajistíte, že importujete pouze nová nebo aktualizovaná data. To se řeší automaticky vytvořením přírůstkového importu jako uložené úlohy, což je upřednostňovaný mechanismus pro provádění opakovaného přírůstkového importu.

Nejprve vložíme nový řádek, který bude aktualizován v našem HDFS.

Příkaz pro přírůstkový import je:

import sqoop --connect jdbc: mysql: // localhost / zaměstnanci --username edureka --tabule zaměstnanců --target-dir / Latest_Employees --incremental append --check-column emp_no --last-value 499999

Na následujícím obrázku vidíte, že je vytvořen nový soubor s aktualizovanými daty.

  • Sqoop - import všech tabulek

Můžete importovat všechny tabulky z databázového serveru RDBMS na HDFS. Každá data tabulky jsou uložena v samostatném adresáři a název adresáře je stejný jako název tabulky. Je povinné, aby každá tabulka v této databázi měla pole primárního klíče. Příkaz pro import celé tabulky z databáze je:

sqoop import-all-tables --connect jdbc: mysql: // localhost / zaměstnanci --username edureka

  • Sqoop - seznam databází

Můžete zobrazit seznam databází přítomných v relační databázi pomocí Sqoop. Nástroj Sqoop list-databses analyzuje a spouští dotaz „ZOBRAZIT DATABÁZY“ proti databázovému serveru. Příkaz pro výpis databází je:

sqoop list-databases --connect jdbc: mysql: // localhost / --username edureka

  • Sqoop - seznam tabulek

Pomocí Sqoop můžete také vypsat tabulky konkrétní databáze na databázovém serveru MySQL. Nástroj Sqoop list-tables analyzuje a spouští dotaz „ZOBRAZIT TABULKY“. Příkaz pro výpis tabulek je databáze:

sqoop list-tables --connect jdbc: mysql: // localhost / zaměstnanci --username edureka

  • Sqoop - export

Jak jsme diskutovali výše, můžete také exportovat data z HDFS do databáze RDBMS. Cílová tabulka musí v cílové databázi existovat.Data jsou uložena jako záznamy v HDFS. Tyto záznamy jsou čteny a analyzovány a oddělovány uživatelem definovaným oddělovačem.Výchozí operace je vložit veškerý záznam ze vstupních souborů do databázové tabulky pomocí příkazu INSERT. V režimu aktualizace Sqoop generuje příkaz UPDATE, který nahradí existující záznam do databáze.

Nejprve tedy vytváříme prázdnou tabulku, kam budeme exportovat naše data.

Příkaz pro export dat z HDFS do relační databáze je:

export sqoop --connect jdbc: mysql: // localhost / zaměstnanci --username edureka --tabulka emp --export-dir / uživatel / edureka / zaměstnanci

  • Sqoop - Codegen

V objektově orientované aplikaci má každá databázová tabulka jednu třídu Data Access Object, která obsahuje metody „getter“ a „setter“ pro inicializaci objektů. Codegen generuje třídu DAO automaticky. Generuje třídu DAO v Javě na základě struktury schématu tabulky.

Příkaz pro generování kódu Java je:

sqoop codegen --connect jdbc: mysql: // localhost / zaměstnanci --username edureka --tabulka zaměstnanců

Cestu vidíte na obrázku výše, kde je generován kód. Pojďme jít cestou a zkontrolovat vytvořené soubory.

Doufám, že tento blog bude informativní a bude pro vás přidanou hodnotou. Pokud se chcete dozvědět více, můžete si projít toto který vám řekne o Big Data a o tom, jak Hadoop řeší výzvy spojené s Big Data.

Nyní, když jste porozuměli Apache Sqoop, podívejte se na Edureka, důvěryhodná online vzdělávací společnost se sítí více než 250 000 spokojených studentů po celém světě. Kurz certifikace Edureka Big Data Hadoop Certification Training pomáhá studentům stát se odborníky na HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume a Sqoop pomocí případů použití v reálném čase v oblasti maloobchodu, sociálních médií, letectví, cestovního ruchu, financí.

Máte na nás dotaz? Uveďte to prosím v sekci komentáře a my se vám ozveme.