„Apache Sqoop“ mokymo programa - duomenų importavimas / eksportavimas tarp HDFS ir RDBMS



„Apache Sqoop“ mokymo programa: „Sqoop“ yra įrankis duomenims perduoti tarp „Hadoop“ ir reliacinių duomenų bazių. Šis tinklaraštis apima „Sooop“ importą ir eksportą iš „MySQL“.

Prieš pradėdami naudotis šia „Apache Sqoop“ mokymo programa, leiskite mums žengti žingsnį atgal. Ar galėtumėte prisiminti duomenų praradimo svarbą, kaip mes tai aptarėme savo ankstesniame tinklaraštyje Apache Flume . Dabar, kai žinome, kad „Apache Flume“ yra nestruktūruotų šaltinių duomenų įsisavinimo įrankis, tačiau organizacijos savo operatyvinius duomenis saugo reliacinėse duomenų bazėse. Taigi reikėjo įrankio, kuris galėtų importuoti ir eksportuoti duomenis iš reliacinių duomenų bazių. Štai kodėl gimė Apache Sqoop. „Sqoop“ gali lengvai integruotis su „Hadoop“ ir išmesti struktūrinius duomenis iš reliacinių duomenų bazių HDFS, papildydamas „Hadoop“ galią. Štai kodėl, įpareigoja gerai žinoti „Apache Sqoop“ ir „Flume“.

Iš pradžių „Sqoop“ kūrė ir prižiūrėjo „Cloudera“. Vėliau, 2011 m. Liepos 23 d., Jį inkubavo Apache. 2012 m. Balandžio mėn. „Sqoop“ projektas buvo reklamuojamas kaip „Apache“ aukščiausio lygio projektas.





Šiame „Apache Flume“ mokymo tinklaraštyje aptarsime:



Šią „Apache Sqoop“ mokymo programą pradėsime pristatydami „Apache Sqoop“. Tada eisime į priekį, suprasime „Apache Sqoop“ naudojimo pranašumus.

„Apache Sqoop“ mokymo programa: „Sqoop“ įvadas

„Apache Sqoop“ - „Apache Sqoop“ mokymo programa - „Edureka“Paprastai programos sąveikauja su reliacine duomenų baze naudodamos RDBMS, todėl reliacinės duomenų bazės tampa vienu iš svarbiausių šaltinių, generuojančių didelius duomenis. Tokie duomenys yra saugomi RDB serveriuose reliacinėje struktūroje. Čia „Apache Sqoop“ vaidina svarbų vaidmenį , teikiantis įmanomą sąveiką tarp reliacinės duomenų bazės serverio ir HDFS.

Taigi, „Apache Sqoop“ yra „Windows“ įrankis kuri skirta duomenims perduoti tarp HDFS („Hadoop“ saugykla) ir reliacinių duomenų bazių serveriai, pvz., „MySQL“, „Oracle RDB“, „SQLite“, „Teradata“, „Netezza“, „Postgres“ ir kt. „Apache Sqoop“ importuoja duomenis iš reliacinių duomenų bazių į HDFS ir eksportuoja duomenis iš HDFS į reliacines duomenų bazes. Jis efektyviai perduoda didelius duomenis tarp „Hadoop“ ir išorinių duomenų saugyklų, tokių kaip įmonės duomenų saugyklos, reliacinės duomenų bazės ir kt.



Taip „Sqoop“ gavo savo pavadinimą - „ SQ L turėjau atviras & Hadoopas į SQL “.

Be to, „Sqoop“ naudojamas duomenims iš išorinių duomenų saugyklų importuoti į tokias Hadoop ekosistemos priemones kaip Avilys & HBase .

Dabar, kai žinome, kas yra „Apache Sqoop“. Taigi pažvelkime į mūsų „Apache Sqoop“ mokymo programą ir supraskime, kodėl „Sqoop“ yra plačiai naudojamos organizacijų.

„Apache Sqoop“ mokymo programa: kodėl „Sqoop“?

„Hadoop“ kūrėjui tikrasis žaidimas prasideda įkėlus duomenis į HDFS. Jie žaidžia aplink šiuos duomenis, kad gautų įvairių įžvalgų, paslėptų HDFS saugomuose duomenyse.

