Výukový program Apache Sqoop - Import / Export údajov medzi HDFS a RDBMS



Výukový program Apache Sqoop: Sqoop je nástroj na prenos dát medzi Hadoop a relačnými databázami. Tento blog sa venuje importu a exportu Sooop z MySQL.

Predtým, ako začneme s týmto tutoriálom Apache Sqoop, urobme krok späť. Môžete si spomenúť na dôležitosť prijímania údajov, ako sme o nich hovorili v našom predchádzajúcom blogu Apache Flume . Teraz, ako vieme, Apache Flume je nástroj na prijímanie údajov pre neštruktúrované zdroje, ale organizácie ukladajú svoje prevádzkové údaje do relačných databáz. Preto vznikla potreba nástroja, ktorý by dokázal importovať a exportovať údaje z relačných databáz. Preto sa narodil Apache Sqoop. Sqoop sa dá ľahko integrovať s Hadoopom a ukladať štruktúrované dáta z relačných databáz na HDFS, čo dopĺňa výkonnosť Hadoopu. To je dôvod, prečo, nariaďuje spoľahlivú znalosť produktov Apache Sqoop a Flume.

Sqoop bol pôvodne vyvíjaný a udržiavaný spoločnosťou Cloudera. Neskôr, 23. júla 2011, ho inkuboval Apache. V apríli 2012 bol projekt Sqoop propagovaný ako projekt najvyššej úrovne spoločnosti Apache.





V tomto blogu tutoriálu Apache Flume sa budeme venovať:



Tento tutoriál Apache Sqoop začneme zavedením Apache Sqoop. Keď budeme napredovať, pochopíme výhody používania Apache Sqoop.

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

Apache Sqoop - Výukový program Apache Sqoop - EdurekaAplikácie vo všeobecnosti interagujú s relačnou databázou pomocou RDBMS, čo z nej robí relačné databázy jedným z najdôležitejších zdrojov, ktoré generujú veľké dáta. Takéto údaje sú uložené v serveroch RDB v relačnej štruktúre. Tu hrá Apache Sqoop dôležitú úlohu v , ktorá poskytuje uskutočniteľnú interakciu medzi serverom relačnej databázy a HDFS.

Apache Sqoop je teda nástroj v ktorý je určený na prenos údajov medzi HDFS (Úložisko Hadoop) a relačné databázové servery ako MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres atď. Apache Sqoop importuje údaje z relačných databáz do HDFS a exportuje údaje z HDFS do relačných databáz. Efektívne prenáša hromadné údaje medzi Hadoopom a externými úložiskami údajov, ako sú podnikové dátové sklady, relačné databázy atď.



Takto dostal Sqoop svoje meno - “ SQ L až Had otvorené & Hadoop to SQL “.

Sqoop sa navyše používa na import údajov z externých dátových úložísk do nástrojov ekosystému Hadoop, ako je napríklad Úľ & HBase .

Teraz, ako vieme, čo je Apache Sqoop. Poďme teda ďalej v našom výučbovom programe Apache Sqoop a pochopme, prečo organizácie Sqoop vo veľkej miere využívajú.

Výukový program Apache Sqoop: Prečo Sqoop?

Pre vývojárov Hadoop začína skutočná hra po načítaní údajov do HDFS. Zahrávajú si s týmito údajmi, aby získali rôzne štatistiky skryté v dátach uložených v HDFS.

Pre túto analýzu je teda potrebné preniesť údaje nachádzajúce sa v systémoch správy relačných databáz na HDFS. Úloha písania kód na import a export dát z relačnej databázy do HDFS je nezaujímavý a zdĺhavý. To je miesto, kde Apache Sqoop prichádza na záchranu a odstraňuje ich bolesť. Automatizuje proces importu a exportu údajov.

Sqoop uľahčuje život vývojárom tým, že poskytuje CLI na import a export údajov. Musia iba poskytnúť základné informácie, ako je autentifikácia databázy, zdroj, cieľ, operácie atď. O zvyšnú časť sa postará.

Sqoop interne prevádza príkaz na úlohy MapReduce, ktoré sa potom vykonávajú cez HDFS. Na import a export údajov používa rámec YARN, ktorý okrem paralelizmu poskytuje odolnosť voči chybám.

Postupom v tomto blogu Sqoop Tutorial budeme rozumieť kľúčovým vlastnostiam Sqoop a potom prejdeme k architektúre Apache Sqoop.

Výukový program Apache Sqoop: Kľúčové vlastnosti programu Sqoop

