Vodič za Apache Sqoop - Uvoz / izvoz podataka između HDFS-a i RDBMS-a



Vodič za Apache Sqoop: Sqoop je alat za prijenos podataka između Hadoop-a i relacijskih baza podataka. Ovaj blog pokriva Sooop uvoz i izvoz iz MySQL-a.

Prije nego što započnemo s ovim vodičem za Apache Sqoop, vratimo se korak unatrag. Možete li se sjetiti važnosti unosa podataka, kao što smo o tome raspravljali u našem ranijem blogu Apache Flume . Kao što znamo da je Apache Flume alat za unošenje podataka za nestrukturirane izvore, ali organizacije svoje operativne podatke pohranjuju u relacijske baze podataka. Dakle, postojala je potreba za alatom koji može uvoziti i izvoziti podatke iz relacijskih baza podataka. Zbog toga je rođen Apache Sqoop. Sqoop se lako može integrirati s Hadoopom i izbaciti strukturirane podatke iz relacijskih baza podataka na HDFS, nadopunjujući moć Hadoopa. To je razlog zašto, zahtijeva dobro znanje o Apache Sqoopu i Flumeu.

U početku je Sqoop razvio i održavao Cloudera. Kasnije, 23. srpnja 2011., inkubirao ga je Apache. U travnju 2012. projekt Sqoop promoviran je kao Apacheov projekt najviše razine.





U ovom blogu s uputama za Apache Flume obradit ćemo:



Započinjemo ovaj tutorial Apache Sqoop-a predstavljanjem Apache Sqoop-a. Zatim ćemo krenuti dalje, shvatit ćemo prednosti korištenja Apache Sqoopa.

Vodič za Apache Sqoop: Uvod u Sqoop

Apache Sqoop - Vodič za Apache Sqoop - EdurekaOpćenito, aplikacije komuniciraju s relacijskom bazom podataka pomoću RDBMS-a, pa to relacijske baze podataka čini jednim od najvažnijih izvora koji generiraju velike podatke. Takvi se podaci pohranjuju na RDB poslužiteljima u relacijskoj strukturi. Ovdje Apache Sqoop igra važnu ulogu u , pružajući izvedivu interakciju između relacijskog poslužitelja baze podataka i HDFS-a.

Dakle, Apache Sqoop je alat u koji je dizajniran za prijenos podataka između HDFS (Hadoop storage) i poslužitelji relacijskih baza podataka kao što su MySQL, Oracle RDB, SQLite, Teradata, Netezza, Postgres itd. Apache Sqoop uvozi podatke iz relacijskih baza podataka u HDFS, a podatke iz HDFS-a izvozi u relacijske baze podataka. Učinkovito prenosi skupne podatke između Hadoopa i vanjskih pohrana podataka kao što su skladišta podataka poduzeća, relacijske baze podataka itd.



Tako je Sqoop dobio ime - “ SQ L do Had otvoren & Hadoop za SQL “.

Uz to, Sqoop se koristi za uvoz podataka iz vanjskih baza podataka u alate Hadoop ekosustava poput Košnica & HBase .

Kao što znamo što je Apache Sqoop. Dakle, napredujmo u našem vodiču za Apache Sqoop i shvatimo zašto organizacije Sqoop intenzivno koriste.

Vodič za Apache Sqoop: Zašto Sqoop?

Za razvojnog programera Hadoop, stvarna igra započinje nakon učitavanja podataka u HDFS. Poigravaju se tim podacima kako bi stekli razne uvide skrivene u podacima pohranjenim u HDFS-u.

Dakle, za ovu analizu podaci koji se nalaze u sustavima upravljanja relacijskim bazama podataka trebaju se prenijeti na HDFS. Zadatak pisanja kôd za uvoz i izvoz podataka iz relacijske baze podataka na HDFS je nezanimljiv i zamoran. Ovdje Apache Sqoop dolazi spasiti i uklanja njihovu bol. Automatizira postupak uvoza i izvoza podataka.

Sqoop olakšava život programerima pružajući CLI za uvoz i izvoz podataka. Oni samo moraju pružiti osnovne informacije poput provjere autentičnosti baze podataka, izvora, odredišta, operacija itd. On se brine za preostali dio.

Sqoop interno pretvara naredbu u zadatke MapReduce, koji se zatim izvršavaju preko HDFS-a. Koristi YARN okvir za uvoz i izvoz podataka, što pruža toleranciju kvarova povrh paralelizma.

Napredujući u ovom blogu Sqoop Tutorial, razumjet ćemo ključne značajke Sqoop-a, a zatim ćemo prijeći na Apache Sqoop arhitekturu.

