Apache Sqoopi õpetus - HDFS-i ja RDBMS-i andmete importimine / eksportimine



Apache Sqoopi õpetus: Sqoop on tööriist andmete edastamiseks Hadoopi ja relatsiooniliste andmebaaside vahel. See ajaveeb käsitleb MySQL-ist Sooopi importimist ja eksportimist.

Enne selle Apache Sqoopi õpetusega alustamist astume samm tagasi. Kas mäletate andmete sisestamise olulisust, nagu me seda oma varasemas ajaveebis arutlesime Apache Flume . Nüüd, kui me teame, et Apache Flume on andmete sisestamise tööriist struktureerimata allikate jaoks, kuid organisatsioonid salvestavad oma operatiivandmed relatsioonide andmebaasidesse. Niisiis oli vaja tööriista, mis võimaldab andmeid relatsiooniandmebaasidest importida ja eksportida. Sellepärast sündiski Apache Sqoop. Sqoop saab hõlpsasti integreeruda Hadoopiga ja struktureeritud andmeid relatsiooniandmebaasidest HDFS-i viia, täiendades Hadoopi jõudu. See on põhjus, miks, nõuab Apache Sqoopi ja Flume'i põhjalikke teadmisi.

Esialgu arendas ja hooldas Sqoopi Cloudera. Hiljem, 23. juulil 2011, inkubeeris seda Apache. 2012. aasta aprillis reklaamiti Sqoopi projekti kui Apache tipptasemel projekti.





Selles Apache Flume'i õpetuse ajaveebis käsitleme järgmist:



Alustame seda Apache Sqoopi õpetust, tutvustades Apache Sqoopi. Edasi liikudes mõistame Apache Sqoopi kasutamise eeliseid.

Apache Sqoopi õpetus: Sqoopi sissejuhatus

Apache Sqoop - Apache Sqoopi õpetus - EdurekaÜldiselt suhtlevad rakendused relatsiooniandmebaasiga, kasutades RDBMS-i ja seeläbi on relatsiooniandmebaasid üheks olulisemaks Big Data genereerivaks allikaks. Selliseid andmeid hoitakse relatsioonistruktuuris RDB-serverites. Siin mängib Apache Sqoop olulist rolli , pakkudes teostatavat suhtlust relatsiooniandmebaasi serveri ja HDFS-i vahel.

Niisiis, Apache Sqoop on tööriist mis on mõeldud andmete edastamiseks HDFS (Hadoopi salvestusruum) ja relatsiooniandmebaasi serverid, nagu MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres jne. Apache Sqoop impordib andmeid relatsiooniandmebaasidest HDFS-i ja eksportib andmeid HDFS-ist relatsiooniandmebaasidesse. See kannab tõhusalt üle hulgiandmeid Hadoopi ja väliste andmepoodide vahel, nagu ettevõtte andmeladud, relatsiooniandmebaasid jne.



Nii sai Sqoop oma nime - “ SQ L oli avatud & Hadoop SQL-iks ”.

Lisaks kasutatakse Sqoopi andmete importimiseks välistest andmekauplustest Hadoopi ökosüsteemi tööriistadesse Taru & HBase .

Nüüd, kui me teame, mis on Apache Sqoop. Niisiis, jätkake meie Apache Sqoopi õpetuses ja mõistame, miks organisatsioonid kasutavad Sqoopi laialdaselt.

Apache Sqoopi õpetus: miks Sqoop?

Hadoopi arendaja jaoks algab tegelik mäng pärast andmete laadimist HDFS-i. Nad mängivad neid andmeid, et saada HDFS-i salvestatud andmetesse peidetud erinevaid teadmisi.

Seega tuleb selle analüüsi jaoks relatsioonandmebaasi haldussüsteemides olevad andmed HDFS-i üle kanda. Kirjutamise ülesanne kood relatsioonide andmebaasist andmete importimiseks ja eksportimiseks HDFS-i on ebahuvitav ja tüütu. Siin tuleb Apache Sqoop appi ja eemaldab nende valu. See automatiseerib andmete importimise ja eksportimise protsessi.

Sqoop muudab arendajate elu lihtsaks, pakkudes andmete importimiseks ja eksportimiseks CLI-d. Nad peavad lihtsalt esitama põhiteabe, nagu andmebaasi autentimine, allikas, sihtkoht, toimingud jne. See hoolitseb ülejäänud osa eest.

Sqoop teisendab käsu sisemiselt MapReduce'i ülesanneteks, mis seejärel täidetakse HDFS-i kaudu. See kasutab andmete importimiseks ja eksportimiseks YARN raamistikku, mis tagab paralleelsuse kõrval ka rikketaluvuse.

