Apache Sqoop apmācība - datu importēšana / eksportēšana starp HDFS un RDBMS



Apache Sqoop apmācība: Sqoop ir rīks datu pārsūtīšanai starp Hadoop un relāciju datu bāzēm. Šis emuārs aptver Sooop importēšanu un eksportēšanu no MySQL.

Pirms sākt šo Apache Sqoop apmācību, ļaujiet mums spert soli atpakaļ. Vai varat atcerēties datu uzņemšanas nozīmi, kā mēs to apspriedām savā iepriekšējā blogā vietnē Apache Flume . Tagad, kad mēs zinām, ka Apache Flume ir datu ievades rīks nestrukturētiem avotiem, taču organizācijas savus operatīvos datus glabā relāciju datu bāzēs. Tāpēc bija nepieciešams rīks, kas var importēt un eksportēt datus no relāciju datu bāzēm. Tāpēc dzimis Apache Sqoop. Sqoop var viegli integrēties ar Hadoop un izmest strukturētos datus no relāciju datu bāzēm uz HDFS, papildinot Hadoop iespējas. Tāpēc, prasa pamatīgas zināšanas par Apache Sqoop un Flume.

Sākotnēji Sqoop izstrādāja un uzturēja Cloudera. Vēlāk, 2011. gada 23. jūlijā, Apache to inkubēja. 2012. gada aprīlī Sqoop projekts tika reklamēts kā Apache augstākā līmeņa projekts.





Šajā Apache Flume apmācības emuārā mēs apskatīsim:



Mēs sāksim šo Apache Sqoop apmācību, ieviešot Apache Sqoop. Tad virzoties uz priekšu, mēs sapratīsim Apache Sqoop izmantošanas priekšrocības.

Apache Sqoop apmācība: Sqoop ievads

Apache Sqoop - Apache Sqoop apmācība - EdurekaParasti lietojumprogrammas mijiedarbojas ar relāciju datu bāzi, izmantojot RDBMS, un tādējādi relāciju datu bāzes padara par vienu no svarīgākajiem avotiem, kas ģenerē lielos datus. Šādi dati tiek glabāti RDB serveros relāciju struktūrā. Šeit svarīga loma ir Apache Sqoop , nodrošinot iespējamu mijiedarbību starp relāciju datu bāzes serveri un HDFS.

Tātad, Apache Sqoop ir rīks kas paredzēts datu pārsūtīšanai starp HDFS (Hadoop atmiņa) un relāciju datu bāzes serveriem, piemēram, MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres utt. Apache Sqoop importē datus no relāciju datu bāzēm uz HDFS un eksportē datus no HDFS uz relāciju datu bāzēm. Tas efektīvi pārsūta lielapjoma datus starp Hadoop un ārējiem datu krātuvēm, piemēram, uzņēmuma datu noliktavām, relāciju datu bāzēm utt.



Tā Sqoop ieguva savu nosaukumu - “ SQ L uz Had atvērts & Hadoop uz SQL ”.

Turklāt Sqoop tiek izmantots, lai importētu datus no ārējiem datu veikaliem tādos Hadoop ekosistēmas rīkos kā Stropu & HBase .

Tagad, kad mēs zinām, kas ir Apache Sqoop. Tātad, ļaujiet mums virzīties uz priekšu mūsu Apache Sqoop apmācībā un saprast, kāpēc organizācijas plaši izmanto Sqoop.

Apache Sqoop apmācība: Kāpēc Sqoop?

Hadoop izstrādātājam faktiskā spēle sākas pēc datu ielādes HDFS. Viņi spēlē ap šiem datiem, lai iegūtu dažādas atziņas, kas paslēptas HDFS glabātajos datos.

