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.

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

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!