kuidas teisendada topelt int java

Selles Sqoopi õpetuse ajaveebis edasi liikudes saame aru Sqoopi põhifunktsioonidest ja seejärel liigume Apache Sqoopi arhitektuuri juurde.

Apache Sqoopi õpetus: Sqoopi põhijooned

Sqoop pakub palju olulisi funktsioone, näiteks:

  1. Täislaadung : Apache Sqoop saab kogu käsu ühe tabeli abil laadida. Kõiki tabeleid saab andmebaasist laadida ka ühe käsu abil.
  2. Järk-järgult Koormus : Apache Sqoop pakub ka järkjärgulise koormuse võimalust, kuhu saate iga tabeli osa laadida alati, kui seda värskendatakse.
  3. Paralleelselt import ja eksport : Sqoop kasutab andmete importimiseks ja eksportimiseks YARN raamistikku, mis tagab paralleelsuse kõrval ka tõrketaluvuse.
  4. Impordi tulemused kohta SQL päring : Võite importida ka SQL-päringust tagastatud tulemuse HDFS-is.
  5. Kokkusurumine : Andmeid saab tihendada deflate (gzip) algoritmi kasutades –compress argumendiga või määrates –compression-codec argumendi. Võite ka tihendatud tabeli laadida Apache taru .
  6. Pistikud jaoks kõik major RDBMS Andmebaasid : Apache Sqoop pakub ühendusi mitme RDBMS-i andmebaasi jaoks, hõlmates peaaegu kogu ümbermõõtu.
  7. Kerberos Turvalisus Integratsioon : Kerberos on arvutivõrgu autentimisprotokoll, mis töötab piletite põhjal, et mitteturvalise võrgu kaudu suhtlevad sõlmed saaksid üksteisele turvaliselt oma isikut tõestada. Sqoop toetab Kerberose autentimist.
  8. Koormus andmed otse sisse HIVE / HBase : Saate andmeid otse laadida Apache taru analüüsimiseks ja oma andmed ladustatakse ka HBase'i, mis on NoSQL-i andmebaas.
  9. Toetus jaoks Kogunemine : Samuti saate Sqoopile anda käsu tabeli importimiseks Accumulosse, mitte HDFS-i kataloogi.

Arhitektuur annab sellise eelise Apache Sqoopile. Nüüd, kui teame Apache Sqoopi funktsioone, liigume edasi ja mõistame Apache Sqoopi arhitektuuri ja toimimist.

Apache Sqoopi õpetus: Sqoopi arhitektuur ja töö

Andke meile mõista, kuidas Apache Sqoop töötab, kasutades järgmist diagrammi:

Imporditööriist impordib üksikud tabelid RDBMS-ist HDFS-i. Tabeli iga rida käsitletakse HDFS-is kirjena.

Kui esitame käsu Sqoop, jagatakse meie põhiülesanne alamülesanneteks, mida individuaalne Map Task haldab sisemiselt. Map Task on alaülesanne, mis impordib osa andmetest Hadoopi ökosüsteemi. Kõik Kaardi ülesanded impordivad tervikuna kogu teabe.

Ka eksport töötab sarnaselt.

Eksporditööriist eksportib failikomplekti HDFS-ist tagasi RDBMS-i. Sqoopi sisendina antud failid sisaldavad kirjeid, mida tabelis nimetatakse ridadeks.

Kui me oma töö esitame, kaardistatakse see kaardiülesannetesse, mis toob HDFS-i hulga andmeid. Need tükid eksporditakse struktureeritud andmete sihtkohta. Kombineerides kõik need eksporditud andmepalad, saame sihtkohta kõik andmed, mis enamasti on RDBMS (MYSQL / Oracle / SQL Server).

Liitmise korral on vajalik vähendusfaas. Kuid Apache Sqoop lihtsalt impordib ja ekspordib andmeid, mida ta ei koonda. Kaardi abil saate käivitada mitu kaardistajat sõltuvalt kasutaja määratletud arvust. Sqoopi importimiseks määratakse igale kaardistajaülesandele osa imporditavatest andmetest. Suure jõudluse saavutamiseks jagab Sqoop sisendandmed kaardistajate vahel võrdselt. Seejärel loob iga kaardistaja JDBC-ga ühenduse andmebaasiga ja tõmbab Sqoopi määratud osa andmetest ning kirjutab need CLI-s toodud argumentide põhjal HDFS-i või Hive'i või HBase'i.

Nüüd, kui oleme aru saanud Apache Sqoopi arhitektuurist ja toimimisest, mõistame Apache Flume'i ja Apache Sqoopi erinevust.

Apache Sqoopi õpetus: Flume vs Sqoop