Sqoop poskytuje mnoho významných funkcií, ako napríklad:

  1. Plný náklad : Apache Sqoop dokáže načítať celú tabuľku jediným príkazom. Všetky tabuľky môžete tiež načítať z databázy pomocou jediného príkazu.
  2. Inkrementálne Naložiť : Apache Sqoop tiež poskytuje možnosť prírastkového načítania, kde môžete načítať časti tabuľky vždy, keď je aktualizovaná.
  3. Paralelne import / export : Sqoop používa na import a export dát rámec YARN, ktorý okrem paralelizmu poskytuje odolnosť voči chybám.
  4. Import výsledky z SQL dopyt : Môžete tiež importovať výsledok vrátený z dotazu SQL v HDFS.
  5. Kompresia : Vaše dáta môžete komprimovať pomocou algoritmu deflácie (gzip) s argumentom –compress alebo zadaním argumentu –compression-codec. Môžete tiež načítať komprimovanú tabuľku v Apache Hive .
  6. Konektory pre všetko major RDBMS Databázy : Apache Sqoop poskytuje konektory pre viac databáz RDBMS pokrývajúcich takmer celý obvod.
  7. Kerberos Bezpečnosť Integrácia : Kerberos je autentifikačný protokol počítačovej siete, ktorý funguje na základe „lístkov“, ktoré umožňujú uzlom komunikujúcim cez nezabezpečenú sieť navzájom si bezpečným spôsobom dokázať svoju totožnosť. Sqoop podporuje autentifikáciu Kerberos.
  8. Naložiť údaje priamo do Úľ / HBase : Údaje môžete načítať priamo do Apache Hive na analýzu a tiež vložte svoje údaje do HBase, čo je NoSQL databáza.
  9. podpora pre Akumulácia : Môžete tiež nariadiť Sqoopu, aby importoval tabuľku do Accumulo, a nie do adresára v HDFS.

Architektúra umožňuje aplikácii Apache Sqoop využívať tieto výhody. Teraz, keď poznáme vlastnosti Apache Sqoop, poďme ďalej a pochopme architektúru a fungovanie Apache Sqoop.

Výukový program Apache Sqoop: Sqoop architektúra a práca

Poďme pochopiť, ako Apache Sqoop funguje, pomocou nasledujúceho diagramu:

Nástroj na import importuje jednotlivé tabuľky z RDBMS do HDFS. Každý riadok v tabuľke sa považuje za záznam v HDFS.

periodická tabuľka nástrojov devops

Keď zadáme príkaz Sqoop, naša hlavná úloha sa rozdelí na čiastkové úlohy, ktoré interne rieši jednotlivá mapová úloha. Mapová úloha je podúloha, ktorá importuje časť údajov do ekosystému Hadoop. Všetky úlohy mapy hromadne importujú všetky údaje.

Podobným spôsobom funguje aj export.

Nástroj na export exportuje množinu súborov z HDFS späť do RDBMS. Súbory dané ako vstup do Sqoopu obsahujú záznamy, ktoré sa v tabuľke volajú ako riadky.

Keď zadáme svoju úlohu, namapuje sa to na Mapové úlohy, ktoré prinesú množstvo dát z HDFS. Tieto bloky sa exportujú do cieľových štruktúrovaných údajov. Kombináciou všetkých týchto exportovaných častí dát dostaneme všetky údaje na miesto určenia, ktorým je vo väčšine prípadov RDBMS (MYSQL / Oracle / SQL Server).

V prípade agregácií je potrebná redukčná fáza. Apache Sqoop však iba importuje a exportuje údaje, ktoré nevykonáva žiadne agregácie. Spustenie úlohy mapovania viacerých mapovačov v závislosti od počtu definovaného používateľom. Pre import Sqoop bude každej úlohe mapovača priradená časť údajov, ktoré sa majú importovať. Sqoop distribuuje vstupné údaje medzi mapovače rovnako, aby získal vysoký výkon. Potom každý mapovač vytvorí spojenie s databázou pomocou JDBC a načíta časť dát priradených Sqoopom a na základe argumentov uvedených v CLI ich zapíše do HDFS alebo Hive alebo HBase.

Teraz, keď rozumieme architektúre a fungovaniu Apache Sqoop, pochopme rozdiel medzi Apache Flume a Apache Sqoop.

Výukový program Apache Sqoop: Flume vs Sqoop