Taigi, norint atlikti šią analizę, reliacinių duomenų bazių valdymo sistemose esantys duomenys turi būti perkelti į HDFS. Rašymo užduotis kodas importuoti ir eksportuoti duomenis iš reliacinės duomenų bazės į HDFS yra neįdomus ir varginantis. Čia „Apache Sqoop“ ateina gelbėti ir pašalina jų skausmą. Tai automatizuoja duomenų importavimo ir eksportavimo procesą.

„Sqoop“ palengvina kūrėjų gyvenimą pateikdamas CLI duomenų importavimui ir eksportavimui. Jie tiesiog turi pateikti pagrindinę informaciją, tokią kaip duomenų bazės autentifikavimas, šaltinis, paskirties vieta, operacijos ir kt. Ji rūpinasi likusia dalimi.

„Sqoop“ viduje paverčia komandą į „MapReduce“ užduotis, kurios vėliau vykdomos per HDFS. Duomenims importuoti ir eksportuoti naudojama „YARN“ sistema, kuri, be paralelizmo, suteikia gedimų toleranciją.

Žengdami į priekį šiame „Sqoop Tutorial“ tinklaraštyje, suprasime pagrindines „Sqoop“ savybes ir tada pereisime prie „Apache Sqoop“ architektūros.

„Apache Sqoop“ mokymo programa: pagrindinės „Sqoop“ savybės

„Sqoop“ teikia daug svarbių funkcijų, tokių kaip:

  1. Visas krūvis : Apache Sqoop gali įkelti visą lentelę viena komanda. Taip pat galite įkelti visas lenteles iš duomenų bazės naudodami vieną komandą.
  2. Inkrementinis Apkrova : „Apache Sqoop“ taip pat suteikia papildomos apkrovos galimybę, kur galite įkelti lentelės dalis, kai tik ji atnaujinama.
  3. Lygiagrečiai importas eksportas : Duomenims importuoti ir eksportuoti „Sqoop“ naudoja „YARN“ sistemą, kuri, be lygiagretumo, suteikia gedimų toleranciją.
  4. Importuoti rezultatus apie SQL užklausa : Taip pat galite importuoti rezultatus, grąžintus iš SQL užklausos HDFS.
  5. Suspaudimas : Duomenis galite suspausti naudodami deflate (gzip) algoritmą su –compress argumentu arba nurodydami –compression-codec argumentą. Taip pat galite įkelti suspaustą lentelę Apache avilys .
  6. Jungtys dėl visi majoras RDBMS Duomenų bazės : „Apache Sqoop“ teikia jungtis kelioms RDBMS duomenų bazėms, apimančioms beveik visą perimetrą.
  7. Kerberos Saugumas Integracija : „Kerberos“ yra kompiuterių tinklo autentifikavimo protokolas, veikiantis remiantis „bilietais“, kad mazgai, bendraujantys nesaugiu tinklu, galėtų saugiai įrodyti savo tapatybę. „Sqoop“ palaiko „Kerberos“ autentifikavimą.
  8. Apkrova duomenis tiesiogiai į HIVE / HBase : Duomenis galite įkelti tiesiai į Apache avilys analizei, taip pat iškelkite savo duomenis į „HBase“, kuri yra „NoSQL“ duomenų bazė.
  9. Parama dėl Kaupimas : Taip pat galite nurodyti „Sqoop“ importuoti lentelę „Accumulo“, o ne katalogą HDFS.

Ši architektūra suteikia „Apache Sqoop“ šiuos privalumus. Dabar, kai žinome „Apache Sqoop“ funkcijas, eikime į priekį ir supraskime „Apache Sqoop“ architektūrą ir veikimą.

„Apache Sqoop“ mokymo programa: „Sqoop“ architektūra ir darbas

Leiskite mums suprasti, kaip veikia „Apache Sqoop“, naudodamiesi toliau pateikta diagrama:

Importavimo įrankis atskiras lenteles importuoja iš RDBMS į HDFS. Kiekviena lentelės eilutė HDFS traktuojama kaip įrašas.