Tātad, lai veiktu šo analīzi, relāciju datu bāzes pārvaldības sistēmās esošie dati jāpārsūta uz HDFS. Rakstīšanas uzdevums kods datu importēšanai un eksportēšanai no relāciju datu bāzes uz HDFS ir neinteresants un garlaicīgs. Šeit Apache Sqoop nāk glābt un noņem viņu sāpes. Tas automatizē datu importēšanas un eksportēšanas procesu.

Sqoop atvieglo izstrādātāju dzīvi, nodrošinot CLI datu importēšanai un eksportēšanai. Viņiem vienkārši jāsniedz pamatinformācija, piemēram, datu bāzes autentifikācija, avots, galamērķis, darbības utt. Tas rūpējas par atlikušo daļu.

Sqoop komandu iekšēji pārvērš komandu MapReduce uzdevumos, kas pēc tam tiek izpildīti, izmantojot HDFS. Datu importēšanai un eksportēšanai tā izmanto YARN ietvaru, kas papildus paralēlismam nodrošina kļūdu toleranci.

Virzoties uz priekšu šajā Sqoop Tutorial emuārā, mēs sapratīsim Sqoop galvenās iezīmes un pēc tam pāriet uz Apache Sqoop arhitektūru.

Apache Sqoop apmācība: Sqoop galvenās iezīmes

Sqoop nodrošina daudzas ievērojamas funkcijas, piemēram:

  1. Pilna slodze : Apache Sqoop var ielādēt visu tabulu ar vienu komandu. Visas tabulas var arī ielādēt no datu bāzes, izmantojot vienu komandu.
  2. Papildu Slodze : Apache Sqoop nodrošina arī pakāpeniskas slodzes iespēju, kur jūs varat ielādēt tabulas daļas ikreiz, kad tā tiek atjaunināta.
  3. Paralēli importa eksporta : Datu importēšanai un eksportēšanai Sqoop izmanto YARN ietvaru, kas papildus paralēlismam nodrošina kļūdu toleranci.
  4. Importēt rezultātiem gada SQL vaicājumu : HDFS varat arī importēt rezultātu, kas atgriezts no SQL vaicājuma.
  5. Kompresija : Datus var saspiest, izmantojot deflate (gzip) algoritmu ar –compress argumentu vai norādot –compression-codec argumentu. Var arī ielādēt saspiestu tabulu Apache strops .
  6. Savienotāji priekš visi vairākums RDBMS Datu bāzes : Apache Sqoop nodrošina savienotājus vairākām RDBMS datu bāzēm, aptverot gandrīz visu apkārtmēru.
  7. Kerberos Drošība Integrācija : Kerberos ir datortīkla autentifikācijas protokols, kas darbojas, pamatojoties uz “biļetēm”, lai mezgli, kas sazinās ar nedrošu tīklu, varētu droši apliecināt viens otram savu identitāti. Sqoop atbalsta Kerberos autentifikāciju.
  8. Slodze dati tieši vērā HIVE / HBase : Datus var ielādēt tieši Apache strops analīzei un arī izmest datus HBase, kas ir NoSQL datu bāze.
  9. Atbalsts priekš Uzkrāšanās : Jūs varat arī uzdot Sqoop importēt tabulu Accumulo, nevis direktoriju HDFS.

Arhitektūra dod iespēju Apache Sqoop izmantot šīs priekšrocības. Tagad, kad mēs zinām Apache Sqoop funkcijas, virzīsimies uz priekšu un sapratīsim Apache Sqoop arhitektūru un darbību.

atrast masīva javascript garumu

Apache Sqoop apmācība: Sqoop arhitektūra un darbs

Ļaujiet mums saprast, kā darbojas Apache Sqoop, izmantojot šo diagrammu:

Importa rīks importē atsevišķas tabulas no RDBMS uz HDFS. Katra tabulas rinda tiek uzskatīta par ierakstu HDFS.

Iesniedzot komandu Sqoop, mūsu galvenais uzdevums tiek sadalīts apakšuzdevumos, kurus iekšēji veic individuāls kartes uzdevums. Kartes uzdevums ir apakšuzdevums, kas daļu datu importē Hadoop ekosistēmā. Kopā visi kartes uzdevumi importē visus datus.