povezani popis u c programu

Vodič za Apache Sqoop: Ključne značajke Sqoopa

Sqoop nudi mnoge istaknute značajke poput:

  1. Puno opterećenje : Apache Sqoop može učitati cijelu tablicu jednom naredbom. Također možete učitati sve tablice iz baze podataka pomoću jedne naredbe.
  2. Inkrementalni Opterećenje : Apache Sqoop također nudi mogućnost inkrementalnog učitavanja gdje možete učitati dijelove tablice kad god se ažurira.
  3. Paralelno uvoz izvoz : Sqoop koristi YARN okvir za uvoz i izvoz podataka, koji pruža toleranciju kvarova povrh paralelizma.
  4. Uvoz rezultatima od SQL upit : Također možete uvesti rezultat vraćen iz SQL upita u HDFS-u.
  5. Kompresija : Možete komprimirati podatke korištenjem deflate (gzip) algoritma s –compress argumentom ili specificiranjem –compression-codec argumenta. Također možete učitati komprimiranu tablicu u Apache košnica .
  6. Konektori za svi majore RDBMS Baze podataka : Apache Sqoop nudi konektore za više RDBMS baza podataka, pokrivajući gotovo cijeli opseg.
  7. Kerberos Sigurnost Integracija : Kerberos je protokol za provjeru autentičnosti računalne mreže koji radi na temelju „ulaznica“ kako bi omogućio čvorovima koji komuniciraju preko nesigurne mreže kako bi međusobno dokazali svoj identitet na siguran način. Sqoop podržava Kerberos provjeru autentičnosti.
  8. Opterećenje podaci direktno u KOŠNICA / HBase : Možete učitati podatke izravno u Apache košnica za analizu, a također podatke izbacite u HBase, koja je NoSQL baza podataka.
  9. Podrška za Akumulacija : Također možete uputiti Sqoop da uveze tablicu u Accumulo, a ne direktorij u HDFS-u.

Arhitektura je koja Apache Sqoop osnažuje ovim prednostima. Sada, budući da znamo značajke Apache Sqoop-a, krenimo dalje i shvatimo arhitekturu i rad Apache Sqoop-a.

Vodič za Apache Sqoop: Sqoop arhitektura i rad

Dopustite nam da shvatimo kako Apache Sqoop radi pomoću donjeg dijagrama:

Alat za uvoz uvozi pojedinačne tablice iz RDBMS-a u HDFS. Svaki redak u tablici tretira se kao zapis u HDFS-u.

Kada predajemo naredbu Sqoop, naš se glavni zadatak dijeli na podzadate kojima se pojedinačni zadatak mape obrađuje interno. Zadatak karte je podzadatak koji uvozi dio podataka u ekosustav Hadoop. Svi zadaci mape zajedno uvoze cijele podatke.

Izvoz također djeluje na sličan način.

Alat za izvoz izvozi skup datoteka s HDFS-a natrag u RDBMS. Datoteke dane kao ulaz u Sqoop sadrže zapise koji se pozivaju kao retci u tablici.

Kada pošaljemo svoj posao, on se preslikava u Zadaće karte koji donosi dio podataka iz HDFS-a. Ti se dijelovi izvoze na odredište za strukturirane podatke. Kombinirajući sve ove izvezene dijelove podataka, dobivamo cijele podatke na odredištu, što je u većini slučajeva RDBMS (MYSQL / Oracle / SQL Server).

Faza smanjenja potrebna je u slučaju agregacija. Ali, Apache Sqoop samo uvozi i izvozi podatke koje ne vrši agregiranje. Pokretanje mape pokreće više mapa, ovisno o broju koji je definirao korisnik. Za uvoz Sqoop-a, svakom zadatku mapiranja dodijelit će se dio podataka za uvoz. Sqoop ravnomjerno distribuira ulazne podatke među maperima kako bi postigao visoke performanse. Tada svaki mapper stvara vezu s bazom podataka koristeći JDBC i dohvaća dio podataka koji je dodijelio Sqoop i zapisuje ih u HDFS ili Hive ili HBase na temelju argumenata danih u CLI.

Sad kad razumijemo arhitekturu i rad Apache Sqoopa, shvatimo razliku između Apache Flume i Apache Sqoop.

Vodič za Apache Sqoop: Flume vs Sqoop

Glavna razlika između Flumea i Sqoopa je u tome što:

  • Flume samo unosi nestrukturirane podatke ili polustrukturirane podatke u HDFS.
  • Iako Sqoop može uvoziti, kao i izvoz strukturiranih podataka iz RDBMS-a ili Enterprise skladišta podataka u HDFS ili obrnuto.