Hlavný rozdiel medzi Flume a Sqoop je v tom, že:

  • Flume prijíma do HDFS iba neštruktúrované údaje alebo pološtruktúrované údaje.
  • Zatiaľ čo Sqoop dokáže importovať aj exportovať štruktúrované dáta z dátových skladov RDBMS alebo Enterprise na HDFS alebo naopak.

Teraz, postupujúc v našom Výučbovom programe Apache Sqoop, je najvyšší čas prejsť príkazmi Apache Sqoop.

Výukový program Apache Sqoop: Príkazy Sqoop

  • Sqoop - príkaz IMPORT

Príkaz Import sa používa na import tabuľky z relačných databáz do HDFS. V našom prípade ideme importovať tabuľky z MySQL databáz do HDFS.

Ako vidíte na obrázku nižšie, v databáze zamestnancov máme tabuľku zamestnancov, ktorú importujeme do HDFS.

Príkaz na import tabuľky je:

sqoop import --connect jdbc: mysql: // localhost / zamestnanci --username edureka --tabuľkoví zamestnanci

Ako môžete vidieť na nasledujúcom obrázku, po vykonaní tohto príkazu sa úlohy mapy vykonajú na zadnom konci.

Po vykonaní kódu môžete skontrolovať webové používateľské rozhranie HDFS, tj. Localhost: 50070, kam sa importujú údaje.

  • Sqoop - príkaz IMPORT s cieľovým adresárom

Tabuľku môžete tiež importovať do konkrétneho adresára v HDFS pomocou nasledujúceho príkazu:

sqoop import --connect jdbc: mysql: // localhost / zamestnanci --username edureka --tabuľka zamestnanci --m 1 - cieľový adresár / zamestnanci

Sqoop importuje údaje paralelne z väčšiny databázových zdrojov. -m Vlastnosť sa používa na určenie počtu mapovačov, ktoré sa majú vykonať.

Sqoop importuje údaje paralelne z väčšiny databázových zdrojov. Môžete určiť počet mapových úloh (paralelných procesov), ktoré sa majú použiť na vykonanie importu, pomocou znaku -m alebo –Číslo mapovačov argument. Každý z týchto argumentov má celočíselnú hodnotu, ktorá zodpovedá stupňu paralelnosti, ktorý sa má použiť.

Počet mapovačov môžete ovládať nezávisle od počtu súborov v adresári. Výkonnosť vývozu závisí od stupňa paralelizmu. V predvolenom nastavení bude Sqoop pre proces exportu používať súčasne štyri úlohy. To nemusí byť optimálne, budete musieť experimentovať s vlastným konkrétnym nastavením. Ďalšie úlohy môžu ponúkať lepšiu súbežnosť, ale ak má databáza už problémové miesto pri aktualizácii indexov, vyvolaní spúšťačov atď., Potom ďalšie načítanie môže znížiť výkon.

Na nasledujúcom obrázku vidíte, že počet úloh mapovača je 1.

Počet súborov, ktoré sa vytvoria pri importe tabuliek MySQL, sa rovná počtu vytvoreného mapovača.

  • Sqoop - príkaz IMPORT s klauzulou Where

Podskupinu tabuľky môžete importovať pomocou klauzuly „where“ v nástroji na import Sqoop. Vykoná zodpovedajúci dotaz SQL na príslušnom databázovom serveri a výsledok uloží do cieľového adresára v HDFS. Nasledujúci príkaz môžete použiť na import údajov pomocou funkcie „ kde „Doložka:

sqoop import --connect jdbc: mysql: // localhost / zamestnanci --username edureka --tabuľka zamestnancov --m 3 - kde 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - prírastkový import

Sqoop poskytuje režim prírastkového importu, ktorým je možné načítať iba novšie riadky ako predtým importovaná sada riadkov. Sqoop podporuje dva typy prírastkových importov: pridať a naposledy zmenené . Na zadanie typu prírastkového importu, ktorý sa má vykonať, môžete použiť argument –incremental.

Mali by ste špecifikovať pridať režim pri importe tabuľky, kde sa neustále pridávajú nové riadky so zvyšujúcimi sa hodnotami id riadkov. Stĺpec obsahujúci id riadku určíte pomocou –Kontrolný stĺpec . Sqoop importuje riadky, ktorých kontrolný stĺpec má hodnotu väčšiu ako je hodnota uvedená v stĺpci –Posledná hodnota .

Je volaná alternatívna stratégia aktualizácie tabuľky podporovaná Sqoopom naposledy zmenené režim. Mali by ste to použiť, keď sa môžu aktualizovať riadky zdrojovej tabuľky, a každá takáto aktualizácia nastaví hodnotu naposledy zmeneného stĺpca na aktuálnu časovú pečiatku.