Eksports darbojas arī līdzīgā veidā.

Eksporta rīks eksportē failu kopu no HDFS atpakaļ uz RDBMS. Failos, kas ievadīti kā Sqoop ievade, ir ieraksti, kurus tabulā sauc par rindām.

Kad mēs iesniedzam savu darbu, tas tiek kartēts ar kartes uzdevumiem, kas nodrošina HDFS datu daļu. Šie gabali tiek eksportēti uz strukturētu datu galamērķi. Apvienojot visus šos eksportētos datu gabalus, galamērķī mēs saņemam visus datus, kas vairumā gadījumu ir RDBMS (MYSQL / Oracle / SQL Server).

Samazināšanas fāze ir nepieciešama agregāciju gadījumā. Bet Apache Soop tikai importē un eksportē datus, kas neveido nekādus apkopojumus. Kartes darba palaišana ar vairākiem kartētājiem atkarībā no lietotāja noteiktā numura. Sqoop importēšanai katram kartētāja uzdevumam tiks piešķirta daļa importējamo datu. Lai iegūtu augstu veiktspēju, Sqoop izplata ievades datus kartētājiem vienādi. Tad katrs kartētājs izveido savienojumu ar datu bāzi, izmantojot JDBC, un ienes Sqoop piešķirto datu daļu un, pamatojoties uz CLI sniegtajiem argumentiem, to ieraksta HDFS vai Hive vai HBase.

Tagad, kad mēs saprotam Apache Sqoop arhitektūru un darbību, sapratīsim atšķirību starp Apache Flume un Apache Sqoop.

Apache Sqoop apmācība: Flume vs Sqoop

Galvenā atšķirība starp Flume un Sqoop ir tā, ka:

  • Flume HDFS satur tikai nestrukturētus vai daļēji strukturētus datus.
  • Kamēr Sqoop var importēt, kā arī eksportēt strukturētus datus no RDBMS vai Enterprise datu noliktavām uz HDFS vai otrādi.

Tagad, virzoties uz priekšu mūsu Apache Sqoop apmācībā, ir pēdējais laiks iziet cauri Apache Sqoop komandām.

Apache Sqoop apmācība: Sqoop komandas

  • Sqoop - komanda IMPORT

Importēšanas komanda tiek izmantota tabulas importēšanai no relāciju datu bāzēm uz HDFS. Mūsu gadījumā mēs importēsim tabulas no MySQL datu bāzēm uz HDFS.

Kā redzat zemāk esošajā attēlā, darbinieku datu bāzē mums ir darbinieku tabula, kuru mēs importēsim HDFS.

Tabulas importēšanas komanda ir:

sqoop import --connect jdbc: mysql: // localhost / darbinieki - lietotājvārds edureka --tabula darbinieki

Kā redzat zemāk esošajā attēlā, pēc šīs komandas izpildes kartes uzdevumi tiks izpildīti aizmugurē.

Pēc koda izpildes varat pārbaudīt HDFS tīmekļa lietotāja interfeisu, t.i., localhost: 50070, kur dati tiek importēti.

  • Sqoop - IMPORT komanda ar mērķa direktoriju

Tabulu var importēt arī noteiktā direktorijā HDFS, izmantojot šādu komandu:

sqoop import --connect jdbc: mysql: // localhost / darbinieki - lietotājvārds edureka - tabulas darbinieki - m 1 - Target-dir / darbinieki

Sqoop datus paralēli importē no lielākās daļas datu bāzes avotu. -m rekvizītu izmanto, lai norādītu izpildāmo kartētāju skaitu.

Sqoop datus paralēli importē no lielākās daļas datu bāzes avotu. Varat norādīt karšu uzdevumu (paralēlo procesu) skaitu, kas jāizmanto, lai veiktu importēšanu, izmantojot -m vai –Num kartētāji arguments. Katrs no šiem argumentiem ņem veselu skaitli, kas atbilst izmantojamā paralelitātes pakāpei.