Kai pateiksime komandą „Sqoop“, mūsų pagrindinė užduotis bus suskirstyta į užduotis, kurias atskirai tvarkys individualios žemėlapio užduotys. Žemėlapio užduotis yra antrinė užduotis, kuri dalį duomenų importuoja į „Hadoop“ ekosistemą. Visos žemėlapio užduotys importuoja visus duomenis.

Eksportas taip pat veikia panašiai.

Eksportavimo įrankis eksportuoja failų rinkinį iš HDFS atgal į RDBMS. Failuose, pateiktuose kaip įvestis „Sqoop“, yra įrašų, kurie lentelėje vadinami eilutėmis.

Kai pateikiame savo darbą, jis susiejamas su žemėlapio užduotimis, kurios pateikia HDFS duomenų dalį. Šie gabalai eksportuojami į struktūrinių duomenų paskirties vietą. Sujungę visus šiuos eksportuotus duomenų gabalus, mes gauname visus duomenis paskirties vietoje, o tai dažniausiai yra RDBMS (MYSQL / Oracle / SQL Server).

Sumažinimo fazė reikalinga agregacijų atveju. Tačiau „Apache Sqoop“ tiesiog importuoja ir eksportuoja duomenis, kurių nevykdo. Žemėlapio užduotis paleisti kelis žemėlapius, atsižvelgiant į vartotojo nustatytą skaičių. Importuojant „Sqoop“, kiekviena žemėlapio kūrimo užduotis bus priskirta importuojamų duomenų daliai. „Sqoop“ paskirsto įvesties duomenis kartotojams vienodai, kad pasiektų aukštą našumą. Tada kiekvienas žemėlapių sudarytojas sukuria ryšį su duomenų baze, naudodamas JDBC, ir gauna Sqoop priskirtą duomenų dalį ir, remdamasis CLI pateiktais argumentais, įrašo ją į HDFS arba Hive arba HBase.

Dabar, kai suprantame „Apache Sqoop“ architektūrą ir veikimą, supraskime skirtumą tarp „Apache Flume“ ir „Apache Sqoop“.

„Apache Sqoop“ mokymo programa: „Flume vs Sqoop“

Pagrindinis skirtumas tarp „Flume“ ir „Sqoop“ yra tas, kad:

  • „Flume“ į HDFS įterpia tik nestruktūrizuotus arba pusiau struktūruotus duomenis.
  • Nors „Sqoop“ gali importuoti ir eksportuoti struktūrinius duomenis iš RDBMS arba „Enterprise“ duomenų saugyklų į HDFS arba atvirkščiai.

Dabar, pažengus į „Apache Sqoop“ mokymo programą, pats laikas pereiti „Apache Sqoop“ komandas.

„Apache Sqoop“ mokymo programa: „Sqoop“ komandos

  • „Sqoop“ - „IMPORT“ komanda

Importavimo komanda naudojama lentelei importuoti iš reliacinių duomenų bazių į HDFS. Mūsų atveju mes ketiname importuoti lenteles iš MySQL duomenų bazių į HDFS.

Kaip matote žemiau esančiame paveikslėlyje, darbuotojų duomenų bazėje turime darbuotojų lentelę, kurią importuosime į HDFS.

Lentelės importavimo komanda yra:

sqoop import --connect jdbc: mysql: // localhost / darbuotojai - vartotojo vardas edureka - lentelės darbuotojai

Kaip matote žemiau esančiame paveikslėlyje, atlikus šią komandą, žemėlapio užduotys bus vykdomos galiniame gale.

Vykdžius kodą, galite patikrinti HDFS žiniatinklio vartotojo sąsają, t. Y. Localhost: 50070, kur importuojami duomenys.

  • „Sqoop“ - „IMPORT“ komanda su tiksliniu katalogu

Lentelę taip pat galite importuoti į konkretų HDFS katalogą naudodami šią komandą:

sqoop import --connect jdbc: mysql: // localhost / darbuotojai - vartotojo vardas edureka - lentelės darbuotojai - m 1 - Target-dir / darbuotojai

„Sqoop“ lygiagrečiai importuoja duomenis iš daugumos duomenų bazių šaltinių. -m ypatybė naudojama nurodyti vykdytojų skaičių.

