Apache Sqoop
Nastavljamo priču o tome kako uneti podateke u Hadoop klaster, odnosno u HDFS. Ovaj tekst je o Sqoop-u, jednom interesantnom alatu i veoma lakom za korišćenje. Ovim tekstom završavam priču o unošenju podataka.
Šta je Sqoop?
Sqoop je alat koji služi za prenos podataka iz i u Hadoop klaster. Njegova posebna namena je da radi sa relacionim bazama podataka. Osim transfera podataka u HDFS, Sqoop može direktno da radi sa Hive-om ili HBase-om. Prednost Sqoop-a je što brzo prenosi podatke unutar HDFS-a.
Testirao sam ovaj alat, tako da mogu da potvrdim da je jako brz, ali relacionu bazu od oko 4GB je uneo u HDFS za oko minut, možda i manje. Napomenuo sam da je lak za korišćenje i to je potpuno tačno, jedan je od retkih alata u Hadoop ekosistemu koji naučite za nekoliko minuta, makar ono osnovno. I naravno, ne traži mnogo pisanja. Unošenje jedne baze staje u jednu liniju koda.
Osim što je brz, Sqoop je jako fleksibilan, pa ako ne želite da unesete celu bazu, možete da izaberete koja tabela vam treba, a njen naziv ne morate da znate, jer možete da izlistate tabele. Jedna stvar koju sam zaboravio da napomenem – potrebno je da imate instaliran JDBC kako biste mogli da se konektujete na server na kome je baza koju želite da unesete u HDFS. Morate da znate i nalog željene baze, koji ima potrebne dozvole za rad sa bazom. Takođe morate da podesite bazu, odnosno da omogućite TCP/IP protokol.
Ako želite da testirate Sqoop, predažem zvaničnu dokumentaciju na Apache Sqoop sajtu. Jedino na šta treba da obratite pažnju jeste verzija. Na sajtu imate dokumentaciju za Sqoop 1 i Sqoop 2, ako testirate predlažem Sqoop 1 koji ima bogatiju dokumentaciju. Iskren da budem, smatram da nema velike razlike. Glavna razlika je komandna linija, odnosno u Sqoop-u 2 imamo klijenta koji preko komandne linije komunicira sa Sqoop serverom, koji sada koristi REST interfejs. Još nisam testirao dvojku, ali sa jedinicom možete da odradite sve što vam je potrebno.
Kada i kako koristiti Sqoop?
Neću da ponavljam i pišem čemu služi Sqoop, nego želim da napišem nekoliko slučajeva korišćenja. Ako ste radili neku analizu koristeći Hadoop, odnosno Map Reduce ili sada popularniji YARN, dobili ste neke rezultate. E šta sada? Pisao sam o vizuelizaciji podataka. Zamislite da alat koji koristite za vizuelizaciju nema nikakav konektor sa Hadoop-om, a podaci moraju da budu u nekoj bazi. Onda nastupa Sqoop. Podatke koje izvezete iz Hadoop-a pomoću Sqoop-a su struktuirani. Rešili ste veliki problem na ovaj način. Isto tako, često se Hadoop klaster povezuje sa ERP sistemima koji koriste neku relacionu bazu i opet primene Sqoop-a.
Ovo su bili primeri za transfer podataka van Hadoop-a. Kada je dobro da koristite Sqoop za transfer podataka unutar Hadoop-a? Ako imate bazu koja je veličine da tradicionalni alati ne mogu da izađu na kraj sa njom, onda koristite Sqoop. Ono što je još interesantno – zamislite da sakupljate neke senzorske podatke i u log-u imate koordinate. Možete da prilikom analize te brojeve pretvarate u ime lokacije, ali ako imate tabelu koja opisuje koordinate i ime mesta. Jednostavno unesite tabelu u Sqoop, ukrstite podatke i sa lakoćom dobijate čitljive rezultate. Mislim da je dobro koristiti relacione baze sa Hadoop-om, ako imate neke podatke koji se stalno ponavljaju. Možda je bolje reći da ovakve tabele koristite kao šifarnike, ne zauzimaju puno mesta, lako unesete u Hadoop i lako iskoristite sa nekim nestruktuiranim podacima. Pošto najviše radim sa senzorskim podacima, u dogovoru sa kolegom koji radi na senzorima i načinu upisa podataka, koristimo i relacionu bazu, odnosno tabele. Na ovaj način izbegavamo da upisujemo stringove u log fajl. Npr. napravimo tabelu koja izgleda ovako:
Naziv | Šifra |
Temperatura | 1 |
Vlažnost vazduha | 2 |
Onda log fajl izgleda ovako: 1 26.5 2 33 i tako redom. U Hadoop unesemo i tabelu i logove i pomoću HIVE-a to obradimo. Uvek je lakše raditi samo sa brojevima nego kada se tu upetljaju i stringovi. Nama je definitivno od pomoći i dobijamo na efikasnosti. Primera ima puno, ali je ovo sasvim dovoljno za upoznavanje sa ovim alatom.
Ovim tekstom završavam priču o tome kako uneti podatke u Hadoop klaster, bar u narednom periodu. Sledeći tekst je o tome zašto sam izabrao baš Hortonworks i njihovu HDP platformu.
Želim da se zahvalim svima koji čitaju moj blog, jer kada sam počinjao, nisam ni sanjao da ću imati ovoliko čitalaca. Nadam se da uživate u hadupovanju.