Kartētāju skaitu var kontrolēt neatkarīgi no direktorijā esošo failu skaita. Eksporta veiktspēja ir atkarīga no paralēluma pakāpes. Pēc noklusējuma Sqoop eksportēšanas procesā paralēli izmantos četrus uzdevumus. Tas var nebūt optimāls, jums būs jāeksperimentē ar konkrēto iestatījumu. Papildu uzdevumi var piedāvāt labāku vienlaicīgumu, taču, ja datu bāzē jau ir nepilnības indeksu atjaunināšanā, aktivizētāju izsaukšanā utt., Tad papildu slodze var samazināt veiktspēju.

Zemāk redzamajā attēlā var redzēt, ka kartētāja uzdevuma skaits ir 1.

Failu skaits, kas tiek izveidots, importējot MySQL tabulas, ir vienāds ar izveidotā kartētāja skaitu.

  • Sqoop - IMPORT komandu ar klauzulu Kur

Izmantojot Sqoop importēšanas rīka klauzulu ‘kur’, varat importēt tabulas apakškopu. Tas izpilda atbilstošo SQL vaicājumu attiecīgajā datu bāzes serverī un rezultātu saglabā mērķa direktorijā HDFS. Varat izmantot šo komandu, lai importētu datus ar “ kur “Klauzula:

sqoop import --connect jdbc: mysql: // localhost / darbinieki - lietotājvārds edureka --tabula darbinieki --m 3 - kur 'emp_no & gt 49000' - Target-dir / Jaunākie_darbinieki

  • Sqoop - pakāpenisks imports

Sqoop nodrošina pakāpenisku importēšanas režīmu, kuru var izmantot, lai izgūtu tikai jaunākas rindas nekā dažas iepriekš importētās rindu kopas. Sqoop atbalsta divu veidu papildu importu: pievienot un pēdējoreiz modificēts . Jūs varat izmantot –incremental argumentu, lai norādītu veicamās papildu importēšanas veidu.

Jums vajadzētu norādīt pievienot režīmā, importējot tabulu, kur arvien tiek pievienotas jaunas rindas, palielinoties rindu ID vērtībām. Jūs norādāt kolonnu, kurā ir rindas ID ar –Pārbaudes kolonna . Sqoop importē rindas, kurās pārbaudes kolonnas vērtība ir lielāka par vērtību, kas norādīta ar –Pēdējā vērtība .

Tiek izsaukta alternatīva tabulas atjaunināšanas stratēģija, kuru atbalsta Sqoop pēdējoreiz modificēts režīmā. Jums tas jāizmanto, ja var tikt atjauninātas avota tabulas rindas, un katrs šāds atjauninājums pēdējās modificētās kolonnas vērtību iestatīs uz pašreizējo laika zīmogu.

Veicot nākamo importēšanu, jums jānorāda –Pēdējā vērtība šādā veidā, lai nodrošinātu, ka importējat tikai jaunus vai atjauninātus datus. Tas tiek automātiski izpildīts, izveidojot pakāpenisku importēšanu kā saglabātu darbu, kas ir vēlamais mehānisms atkārtotas pakāpeniskas importēšanas veikšanai.

Pirmkārt, mēs ievietojam jaunu rindu, kas tiks atjaunināta mūsu HDFS.

Papildu importa komanda ir:

sqoop import --connect jdbc: mysql: // localhost / darbinieki - lietotājvārds edureka --tabula darbinieki --target-dir / Jaunākie_darbinieki - pieaugošais papildinājums --check-kolonna emp_no --pēdējā vērtība 499999

Zemāk redzamajā attēlā redzams, ka tiek izveidots jauns fails ar atjauninātajiem datiem.

  • Sqoop - importēt visas tabulas