„Sqoop“ lygiagrečiai importuoja duomenis iš daugumos duomenų bazių šaltinių. Galite nurodyti, kiek žemėlapio užduočių (lygiagrečių procesų) reikia naudoti importuojant, naudodami -m arba –Num kartotojai argumentas. Kiekvienas iš šių argumentų turi sveiką skaičių, kuris atitinka lygiagretumo laipsnį.

Žemėlapių skaičių galite valdyti nepriklausomai nuo kataloge esančių failų skaičiaus. Eksporto rezultatai priklauso nuo lygiagretumo laipsnio. Pagal numatytuosius nustatymus „Sqoop“ eksporto procesui naudos lygiagrečiai keturias užduotis. Tai gali būti ne optimalu, turėsite eksperimentuoti su savo pačių sąranka. Papildomos užduotys gali pasiūlyti geresnį lygiagretumą, tačiau jei duomenų bazėje jau yra trūkumų atnaujinant indeksus, įjungiant trigerius ir pan., Papildoma apkrova gali sumažinti našumą.

Žemiau esančiame paveikslėlyje galite pamatyti, kad žemėlapio užduoties skaičius yra 1.

Importuojant „MySQL“ lenteles sukurtų failų skaičius yra lygus sukurtų žemėlapių skaičiui.

  • „Sqoop“ - „IMPORT“ komanda su išlyga

Lentelės pogrupį galite importuoti naudodami „Sqoop“ importavimo įrankio sąlygą „kur“. Jis vykdo atitinkamą SQL užklausą atitinkamame duomenų bazės serveryje ir išsaugo rezultatą tiksliniame kataloge HDFS. Galite naudoti šią komandą duomenims importuoti su „ kur „Sąlyga:

sqoop import --connect jdbc: mysql: // localhost / darbuotojai - vartotojo vardas edureka - lentelės darbuotojai --m 3 - kur 'emp_no & gt 49000' --target-dir / Latest_Employees

  • „Sqoop“ - papildomas importas

„Sqoop“ suteikia papildomą importavimo režimą, kurį galima naudoti norint gauti tik naujesnes eiles nei kai kurie anksčiau importuoti eilučių rinkiniai. „Sqoop“ palaiko dviejų rūšių papildomą importą: pridėti ir Paskutinį kartą keistas . Norėdami nurodyti papildomo importo tipą, galite naudoti argumentą –incremental.

Turėtumėte nurodyti pridėti režimu, kai importuojate lentelę, kurioje nuolat pridedamos naujos eilutės, didėjant eilutės ID reikšmėms. Nurodote stulpelį, kuriame yra eilutės ID su –Check-column . „Sqoop“ importuoja eilutes, kuriose tikrinimo stulpelio vertė yra didesnė nei nurodyta –Paskutinė vertė .

Vadinama alternatyvi lentelės atnaujinimo strategija, palaikoma „Sqoop“ Paskutinį kartą keistas režimas. Tai turėtumėte naudoti, kai gali būti atnaujintos šaltinio lentelės eilutės, o kiekvienas toks atnaujinimas nustatys paskutinio modifikuoto stulpelio vertę pagal dabartinę laiko žymę.

Vykdydami tolesnį importavimą, turėtumėte nurodyti –Paskutinė vertė tokiu būdu užtikrinsite, kad importuosite tik naujus arba atnaujintus duomenis. Tai atliekama automatiškai, sukuriant nuoseklųjį importavimą kaip išsaugotą užduotį, o tai yra pageidaujamas pakartotinio papildomo importo atlikimo mechanizmas.

Pirmiausia įterpiame naują eilutę, kuri bus atnaujinta mūsų HDFS.

Papildomo importavimo komanda yra:

sqoop import --connect jdbc: mysql: // localhost / darbuotojai - vartotojo vardas edureka - lentelės darbuotojai - Target-dir / Paskutiniai_Darbuotojai - papildomas priedas --check-column Emp_no - paskutinė vertė 499999

Žemiau esančiame paveikslėlyje galite pamatyti naują failą su atnaujintais duomenimis.

kas yra „sqlite“ naršyklė

  • „Sqoop“ - importuoti visas lenteles