Pri spustení následného importu by ste mali určiť –Posledná hodnota týmto spôsobom zabezpečíte, že importujete iba nové alebo aktualizované údaje. Toto sa rieši automaticky vytvorením prírastkového importu ako uloženej úlohy, čo je preferovaný mechanizmus na vykonávanie opakovaného prírastkového importu.

Najskôr vložíme nový riadok, ktorý sa aktualizuje v našom HDFS.

Príkaz na prírastkový import je:

sqoop import --connect jdbc: mysql: // localhost / zamestnanci --username edureka --tabuľkoví zamestnanci --target-dir / Latest_Employees --incremental append --check-column emp_no --last-value 499999

Na obrázku nižšie môžete vidieť, že sa vytvorí nový súbor s aktualizovanými údajmi.

  • Sqoop - import všetkých tabuliek

Môžete importovať všetky tabuľky z databázového servera RDBMS do HDFS. Každé údaje tabuľky sú uložené v samostatnom adresári a názov adresára je rovnaký ako názov tabuľky. Je povinné, aby každá tabuľka v tejto databáze mala pole primárneho kľúča. Príkaz na import celej tabuľky z databázy je:

sqoop import-all-tables --connect jdbc: mysql: // localhost / zamestnanci --username edureka

  • Sqoop - zoznam databáz

Pomocou Sqoop môžete vypísať zoznam databáz nachádzajúcich sa v relačnej databáze. Nástroj Sqoop list-databses analyzuje a vykoná dopyt „ZOBRAZIŤ DATABÁZY“ na databázovom serveri. Príkaz na výpis databáz je:

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

  • Sqoop - zoznam tabuliek

Pomocou Sqoop môžete tiež vypísať tabuľky konkrétnej databázy na databázovom serveri MySQL. Nástroj Sqoop list-tables analyzuje a vykoná dopyt ‘SHOW TABLES’. Príkaz na výpis tabuliek je databáza:

sqoop list-tables --connect jdbc: mysql: // localhost / zamestnanci --username edureka

  • Sqoop - export

Ako sme už diskutovali vyššie, môžete tiež exportovať údaje z HDFS do databázy RDBMS. Cieľová tabuľka musí existovať v cieľovej databáze.Dáta sú uložené ako záznamy v HDFS. Tieto záznamy sa čítajú, analyzujú a oddeľujú používateľom zadaným oddeľovačom.Predvolenou operáciou je vloženie celého záznamu zo vstupných súborov do databázovej tabuľky pomocou príkazu INSERT. V režime aktualizácie Sqoop vygeneruje príkaz UPDATE, ktorý nahradí existujúci záznam do databázy.

Najprv teda vytvárame prázdnu tabuľku, kam budeme exportovať naše údaje.

Príkaz na export údajov z HDFS do relačnej databázy je:

export sqoop --connect jdbc: mysql: // localhost / zamestnanci --username edureka --tabuľka emp --export-dir / užívateľ / edureka / zamestnanci

  • Sqoop - Codegen

V objektovo orientovanej aplikácii má každá databázová tabuľka jednu triedu Data Access Object, ktorá obsahuje metódy „getter“ a „setter“ na inicializáciu objektov. Codegen generuje triedu DAO automaticky. Generuje triedu DAO v Jave na základe štruktúry tabuľky.

Príkaz na generovanie kódu Java je:

sqoop codegen --connect jdbc: mysql: // localhost / zamestnanci --username edureka --tabuľkoví zamestnanci

Cestu vidíte na obrázku vyššie, kde je generovaný kód. Poďme ďalej a skontrolujte vytvorené súbory.

Dúfam, že tento blog bude informatívny a bude pre vás pridanou hodnotou. Ak máte záujem dozvedieť sa viac, môžete si to prečítať ktorá vám hovorí o veľkých dátach a o tom, ako spoločnosť Hadoop rieši výzvy spojené s veľkými dátami.

Teraz, keď ste pochopili Apache Sqoop, pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Kurz certifikácie Edadoka Big Data Hadoop Certification Training pomáha študentom stať sa odborníkmi v oblasti HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume a Sqoop pomocou prípadov použitia v reálnom čase v oblasti maloobchodu, sociálnych médií, letectva, cestovného ruchu, financií.

Máte na nás otázku? Uveďte to prosím v sekcii komentárov a my sa vám ozveme.