Visas tabulas var importēt no RDBMS datu bāzes servera uz HDFS. Katrs tabulas dati tiek glabāti atsevišķā direktorijā, un direktorija nosaukums ir tāds pats kā tabulas nosaukums. Obligāti katrai šīs datu bāzes tabulai ir jābūt galvenās atslēgas laukam. Komanda visas tabulas importēšanai no datu bāzes ir:

sqoop import-all-tables - savienojiet jdbc: mysql: // localhost / darbinieki - lietotājvārds edureka

  • Sqoop - Sarakstu datu bāzes

Izmantojot Sqoop, varat uzskaitīt datubāzes, kas atrodas saistībā ar datu bāzi. Sqoop saraksta datu bāzes rīks parsē un izpilda vaicājumu ‘RĀDĪT DATU BĀZES’ pret datu bāzes serveri. Datu bāzu uzskaitīšanas komanda ir:

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

  • Sqoop - sarakstu tabulas

Izmantojot Sqoop, MySQL datu bāzes serverī varat arī uzskaitīt konkrētas datu bāzes tabulas. Sqoop saraksta tabulu rīks parsē un izpilda vaicājumu ‘RĀDĪT TABULAS’. Komanda tabulu sarakstam ir datu bāze:

sqoop list-tables --connect jdbc: mysql: // localhost / alkalmazott - lietotājvārds edureka

  • Sqoop - eksportēt

Kā mēs apspriedām iepriekš, jūs varat arī eksportēt datus no HDFS uz RDBMS datu bāzi. Mērķa tabulai jābūt eksistējošai mērķa datu bāzē.Dati tiek saglabāti kā ieraksti HDFS. Šie ieraksti tiek nolasīti, parsēti un norobežoti ar lietotāja norādītu atdalītāju.Noklusējuma darbība ir visu ierakstu ievietošana no ievades failiem datu bāzes tabulā, izmantojot INSERT paziņojumu. Atjaunināšanas režīmā Sqoop ģenerē paziņojumu UPDATE, kas datu bāzē aizstāj esošo ierakstu.

Tātad, vispirms mēs izveidojam tukšu tabulu, kur eksportēsim savus datus.

Komanda datu eksportēšanai no HDFS uz relāciju datu bāzi ir šāda:

sqoop export --connect jdbc: mysql: // localhost / darbinieki - lietotājvārds edureka --tabula emp --export-dir / user / edureka / darbinieki

  • Skoops - Kodegens

Objektorientētā lietojumprogrammā katrai datu bāzes tabulai ir viena datu piekļuves objektu klase, kas satur ‘getter’ un ‘setter’ metodes objektu inicializēšanai. Codegen automātiski ģenerē DAO klasi. Tas ģenerē DAO klasi Java, pamatojoties uz Table Schema struktūru.

Java koda ģenerēšanas komanda ir:

sqoop codegen --connect jdbc: mysql: // localhost / darbinieki - lietotājvārds edureka - tabulas darbinieki

modeļa skata kontrolieris java

Ceļš ir redzams augšējā attēlā, kur tiek ģenerēts kods. Ļaujiet mums iet ceļu un pārbaudīt izveidotos failus.

Es ceru, ka šis emuārs ir informatīvs un sniedz jums pievienoto vērtību. Ja vēlaties uzzināt vairāk, varat to iziet kas stāsta par Big Data un to, kā Hadoop risina problēmas, kas saistītas ar Big Data.

Tagad, kad esat sapratis Apache Sqoop, pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Edureka Big Data Hadoop sertifikācijas apmācības kurss palīdz izglītojamajiem kļūt par HDFS, dzijas, MapReduce, Pig, Hive, HBase, Oozie, Flume un Sqoop ekspertiem, izmantojot reāllaika lietošanas gadījumus mazumtirdzniecības, sociālo mediju, aviācijas, tūrisma, finanšu jomā.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un mēs ar jums sazināsimies.