Članci

HCatalog

Šta je Apache HCatalog?

Apache HCatalog je alat koji omogućava lakše upravljanje skladištenjem podataka i tabelama na Hadoop-u, što pruža mogućnost korisnicima raznih alata za analizu podataka da lakše čitaju i pišu podatke. Praktično je HCatalog sloj na Hadoop-u koji omugućava prezentovanje podataka sa HDFS-a u vidu tabela i oslobađa korisnike briga o tome gde i u kom formatu su sačuvani podaci. HCatalog može da prikaže podatke koji su u RCFile formatu, tekstualne fajlove, sekventne fajlove i sve ih prikazuje u tabelarnom obliku. Još jedna zgodna stvar koja dolazi uz HCatalog je i REST API koji omogućava pristup tabelama i spoljnim korisnicima.

HCatalog Hue

HCatalog Hue

Kako HCatalog radi?

HCatalog podržava čitanje i pisanje fajlova u formatima za koje je moguće napisati Hive SerDe (Serializer-Deserializer), ali podrazumevani formati su oni koje sam već pomenuo. Da ne zaboravim, takođe, CSV i JSON su podržani kao podrazumevani. HCatalog je napravljen da radi sa Hive metastore servisom i uključuje Hive DDL komponente. Takođe HCatalog pruža i interfejs za Pig i MapReduce. U principu HCatlog zajedno sa Hive-om jako liči na poznati SQL, relacione baze podataka, u suštini razlika je u nijansama.

Primena

Kao što sam i napisao, glavni cilj ovog alata je prikaz podataka sa HDFS-a koji mogu da budu nezgodni za praćenje u izvornom obliku. Koliko sam do sad radio sa Hadoop-om, uvek sam i koristio HCatalog. Jako je dobro ako ubacite neke podatke u HDFS da proverite da li ste to dobro odradili, a dosta i olakšava rad ako obrađujete podatke koristeći Hive. Praktično, sa ovim alatom možete da struktuirate podatke i lakše ih obradite. Naravno, dešava se i da HCatalog ne može da bude primenjen. Na primer, ako imate neki tekst koji ste ubacili u HDFS i želite samo prosto da izračunate ukupan broj reči, nema smisla da svaku reč stavite u jedan red i da ih posle pomoću Hive-a prebrojite, nego ćete samo koristiti Pig i dobiti rezultat. Ako biste, na primer, želeli da znate broj svake reči onda biste prvo koristili Pig ili neki drugi MapReduce kod, a zatim dobijeni rezultat koji ste smestili u HDFS bi mogli da formatirate koristeći HCatalog. Ovo je samo primer da ovaj alat nije nužno koristiti uvek, ali takođe i ako se koristi ne mora da bude prvi korišćen. Trenutno koristim HCatalog da u tabeli prikažem logove i moram reći da je mnogo lakše kad se sve preradi HCatalog-om, pa zatim mogu da koristim Hive sa lakoćom.

HCatalog Terminal

HCatalog Terminal

Prednosti

Po mom mišljnju najveća prednost ovog alata je prikaz podataka. Činjenica da sa lakoćom možete od nekih nestruktuiranih podataka dobiti struktuirane je veliko olakšanje, posebno u  slučaju kada radite neku prostiju operaciju. Pogotovo ako možete koristiti Hive, onda vas postojanje ovakvog alata oslobađa DDL dela koda. Još jedna prednost je da je HCatalog podržan u Hue alatu kojeg sam opisao u prošlom tekstu. Na taj način na klik završavate veliki deo posla. Ovo je posebno zgodno za one koji ne vole terminal.
Sledeći tekst je o Apache Hive-u koji treba zajedno sa ovim tekstom da stvori celinu o jednom segmentu obrade podataka. Razmisljao sam o tome da li prvo da pišem o ovom alatu ili Hive-u i shvatio sam da iako su tesno povezani mogu se koristiti razdvojeno i za različite svrhe. Takođe, na vama je da utvrdite kada koristite koji. Ja samo mogu da opišem neka svoja trenutna iskustva. Moram reći da defintivno preporučujem da više proučite ovaj alat, posebno ako vas zanima obrada podataka. Nastavljamo zajedno da hadupujemo i čekaju vas neke nove stvari na blogu za koje se nadam da će biti od koristi.

Hue – Hadoop web interfejs

