Hadoop komponente
Evo konačno da krenem detaljnije da pišem o Hadoop-u. Smatram da je bitno krenuti od njegove srži, odnosno od komponenata od kojih je sačinjen. Kada sam počinjao da radim sa ovom tehnologijom imao sam utisak da je ovo dosadno, da bih možda mogao da preskočim neke detalje, odnosno da apstrahujem celu tematiku. Naravno, to je bilo totalno pogrešno što se i ispostavilo pre par nedelja kada sam imao problem sa izvršavanjem nekih procesa. Zato je moj savet prvo dobro savladati Hadoop komponente i filozofiju, pa tek onda preći na praktičnu primenu i korišćenje ostalih Apache projekata koji se grade na Hadoop.
Nije bitno da li ste programer, analitičar ili administrator Hadoop klastera, bitno je znati na čemu radite, odnosno sa čim. Obećavam da ću u nekom od narednih tekstova opisati i Hadoop poslove. Na kraju krajeva, nije moguće baš sve znati, posebno ne u ovoj kompleksnoj tehnologiji koja nalazi sve više primena i za koju se rađaju nove poslovne mogućnosti. Elem, o tome kasnije, da se vratim na najbitnije komponente.
Može se reći, a tako kažu i tvorci, da se Hadoop sastoji od sledećih komponenti:
- Hadoop Common paketa,
- Hadoop Distributed File System(HDFS),
- Hadoop YARN i
- Hadoop MapReduce.
U ovom tekstu ću najviše pažnje posvetiti prvoj komponenti – Hadoop Common paketu, dok ću za ostale dati kratak pregled i u kasnijim tekstovima ih detaljno opisati. Ono što sam do sada radio dovelo me je do zaključka da mi je u radu najviše bilo potrebno poznavanje HDFS-a i MapReduce-a, što nikako ne znači da su ostale komponente manje bitne. Jednostavno, sa mojim trenutnim znanjem to se pokazalo jako bitnim.
Hadoop Common paket sadrži potrebne Java arhive odnosno JAR fajlove i skripte koje služe za pokretanje Hadoop-a. Ovaj paket takođe sadrži source kod i dokumentaciju. Isto tako, ovde se nalaze i svi potrebni elementi za komuniciranje Hadoop-a sa ostalim alatima. Iskreno, nisam se upuštao previše u ovaj paket jer mi je bilo bitno da znam šta sadrži. Tačnije prilikom moje prve instalacije shvatio sam da je struktura ovog paketa blago izmnenjena u odnosno na različite verzije. To sam shvatio kada sam proučavao dve različite verzije Hadoop-a. Ne želim detaljno o tome ovde da pišem jer te sitnije detalje je moguće i da ne primetite ako, na primer, instalirate Hadoop koristeći Ambari. Ovde je bitno shvatiti da je Hadoop pisan u Java programskom jeziku što bi trebalo da znači da je potrebno da znate Javu savršeno, ali to nije preduslov da počnete da se igrate sa Hadoop-om. Moj savet je ne kopati previše po ovim fajlovima, jedino na šta treba obratiti pažnju su konfiguracioni fajlovi. Koliko god da je proces instalacije automatizovan pomoću Ambari-a i dalje je potrebno malo menjati neke vrednosti. Za ovo je potrebno menjati XML. Važno je samo poznavati osnovnu strukturu XML-a, da biste uspešno podesili konfiguracione fajlove. Nešto puno detalja o ovom paketu nećete naći nigde, jer mislim da je njegovo detaljno poznavanje potrebno jedino ako želite da se bavite razvojem samog Hadoop-a.
HDFS je jako bitna komponenta. To je praktično fajl sistem koji koristi Hadoop i ovde je definisano kako se podaci skladište, kopiraju i čitaju. HDFS je zaslužan za mogućnost lakog skladištenja ogromne količine podataka. Prvi put kad sam se susreo sa ovim pomislio sam – “Fajl sistem – ok! Šta je to tako spektakularno?! Hoću da vidim šta Hadoop “radi”.”. Na teži način sam shvatio da je jako bitno poznavati HDFS, tj. nepoznavanje ove komponente dovelo je do gore napomenutog problema u izvršavanju. Zapravo, nisam dovoljno dobro isplanirao memoriju Klastera i kolaps(!). O HDFS-u sledi poseban tekst.
Hadoop YARN je framework za zakazivanje poslova i upravljanje resursima. Kada radite Hadoop sve se vrti oko tih poslova, odnosno svaki proces, izvršavanje, pokretanje, kontrolisanje se smatra poslom. YARN služi da upravlja tim poslovima u odnosu na resurse. Ovo je jako kompleksna komponeta i uvedena je sa Hadoop-om 2.0. Predstavlja poboljšanje osobina MapReduce-a. U Hadoop-u 1.0 sve što sada obavlja YARN obavljao je MapReduce, ali se na ovaj način došlo do poboljšanja rada celine. Iskreno, za sada YARN mi deluje kao potpuno automatizovan proces i do sada sam pratio samo iskorišćenost radne memorije kojom upravlja ova komponenta. Shvatio sam da se obično vidi neki rad YARN-a prilikom pokretanja Pig skripti.
MapReduce je sistem baziran na YARN-u i predstavlja model paralelnog procesiranja velike količine podataka. Ova komponenta je posebno zanimljiva Hadoop programerima jer sve što se programira za Hadoop, bilo da radite u Javi, Pythonu, Pigu ili bilo kom programskom jeziku, mora da poštuje ovaj model.
Namerno nisam hteo detaljno da opisujem komponente jer slede tekstovi za svaku osim za Hadoop Common. Ovo bi trebalo da predstavlja samo neku vrstu pripreme za dalje tekstove. Trudim se da vas polako uvodim u ovaj svet, jer ovo nije moguće preko noći naučiti. Spremite se, sledeći tekstovi su o Hadoop-u detaljno, pa da zajedno hadupujemo! 🙂