Sada, napredujući u našem vodiču za Apache Sqoop, krajnje je vrijeme da prođete kroz naredbe Apache Sqoop.

Vodič za Apache Sqoop: Sqoop naredbe

  • Sqoop - naredba IMPORT

Naredba Uvoz koristi se za uvoz tablice iz relacijskih baza podataka u HDFS. U našem ćemo slučaju uvoziti tablice iz MySQL baza podataka u HDFS.

Kao što možete vidjeti na donjoj slici, u bazi podataka zaposlenika imamo tablicu zaposlenika koju ćemo uvoziti u HDFS.

Naredba za uvoz tablice je:

sqoop import --connect jdbc: mysql: // localhost / zaposlenici --username edureka - table zaposlenici

Kao što možete vidjeti na donjoj slici, nakon izvršavanja ove naredbe zadaci mape izvršavat će se na stražnjem kraju.

Nakon izvršavanja koda možete provjeriti web korisničko sučelje HDFS-a, tj. Localhost: 50070 gdje se podaci uvoze.

  • Sqoop - naredba IMPORT s ciljnim direktorijumom

Tablicu također možete uvesti u određeni direktorij u HDFS-u pomoću naredbe u nastavku:

sqoop import --connect jdbc: mysql: // localhost / zaposlenici --korisničko ime edureka --table zaposlenici --m 1 --target-dir / zaposlenici

Sqoop paralelno uvozi podatke iz većine izvora baza podataka. -m svojstvo se koristi za određivanje broja mapiranja koji će se izvršiti.

Sqoop paralelno uvozi podatke iz većine izvora baza podataka. Možete odrediti broj zadataka mape (paralelnih procesa) koji će se koristiti za izvođenje uvoza pomoću -m ili –Brojitelji argument. Svaki od ovih argumenata uzima cjelobrojnu vrijednost koja odgovara stupnju paralelizma koji se koristi.

Broj mapa možete kontrolirati neovisno o broju datoteka prisutnih u direktoriju. Izvozni učinak ovisi o stupnju paralelizma. Prema zadanim postavkama, Sqoop će upotrijebiti četiri zadatka paralelno za postupak izvoza. To možda nije optimalno, morat ćete eksperimentirati sa svojim vlastitim postavkama. Dodatni zadaci mogu ponuditi bolju istodobnost, ali ako je baza podataka već usko usko ažuriranje indeksa, pozivanje okidača i tako dalje, tada dodatno opterećenje može smanjiti izvedbu.

Na donjoj slici možete vidjeti da je broj zadataka mapiranja 1.

Broj datoteka koje su stvorene tijekom uvoza MySQL tablica jednak je broju stvorenih mappera.

  • Sqoop - naredba IMPORT s klauzulom Where

Možete uvesti podskup tablice pomoću klauzule ‘gdje’ u alatu za uvoz Sqoop. Izvršava odgovarajući SQL upit na odgovarajućem poslužitelju baze podataka i pohranjuje rezultat u ciljani direktorij u HDFS-u. Sljedeću naredbu možete koristiti za uvoz podataka s ' gdje ‘Klauzula:

sqoop import --connect jdbc: mysql: // localhost / zaposlenici --korisničko ime edureka - stolni zaposlenici - m 3 - where 'emp_no & gt 49000' --target-dir / Latest_Eeuees

uskočite u c ++
  • Sqoop - Inkrementalni uvoz

Sqoop pruža inkrementalni način uvoza koji se može koristiti za dohvaćanje samo redaka novijih od nekih prethodno uvezenih skupova redaka. Sqoop podržava dvije vrste inkrementalnog uvoza: dodati i zadnja promjena . Možete koristiti –inkrementalni argument da odredite vrstu inkrementalnog uvoza koji treba izvršiti.

Trebali biste navesti dodati način pri uvozu tablice u kojoj se neprestano dodaju novi retci s povećanjem vrijednosti ID-a retka. Navedite stupac koji sadrži ID retka s –Check-column . Sqoop uvozi retke u kojima stupac za provjeru ima vrijednost veću od one koja je navedena sa –Posljednja vrijednost .

Pozvana je alternativna strategija ažuriranja tablice koju podržava Sqoop zadnja promjena način rada. To biste trebali koristiti kada se redovi izvorne tablice mogu ažurirati, a svako takvo ažuriranje postavit će vrijednost zadnjeg modificiranog stupca na trenutnu vremensku oznaku.