Hue je open-source web interfejs za Hadoop i njegov ekosistem. Napisan je u Python-u i podržava najčešće alate iz Hadoop ekosistema. Odličan je za one koji žele samo da koriste Hadoop bez da razmišljanja šta se dešava ispod, takođe ako ne želite da koristite komandnu liniju. Ovaj korisnički interfejs je dizajniran tako da objedinjuje sve instalirane alate iz ekosistema. Moram da priznam, dosta je lakše kada vam je sve na jednom mestu i kada ne morate da otvarate više Linux terminala da biste paralelno radili na dve strane. Moj prvi susret sa Hadoop-om je bio preko Hue interfejsa, to me je možda i ohrabrilo da nastavim dalje da istražujem Hadoop. Neko moje zapaženje je da je odlično u početku koristiti Hue, ali treba i pogledati malo šta se dešava ispod, jer je to odličan način da se nauči više. Mada ne treba stvar generalizovati, ako želite da se bavite samo analizom podataka onda je Hue sasvim dovoljan za vas, u slučaju da ste administrator Hadoop klastera ili implementator, to jednostavno nije dovoljno. Isto tako, ako ste Hadoop developer, Hue vam nije dovoljan. Jedna jako lepa stvar je da Hue ima svoj SDK, tako da možete i sami da pšete aplikacije koje će se izvršavati na vrhu Hadoop-a.

U svom radu sa Hadoop-om Hue gotovo i da ne koristim, ali moram da priznam odličan je kao fajl menadžer, HCatalog editor i Hive editor. Za ostale poslove radije se okrećem Linux terminalu. Takođe, Hue ne podržava sve alate. Skoro sam radio sa Apache Flume-om, jednim jako interesantnim alatom o kome ću pisati, on nije podržan u Hue-u. Isto tako, ako je vaš posao i instalacija Hue-a na postojeći Hadoop ekosistem, onda ćete se definitivno odlučiti za alternativu. Možda je to moj pogled na problem, ali uvek se desi da zaboravim nešto da podesim pri instalaciji Hue-a i onda neće potpuno da funkcioniše. Hortonworks uz HDP nudi i svoju verziju Hue-a koja sasvim radi posao, postoji i zvanična verzija koja je pod većim uticajem Cloudera-e. Ta verzija je vizuelno lepša, bar po mom mišljenju, takođe odlična je ako često koristite Sqoop alat.

Hue

Hue

Moj zaključak je da je Hue nekako više naklonjen onima koji se bave analizom podataka, onima koji se više bave Hive-om, SQL-om ili Impalom. Što se tiče pisanja nekog MapReduce koda u Javi ili Pigu definitivno treba koristiti Eclipse, pa terminal. Moram još jednom da napomenem da je Hue odličan kao fajl menadžer, ja ga najčešće za to koristim, kako bih lakše video rezultate rada. Testirao samo mnoge elemente i alate Hadoop-a, ali ovo je nešto što trenutno mislim o upotrebi Hue-a.

Savet je da proučite Hue, da probate, da vidite šta vam odgovara, da radite u njemu, ali definitivno ako želite da što više naučite o Hadoop-u, onda probajte da ne koristite Hue. Ne bih da zvučim kao neko ko obožava Linux terminal, nisam ga čak ni koristio dok nisam počeo da se bavim Hadoop-om. Što više razumete Hadoop, rad iz terminala je dosta moćniji.
Ovo je bio samo kratak pregled šta je Hue, kako sam ga ja video i kako ga koristim. Nisam želeo puno da detaljišem, jer ne koristim Hue nešto preterano puno, ali sam siguran da može da se upotrebi mnogo bolje nego što ja to trenutno radim. Sve u svemu, ovo je jedan dobar alat i može da bude jako koristan. Sledeći tekstovi o interesantnim temama poput Pig, Hive, Sqoop…  Spremite se da hadupujemo zajedno!

Hadoop Ecosystem

U prethodnim tekstovima sam pisao o Hadoop-u i njegovim glavnim komponentama, Hadoop Common, HDFS, MapReduce i YARN, to je u suštini srž Hadoop framework-a. Svaka od ovih komponenti je moćna sama po sebi i zajedno čine jednu savršenu platformu koja ima mogućnost da se proširi dodatnim alatima po potrebi.

Šta je Hadoop ecosystem?

Hadoop ecosystem je skup alata, ondnosno projekata, koji mogu da rade na Hadoop platformi. Moram da napomenem da u te alate spadaju i HDFS i MapReduce, koji su i delovi platforme, ali se vode i kao Apache projekti. Ako Hadoop gledamo kao jednu celinu, na njega je moguće dodati još dosta raznih alata, velikom većinom razvijenih od strane Apache fondacije. Ti alati su sposobni da komuniciraju sa Hadoop komponentama i njihov rad može da bude nezavistan, a neki od njih su pravljeni samo za Hadoop. Koliko sam upoznat, većina alata se ne koristi samostalno već sa Hadoop-om. Danas na tržištu postoje kompanije koje nude Hadoop platformu sa već izgrađenim ekosistemom, što mnogo olakšava proces instalacije, ali i izbora. Ako biste sami birali projekte na Hadoop-u, velika je verovatnoća da zaboravite neki. Postoji desetak takvih kompanija među kojima se najviše ističu Hortonworks, Cloudera i MapR Technologies, a moram da napomenem da se i veliki igrači bave ovim, poput IBM-a, Intela, AWS-a…. Prve tri koje sam naveo kao primarnu delatnost imaju Hadoop, dok su vam ostala imena poznata po nekim drugim tehnologijama.