Peamine erinevus Flume'i ja Sqoopi vahel on see, et:

  • Flume sisestab HDFS-i ainult struktureerimata või poolstruktureeritud andmeid.
  • Kuigi Sqoop saab nii struktureeritud andmeid importida kui ka eksportida RDBMS-i või Enterprise'i andmehoidlatest HDFS-i või vastupidi.

Nüüd on meie Apache Sqoopi õpetuses edasiliikumine viimane aeg Apache Sqoopi käskude läbimiseks.

Apache Sqoopi õpetus: Sqoopi käsud

  • Sqoop - käsk IMPORT

Käsku Import kasutatakse tabeli importimiseks relatsiooniandmebaasidest HDFS-i. Meie puhul impordime tabeleid MySQL-i andmebaasidest HDFS-i.

Nagu näete alloleval pildil, on töötajate andmebaasis töötajate tabel, mille impordime HDFS-i.

Tabeli importimise käsk on:

sqoop import --connect jdbc: mysql: // localhost / töötajad --kasutajanimi edureka --tabeli töötajad

Nagu näete alloleval pildil, käivitatakse pärast selle käsu täitmist kaardil ülesanded tagaküljel.

Pärast koodi käivitamist saate kontrollida HDFS-i veebiliidest, st localhost: 50070, kuhu andmed imporditakse.

  • Sqoop - IMPORT käsk sihtkataloogiga

Tabeli saate importida ka HDFS-i kindlasse kataloogi, kasutades järgmist käsku:

sqoop import --connect jdbc: mysql: // localhost / töötajad --kasutajanimi edureka --tabeli töötajad --m 1 --target-dir / töötajad

Sqoop impordib andmeid paralleelselt enamikust andmebaasiallikatest. -m atribuuti kasutatakse täidetavate kaardistajate arvu määramiseks.

Sqoop impordib andmeid paralleelselt enamikust andmebaasiallikatest. Saate määrata kaardiülesannete (paralleelprotsesside) arvu, mida impordi jaoks kasutada, kasutades nuppu -m või –Numbakaardistajad argument. Kõik need argumendid võtavad täisarvu, mis vastab paralleelsuse määrale.

Kaardistajate arvu saate juhtida kataloogis olevate failide arvust sõltumatult. Ekspordi jõudlus sõltub paralleelsuse astmest. Vaikimisi kasutab Sqoop ekspordiprotsessis paralleelselt nelja ülesannet. See ei pruugi olla optimaalne, peate katsetama oma konkreetse seadistusega. Täiendavad ülesanded võivad pakkuda paremat samaaegsust, kuid kui andmebaas on indeksite värskendamisel, päästikute kutsumisel jms kitsaskohas, võib täiendav koormus jõudlust vähendada.

Alloleval pildil näete, et kaardistaja ülesande arv on 1.

MySQL-i tabelite importimisel loodud failide arv on võrdne loodud kaardistajate arvuga.

  • Sqoop - käsk IMPORT, kus on klausel

Tabeli alamhulga saate importida, kasutades Sqoopi imporditööriista klauslit ‘kus’. See täidab vastava SQL-päringu vastavas andmebaasiserveris ja salvestab tulemuse HDFS-i sihtkataloogi. Andmete importimiseks käsuga ’saate kasutada järgmist käsku kus “Klausel:

sqoop import --connect jdbc: mysql: // localhost / töötajad --kasutajanimi edureka --tabeli töötajad --m 3 - kus 'emp_no & gt 49000' --target-dir / Latest_Employees

  • Sqoop - järkjärguline import

Sqoop pakub järkjärgulist impordirežiimi, mida saab kasutada ainult mõnede varem imporditud ridade komplektist uuemate ridade hankimiseks. Sqoop toetab kahte tüüpi täiendavat importi: lisama ja viimati muudetud . Argumendi –increment abil saate täpsustada imporditava impordi tüübi.

Peaksite täpsustama lisama režiimis tabeli importimisel, kus pidevalt lisatakse uusi ridu koos rea ID väärtuste suurenemisega. Määrate veeru, mis sisaldab rea ID-d –Kontroll-veerg . Sqoop impordib ridu, kus kontrollveeru väärtus on suurem kui tähisega - viimane väärtus .

Nimetatakse alternatiivset tabeli värskendamise strateegiat, mida toetab Sqoop viimati muudetud režiimis. Seda peaksite kasutama siis, kui lähtetabeli ridu võidakse värskendada ja iga selline värskendus määrab viimase muudetud veeru väärtuseks praeguse ajatempli.