Visas lenteles galite importuoti iš RDBMS duomenų bazės serverio į HDFS. Kiekvienas lentelės duomenys saugomi atskirame kataloge, o katalogo pavadinimas yra toks pat kaip lentelės pavadinimas. Privaloma, kad kiekvienoje tos duomenų bazės lentelėje būtų pagrindinis raktas. Komanda, skirta importuoti visą lentelę iš duomenų bazės, yra:

sqoop import-all-tables - prijunkite jdbc: mysql: // localhost / darbuotojai - vartotojo vardas edureka

  • „Sqoop“ - sąrašo duomenų bazės

Naudodami „Sqoop“ galite išvardyti duomenų bazes, esančias santykių duomenų bazėje. „Sqoop list-database“ įrankis analizuoja ir vykdo užklausą „RODYTI DUOMENŲ BAZES“ prieš duomenų bazės serverį. Duomenų bazių sąrašo komanda yra:

sqoop sąrašas duomenų bazės - prijunkite jdbc: mysql: // localhost / --username edureka

  • „Sqoop“ - lentelių sąrašas

Taip pat naudodamiesi „Sqoop“ galite išvardyti konkrečios duomenų bazės lenteles „MySQL“ duomenų bazės serveryje. Įrankis „Sqoop list-tables“ analizuoja ir vykdo užklausą „RODYTI LENTELES“. Lentelių sąrašo komanda yra duomenų bazė:

sqoop sąrašo lentelės - prijunkite jdbc: mysql: // localhost / darbuotojai - vartotojo vardas edureka

  • „Sqoop“ - eksportuoti

Kaip aptarėme aukščiau, duomenis taip pat galite eksportuoti iš HDFS į RDBMS duomenų bazę. Tikslinė lentelė turi būti tikslinių duomenų bazėje.Duomenys HDFS saugomi kaip įrašai. Šie įrašai yra nuskaitomi, analizuojami ir atskiriami vartotojo nurodytu atributiku.Numatytoji operacija yra įterpti visą įrašą iš įvesties failų į duomenų bazės lentelę naudojant INSERT sakinį. Atnaujinimo režimu „Sqoop“ sugeneruoja sakinį UPDATE, kuris pakeičia esamą įrašą į duomenų bazę.

Taigi, pirmiausia kuriame tuščią lentelę, kur eksportuosime savo duomenis.

Komanda eksportuoti duomenis iš HDFS į reliacinę duomenų bazę yra:

sqoop export --connect jdbc: mysql: // localhost / darbuotojai - vartotojo vardas edureka - lentelė emp --export-dir / user / edureka / darbuotojai

  • Sqoop - Codegen

Į objektą orientuotoje programoje kiekvienoje duomenų bazės lentelėje yra viena duomenų prieigos objektų klasė, kurioje yra „getter“ ir „setter“ metodai objektams inicializuoti. Codegen automatiškai sukuria DAO klasę. Tai sukuria DAO klasę „Java“, remiantis „Table Schema“ struktūra.

„Java“ kodo generavimo komanda yra:

sqoop codegen --connect jdbc: mysql: // localhost / darbuotojai - vartotojo vardas edureka - lentelės darbuotojai

Viršutiniame paveikslėlyje galite pamatyti kelią, kur generuojamas kodas. Eikime keliu ir patikrinkime sukurtus failus.

Tikiuosi, kad šis tinklaraštis yra informatyvus ir suteikia jums pridėtinės vertės. Jei norite sužinoti daugiau, galite tai išbandyti kuriame pasakojama apie „Big Data“ ir kaip Hadoopas sprendžia su „Big Data“ susijusius iššūkius.

Dabar, kai supratote „Apache Sqoop“, patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. „Edureka Big Data Hadoop“ sertifikavimo mokymo kursas padeda besimokantiesiems tapti HDFS, verpalų, „MapReduce“, „Pig“, „Hive“, „HBase“, „Oozie“, „Flume“ ir „Sqoop“ ekspertais, naudojant realaus laiko naudojimo atvejus mažmeninės prekybos, socialinės žiniasklaidos, aviacijos, turizmo, finansų srityse.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.