HDP

HDP

Ja lično radim sa Hortonworks data platformom (HDP) iz više razloga. Po mom mišljenju jako je dobar. Na sajtu Hortonworks-a postoji odlična dokumentacija, izbor alata potpuno odgovara mojim potrebama i možda ono što me je najviše opredelilo za njih jeste cena. HDP je open source, ne morate da date ni dinara, a imaćete sve što vam je potrebno, bilo da imate klaster od par mašina ili pak više klastera od mnogo mnogo mašina.

Zašto je neophodan?

Nameće se pitanje “ Zašto je meni potreban ekositem, zar mi nije dovoljan samo Hadoop?”. Odgovor na ovo pitanje zavisi isključivo od vaših potreba. E sad, pošto i lično ne volim da dobijem odgovor “ZAVISI…”, pokušaću da navedem neke primere iz iskustva za Hadoop ekosistem i Hadoop-om sa osnovnim komponentama. Ako želite da samo skladištite podatke i da to bude brzo, onda vam je dovoljan samo Hadoop. Naravno, možete instalirati i samo HDFS, tako da uštedite na vremenu podešavanja klastera. Ovo je jako dobro pogotovo ako vam padne na pamet da jednog dana analizirate te podatke. Možete bez problema naknadno da instalirate MapReduce i da dobijete samo Hadoop kao celinu. Ako želite da analizirate neke podatke, bili oni struktuirani ili ne, za to vam služi MapReduce i možete da sednete i počnete da pišete Java kodove za vaše potrebe. Ukoliko baš obožavate Javu i znate savršeno da porgramirate MapReduce kodove, onda je ok, vama je potreban sam Hadoop i njegove osnovne komponente. Sad zamislite da imate dodatne alate koji skraćuju vreme pisanja koda u Javi i intuitivniji su za neki zadati problem. E, tu nastupa na delo moć Hadoop platforme i projekata koji se grade na njoj. U HDFS možete da upišete i struktuirane podatke. Mnogo je lakše pisati upite u jezicima predviđenim za to, nego u Javi. Lično sam probao i uverio se da nešto što u Javi bude u 40 linija koda može u Pigu da se napiše u svega desetak. Današnji tempo života je ubrzan, zar nije bolje imati dodatne alate kojima se ubrzava analiza podataka? To može da bude presudno za nekog vašeg klijenta.

Da podvučem ovde crtu, moj savet je, ako želite samo da skladištite podatke i možda eventualno kasnije da ih analizirate, dovoljan vam je samo HDFS, nemate potrebu za više alata, za ekosistemom. Ako pak hoćete da koristite pun potencijal Hadoop-a i alata koji se dodaju na njega, onda dobro utvrdite šta vam je potrebno. Možete sami da stvorite svoj Hadoop ekosistem ili da koristite nešto poput HDP-a i sličnih rešenja koja su već pravljena tako da uključuju sve one alate koji se obično koriste u poslovnim analizama.

Projekti (alati) koji se dodaju na Hadoop

Hadoop Ecosystem

Hadoop Ecosystem

Na tržištu postoji mnogo alata koji su u relaciji sa Hadoop-om. Većina ih je pod Apache licencom, ali i firme poput Facebook-a i Microsoft-a razvijaju neke svoje alate koje možete da instalirate. Većina alata je besplatna, ja čak nisam dolazio u dodir sa nekim koji se plaćaju. Kako postoji mnogo alata, ja ih neću sve nabrojati, već ću dati neku njihovu osnovnu podelu i alate koje koristim, odnosno napisaću one koji dolaze uz HDP.

  • Distribuirani Fajl Sistemi (HDFS)
  • Distribuirano programiranje (MapReduce, Apache Pig, Apache Tez)
  • NoSQL baze podataka (Apache HBase, Apache Accumulo)
  • SQL baze podataka (Apache Hive, Apache HCatalog)
  • Unošenje podataka (Apache Flume, Apache Sqoop, Apache Storm)
  • Programiranje servisa (Apache Zookeeper)
  • Zakazivanje (Apache Oozie, Apache Falcon)
  • Mašinsko učenje (Apache Mahout)
  • Bezbednost (Apache Knox)
  • System Deployment (Apache Ambari, HUE)

Na sledećem linku je širi spisak projekata koji su vezani za Hadoop http://hadoopecosystemtable.github.io/ .

Kao što sam napisao, koristim HDP i naredni tekstovi će opisivati svaki alat koji dolazi uz ovu platformu pojedinačno. Neću opisivati neke dodatne alate, jer trenutno radim samo sa onima koji dolaze uz HDP i sa njima imam neko iskustvo. Možda nekad opišem još neki alat, ali ne bez prethodnog testiranja i korišćenja. Sledeći tekst je o Ambari-u, a onda prelazim na alate za analizu podataka, što znči i programiranje. Zato se spremite da nastavimo da hadupujemo zajedno!