Järgmise impordi käivitamisel peaksite määrama - viimane väärtus Sel viisil saate importida ainult uued või värskendatud andmed. Seda käsitletakse automaatselt, luues salvestatud tööna impordi järk-järgult, mis on eelistatud mehhanism korduva impordi sooritamiseks.

Esiteks sisestame uue rea, mida värskendatakse meie HDFS-is.

Järk-järgulise impordi käsk on:

sqoop import --connect jdbc: mysql: // localhost / töötajad --kasutajanimi edureka --tabeli töötajad --target-dir / viimased_töötajad - inkrementaalne lisa - kontroll-veerg emp_no - viimane väärtus 499999

Alloleval pildil näete, et värskendatud andmetega luuakse uus fail.

  • Sqoop - kõigi tabelite importimine

Kõiki tabeleid saate importida RDBMS-i andmebaasiserverist HDFS-i. Iga tabeli andmed salvestatakse eraldi kataloogi ja kataloogi nimi on sama mis tabeli nimi. On kohustuslik, et igas selle andmebaasi tabelis peab olema esmane võti. Käsk kogu tabeli importimiseks andmebaasist on:

sqoop import-kõik-tabelid - ühendage jdbc: mysql: // localhost / töötajad --kasutajanimi edureka

  • Sqoop - andmebaaside loend

Sqoopi abil saate loetleda seotud andmebaasis olevad andmebaasid. Sqoop list-andmebaaside tööriist sõelub ja täidab andmebaasi serveri suhtes päringu ‘NÄITA ANDMEBAASE’. Andmebaaside loendamise käsk on:

sqoop list-andmebaasid - ühendage jdbc: mysql: // localhost / --kasutajanimi edureka

  • Sqoop - nimekirja tabelid

Samuti saate Sqoopi abil loetleda MySQL-i andmebaasiserveri konkreetse andmebaasi tabelid. Sqoopi loenditabelite tööriist sõelub ja viib läbi päringu ‘NÄITA TABELE’. Tabelite loendamise käsk on andmebaas:

sqoop list-tabelid - ühendage jdbc: mysql: // localhost / töötajad --kasutajanimi edureka

  • Sqoop - eksportimine

Nagu me eespool arutlesime, saate HDFS-ist andmeid eksportida ka RDBMS-i andmebaasi. Sihttabel peab olemas olema sihtandmebaasis.Andmed salvestatakse HDFS-i kirjetena. Neid kirjeid loetakse, parsitakse ja piiritletakse kasutaja määratud eraldajaga.Vaiketoiming on sisestada kogu kirje sisendfailidest andmebaasitabelisse INSERT-lause abil. Värskendusrežiimis genereerib Sqoop käsu UPDATE, mis asendab olemasoleva kirje andmebaasi.

Niisiis, kõigepealt loome tühja tabeli, kuhu me oma andmed eksportime.

Andmete eksportimiseks HDFS-ist relatsiooniandmebaasi on käsk:

sqoop eksport --ühendage jdbc: mysql: // localhost / töötajad --kasutajanimi edureka --tabel emp --export-dir / kasutaja / edureka / töötajad

  • Sqoop - Codegen

Objektorienteeritud rakenduses on igal andmebaasitabelil üks Data Access Object klass, mis sisaldab objektide initsialiseerimiseks meetodeid getter ja setter. Codegen genereerib DAO klassi automaatselt. See genereerib Java-s DAO-klassi, tuginedes tabeliskeemi struktuurile.

Java-koodi genereerimise käsk on:

sqoop codegen --connect jdbc: mysql: // localhost / töötajad --kasutajanimi edureka --tabeli töötajad

Kood on loodud ülaltoodud pildil. Läheme rajale ja kontrollime loodud faile.

Loodan, et see ajaveeb on informatiivne ja annab teile lisaväärtust. Kui soovite rohkem teada saada, võite selle läbi teha mis räägib teile suurandmetest ja sellest, kuidas Hadoop suurandmetega seotud väljakutseid lahendab.

Nüüd, kui olete Apache Sqoopist aru saanud, vaadake järgmist Edureka, usaldusväärne veebiõppeettevõte, mille võrgustik hõlmab üle 250 000 rahuloleva õppija, levinud üle kogu maailma. Edureka Big Data Hadoopi sertifitseerimiskoolitus aitab õppijatel saada HDFS, lõnga, MapReduce, Pig, Hive, HBase, Oozie, Flume ja Sqoop ekspertideks, kasutades reaalajas kasutatavaid juhtumeid jaekaubanduse, sotsiaalmeedia, lennunduse, turismi ja rahanduse valdkonnas.

seleeni veebidraiveri testng raamistiku näide

Kas teil on meile küsimus? Palun mainige seda kommentaaride jaotises ja võtame teiega ühendust.