Prilikom izvođenja naknadnog uvoza trebali biste navesti –Posljednja vrijednost na taj način osigurati da uvozite samo nove ili ažurirane podatke. To se automatski rješava stvaranjem inkrementalnog uvoza kao spremljenog posla, što je preferirani mehanizam za obavljanje ponavljajućeg inkrementalnog uvoza.

Prvo ubacujemo novi redak koji će biti ažuriran u našem HDFS-u.

Naredba za inkrementalni uvoz je:

sqoop import --connect jdbc: mysql: // localhost / zaposlenici --korisničko ime edureka --tabljeni zaposlenici --target-dir / Najnovije_Zaposlenici - dodatni dodatak - ček-stupac emp_no - zadnja vrijednost 499999

Na donjoj slici možete vidjeti da se kreira nova datoteka s ažuriranim podacima.

  • Sqoop - Uvezite sve tablice

Možete uvesti sve tablice s poslužitelja baze podataka RDBMS na HDFS. Podaci svake tablice pohranjeni su u zasebnom direktoriju, a ime direktorija isto je kao i ime tablice. Obavezno je da svaka tablica u toj bazi podataka mora imati polje primarnog ključa. Naredba za uvoz sve tablice iz baze podataka je:

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

  • Sqoop - Popis baza podataka

Pomoću Sqoopa možete navesti baze podataka prisutne u relacijskoj bazi podataka. Alat Sqoop list-baza podataka raščlanjuje i izvršava upit 'POKAŽI BAZE PODATAKA' prema poslužitelju baze podataka. Naredba za popis baza podataka je:

sqoop popis-baze podataka --connect jdbc: mysql: // localhost / --username edureka

  • Sqoop - Tablice s popisima

Također možete navesti tablice određene baze podataka na MySQL poslužitelju baze podataka koristeći Sqoop. Alat Sqoop list-tablica raščlanjuje i izvršava upit 'POKAŽI TABLICE'. Naredba za popis tablica je baza podataka:

sqoop popisne tablice --povezivanje jdbc: mysql: // localhost / zaposlenici --korisničko ime edureka

  • Sqoop - Izvoz

Kao što smo gore razgovarali, podatke možete izvesti iz HDFS-a u bazu podataka RDBMS. Ciljna tablica mora postojati u ciljnoj bazi podataka.Podaci se pohranjuju kao zapisi u HDFS-u. Ti se zapisi čitaju i raščlanjuju te razdvajaju s graničnikom koji je odredio korisnik.Zadana operacija je umetanje svih zapisa iz ulaznih datoteka u tablicu baze podataka pomoću izraza INSERT. U načinu ažuriranja, Sqoop generira UPDATE izraz koji zamjenjuje postojeći zapis u bazi podataka.

Dakle, prvo stvaramo praznu tablicu, u koju ćemo izvesti svoje podatke.

Naredba za izvoz podataka iz HDFS-a u relacijsku bazu podataka je:

sqoop export --connect jdbc: mysql: // localhost / zaposlenici --korisničko ime edureka --table emp --export-dir / user / edureka / zaposlenici

  • Sqoop - Codegen

U objektno orijentiranoj aplikaciji svaka tablica baze podataka ima jednu klasu predmeta pristupa podacima koja sadrži metode 'getter' i 'setter' za inicijalizaciju objekata. Codegen automatski generira klasu DAO. Generira DAO klasu u Javi, na temelju strukture sheme tablice.

Naredba za generiranje Java koda je:

sqoop codegen --povezivanje jdbc: mysql: // localhost / zaposlenici --korisničko ime edureka - zaposlenici tablice

naučite ssis korak po korak

Na gornjoj slici možete vidjeti put na kojem se generira kôd. Krenimo putem i provjerimo stvorene datoteke.

Nadam se da je ovaj blog informativan i da vam dodaje dodanu vrijednost. Ako ste zainteresirani da saznate više, možete to proći koja vam govori o velikim podacima i kako Hadoop rješava izazove povezane s velikim podacima.

Sad kad ste razumjeli Apache Sqoop, pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Edureka tečaj obuke za certificiranje velikih podataka Hadoop pomaže učenicima da postanu stručnjaci za HDFS, pređu, MapReduce, svinju, košnicu, HBase, Oozie, Flume i Sqoop koristeći slučajeve upotrebe u stvarnom vremenu na maloprodaji, društvenim mrežama, zrakoplovstvu, turizmu i financijama.

Imate pitanje za nas? Molimo spomenite to u odjeljku za komentare i javit ćemo vam se.