Hadoop i Ganglia - Vijesti - ULKRS
Hadoop i Ganglia

Hadoop i Ganglia

  • Instaliranje Apache Hadoop Distribuiranog Fajl Sistema i MapReduce Engine-a na Ubuntu-u

  • Instaliranje Ganglia Monitoring Sistema

 

Pretpostavimo da, ako vam je potrebna pomoć pri instalaciji Hadoop-a, da ste upoznati sa funkcionalnošću i upotrebom istog. Takođe vodimo se pretpostavkom da poznajete način rada MapReduce aplikacija, tako da na to nećemo trošiti slova objašnjavajući. Mnogo toga možete naći na zvaničnom web sajtu, kao i na Wikipedia-i.

 

 

Sistem:
Hadoop je prvobitno instaliran na mašine sa instaliranim 32-bitnim Ubuntu-om 9.04, na kojima je besprijekorno radio. Za potrebe ovog tutoriala, koristio sam takođe Ubuntu 9.04, ali 64-bitnu verziju, instaliran kao virtuelna mašina u VmWare-u. Time mislim da sam obuhvatio većinu scenarija sa koijima se možete susresti na vašem klasteru u kući ili kompaniji.



Mreža:
Da bi Hadoop Distributed File System (HDFS u daljnjem tekstu) uopšte mogao da radi, vaši kompjuteri moraju biti povezani u privatnu mrežu i da su međusobno vidljivi. Nije poželjna upotreba DHCP-a.

 

Preporučujem statičko podešavanje svih ip adresa u mreži(master čvora obavezno). Na slici gore imate primjer statičkog podešavanja ip adrese za jedan od vaših računara u klasteru. U ovom primjeru koristićemo dve virtuelne mašine sa ip adresama 192.168.0.130 i 192.168.0.131. Nakon podešavanja provjerite međusobnu komunikaciju kompjutera pingajući konekciju .



Pre-install proces

Pre nego li uopšte započnemo instalaciju hadoop-a, kao dobra praksa se pokazala kreiranje novog korisnika koji će da pokreće hadoop naredbe. Korisnika možete kreirati kroz konzolu ili preko GUI-a. U navedenom primjeru, korisnik pod imenom “hadoop” i šifrom “hadoop” je kreiran kao Administrator. Posebna pažnja se mora obratiti na omogućavanje korišćenja Ethernet-a.

 

Provjerite da li je Java instalirana na sistem. Pošto kompletan hadoop sistem funkcioniše na JVM, pobrinite se da je Java korektno instalirana i da su environment varijable podešene. U ovom primjeru, javu nismo imali instaliranu. Najlakši način instaliranja pomoću kojeg se i environment varijable automatski podešavaju je instalacijom iz Add/Remove podmenija, Applications menija.

 

Selektujte OpenJavaJDK 6 Runtime , a zatim instalirajte paket.

 

 

Instalacija

 

Većinu narednih paketa ćemo kompajlirati iz preuzetog source koda. I većinu posla oko hadoop instalacije radimo samo na jednoj mašini. Recimo da će to biti master mašina. Hadoop paket možete preuzeti sa ove web lokacije: http://www.apache.org/dyn/closer.cgi/hadoop/core/

 

Prethodne komande smo izvršavali kao “hadoop” korisnik. U home/hadoop/ direktorijumu smo ekstraktovali hadoop-0.20.2.tar.gz arhivu.

Sada dolazimo do koraka kada je potrebno editovati hadoop fajlove kako bismo ih prilagodili mreži na kojoj pokrećemo sistem. Ti fajlovi se nalaze u raspakovanoj hadoop arhivi u “conf” folderu, a zovu se core-site.xml, mapred-site.xml, hdfs.site.xml, hadoop-env.sh. A editujemo ih na sljedeći način:

Defaultni core-site.xml fajl je poprilično prazan, sa dva tag-a. Između pomenutih tagova, potrebno je ubaciti sadržaj sljedćeg sastava, prilagođavajući podatke svojoj mreži.

U navedenom primjeru,

hdfs://192.168.0.130:9000

predstavlja adresu master čvora u tj. adresu mašine u klasteru koja će da bude master čvor za HDFS i MapReduce.

/home/hadoop/hadoopfilesystem

predstavlja folder u kojem će se praktično nalaziti svi fajlovi koji pripadaju HDFS-u. U primjeru je označena putanja do tmp foldera. Snimite izmjene sa CTRL+O, stisnite ENTER, a zatim se vratite u konzolu sa CTRL+X.

Sljedeći fajl koji editujemo je mapred-site.xml:

 

Kao u prethodnom pimjeru, navedena ip adresa predstavlja ip adresu master čvora. Primjetite razliku da se u ovom slučaju za port bira 9001. Broj porta koji smo birali je proizvoljan. Ja sam za HDFS uzeo 9000 port (core-site.xml), a za MapReduce 9001 port (mapred.site.xml). Snimite promjene i zatvorite. Sljedeći fajl na redu je

hadoop-env.sh

Ovde je potrebno da sistemu kažemo

JAVA_HOME

putanju, kako bi znao gdje mu se nalaze instalirani java fajlovi.

 

Ispred selektovanog stringa na slici potrebno je izbrisati znak

#

i dopisati tačnu java putanju. Snimite promjene i zatvorite.

Poslednji fajl koji je potrebno editovati je

hdfs-site.xml

 

Broj “2” na slici ukazuje na broj blokova koji će biti replicirani prilikom kreiranja fajla unutar HDFS-a. Što veći broj, to ćete više memorijskog prostora trošiti, ali ćete imati manju vjerovatnoću gubitka podataka usljed kvara nekog od čvorova, a i MapReduce aplikacije će brže raditi jer će više čvorova biti kandidati za dodjelu posla, jer više čvorova ima , lokalno, trenutno potrebne podatke. Ukoliko je broj replikacija blokova veći od broja čvorova, unos u ovom fajlu će biti ignorisan i kao replikacija blokova će se koristiti vrijednost broja datanode-ova u mreži.

Kasnije, kod korišćenja Ganglia Monitoring Sistema, trebaće nam hostname-i čvorova u mreži. Zbog toga ćemo editovati i /etc/hosts fajl i unijeti podatke shodno podacima naše mreže. Izmjenu ovog fajla radimo na svim mašinama.

Da bi hadoop sistem uopšte znao ko je master, a ko su slave čvorovi, te podatke unosimo u masters i slaves fajlove u istom folderu (conf) tako što u pomenute fajlove unosimo ip adrese odgovarajućih mašina.

Napomena: mašina namjenjena master čvoru, može takođe da bude i slave čvor. U realnom pokretanju aplikacije, tako nešto ne želite, jer je master mašina ta koja trpi najviše posla, naročito sa većim brojem slave čvorova. Zato ne želimo da je opteretimo i sa slave poslom.
Ovde ćemo omogućiti da master bude i slave, tako što ćemo njegovu ip adresu staviti u oba ova fajla.

 

masters

192.168.0.130

slaves

192.168.0.130
192.168.0.131

Isključimo firewall.


Da ne zaboravimo. Pošto smo izabrali hadoopfilesystem za folder gdje će nam se svi hadoop podaci smještati, taj folder je potrebno i kreirati.

 mkdir /home/hadoop/hadoopfilesystem

Da bi se komunikacija između čvorova nesmetano odvijala, potrebno je prosljediti ssh ključeve master čvora svim ostalim čvorovima u mreži.

Potrebno je instalirati biblioteku openssh-server, a zatim izvršiti operacije kao na sljedećoj slici:

 

Na slici su primjetne tri linije koje počinju sa Enter file, Enter passphrase, Enter same passphrase. Kod sve tri linije potrebno je samo stisnuti ENTER. U tom slučaju ne postavljamo šifru i pri komunikaciji sa čvorom nećemo biti pitani za šifru. U suprotnom, svaka hadoop operacija bi zahtjevala unošenje šifre od strane korisnika, što je besmisleno … Navedene operacije uraditi na svim čvorovima.

Naredni korak vrši samo master čvor, a radnja koja se vrši je kopiranje ssh ključa svim ostalim čvorovima u mreži.

Prethodnu operaciju kopiranja je potrebno uraditi za svaki čvor ponaosob, mijenjajući destinacionu ip adresu shodno čvoru na koji se kopira ssh ključ. Kada ste upitani za (yes/no), ukucajte yes i pritisnite ENTER, a sifra je “hadoop”(pod uslovom da ste tu šifru izabrali za svakog hadoop korisnika na svakom čvoru).

Pošto smo prethodnom operacijom kopirali ssh ključ master čvora svim ostalim mašinama, sada je potrebno na svim tim mašinama unijeti taj ključ u listu autorizovanih ključeva.

 

Editovanje hadoop fajlova se ne razlikuje za master i slave čvorove. Podešavanja koja smo izvršili na master čvoru nam važe i za slave čvorove. Zato ćemo kopirati hadoop-0.20.2 folder svim ostalim čvorovima.

Napomena: Pretpostavljamo da je “hadoop” korisnik kreiran na svim ostalim čvorovima.

scp –r /home/hadoop/hadoop-0.20.2 192.168.0.131:/home/hadoop

gdje se ip adresa mijenja za svaki čvor. Nakon što ste izvršili kopiranje foldera na sve čvorove, možemo pristupiti formatiranju HDFS-a na sljedeći način:

Magična poruka :

.. has been successfully formated !!!

Funkcionalnost hadoop-a ćemo pokazati nešto kasnije …

 

 

Ganglia Monitornig System

 

 

Ganglia monitoring sistem (GMS) je vrlo jednostavan za korišćenje i vrlo koristan za nadgledanje performansi kompletne konfiguracije grida, klastera u gridu u svakog čvora u klasteru posebno.

 

Instalacija Ganglia-e nam je posebno zadavala glavobolje, sa paketima koji nedostaju. Trenutno poslednja verzija GMS-a je 3.1.7, koju nismo uspješno kompajllirali i instalirali. I u ovom slučaju i u slučaju sa realnim mašinama, vezija 3.1.2 se pokazala donekle stabilnom. GMS source code paket možete preuzeti sa ovog linka: http://sourceforge.net/projects/ganglia/files/ganglia%20monitoring%20core/

 

Verzija koju smo mi instalirali je 3.1.2. Pre svega, potrebno je instalirati nekoliko paketa koji su preduslov za kompajliranje. Naredbe su navedene ispod.

 

sudo apt-get install gmetad
sudo apt-get install ganglia-monitor
sudo apt-get install rrdtool librrds-perl librrd2-dev
sudo apt-get install php5-gd
sudo apt-get install libconfuse-dev

 

Potrebno je preuzeti Apache sa ovog linka http://httpd.apache.org/download.cgi i instalirati na sistem. Paket koji smo mi instalirali je verzije 2.2.15. Snimimo paket na Desktop i ekstraktujmo arhivu. U konzoli se dovedimo na putanju foldera koji je nastao ekstraktovanjem prethodne arhive (httpd-2.2.15).. Pokrenimo kompajliranje tako što ćemo u konzoli ukucati ./configure naredbu.

primeuser@primeuser-desktop:~Desktop/httpd-2.2.15$ ./configure 

Nakon toga sljedeće dve naredbe:

primeuser@primeuser-desktop:~Desktop/httpd-2.2.15$ sudo make
primeuser@primeuser-desktop:~Desktop/httpd-2.2.15$ sudo make install

Ono što je loša strana i komplikacija kod ove instalacije je što sve ove radnje morate izvršiti na svim čvorovima, što može da bude problem ako imate veliki broj čvorova. Zato je dobra opcija napraviti jednu virtuelnu mašinu, potpuno podešenu, sa direktnim pristupom hard disku (ne kreirati virtuelni hard disk), a zatim tuVM kopirate na druge čvorove i imate sistem spreman za upotebu.

Instaliranje Apache-a ne bi trebalo da bude popraćeno problemima. Vratimo se sada ganglia paketu. Nakon što preuzmete paket, ekstraktujte ga i promjenite svoju poziciju u konzoli na folder koji je nastao ekstrakcijom ganglia paketa (ganglia-3.1.2) Pokrenimo sljedeću naredbu:

primeuser@primeuser-desktop:~Desktop/ ganglia-3.1.2$ 
./configure --prefix=/opt/ganglia/ --enable-gexec
 --with-gmetad --with-libapr=/usr/local/apache2/bin/apr-1-config

Nakon izvršene gornje operacije, u konzoli bi se nakon silnih ispisa trebao pojaviti natpis kao na sljedećoj slici:

 

Ukoliko to nije slučaj, onda imate neželjenih problema sa instaliranjem. Provjerite poruke koje vam se ispišu na kraju izvršenja operacije. Nakon ovoga je potrebno izvršiti ..

primeuser@primeuser-desktop:~Desktop/ ganglia-3.1.2$ sudo make

Moguće je da će se pojaviti dve ili tri greške prilikom izvršavanja ove naredbe. Te greške jednostavno ignorišite. Mi smo ih ignorisali, a sistem i dalje savršeno radi . Zatim izvršite i sljedeće naredbe.

primeuser@primeuser-desktop:~Desktop/ ganglia-3.1.2$ sudo make install
primeuser@primeuser-desktop:~Desktop/ ganglia-3.1.2$ sudo mkdir /var/www/ganglia
primeuser@primeuser-desktop:~Desktop/ ganglia-3.1.2$ sudo cp –r web/* /var/www/ganglia

Takođe je potrebno (zbog lakšeg pokretanja sistema) izmjeniti fajl koji se nalazi na putanji

/etc/apache2/sites-enabled/000-default

izvršavanjem naredne naredbe.

primeuser@primeuser-desktop:~Desktop/ ganglia-3.1.2$
 sudo nano /etc/apache2/sites-enabled/000-default


U fajlu koji vam se otvori, pronađite liniju i dodajte sadržaj shodno selektovanom tekstu na donjoj slici:

 

 

Snimite fajl i zatvorite ga. Sadržaj koji smo dodali u fajl će nas prilikom pokretanja sistema automatski redirektovati na Ganglia Monitornig Sistem. Na posljetku je potebno restartovati apache.

primeuser@primeuser-desktop:~Desktop/ ganglia-3.1.2$ sudo apache2ctl restart
sudo nano /etc/gmond.conf


Pronađite sadržaj u fajlu

# The name of the cluster this node is a part of
# default: "unspecified"


a zatim ispod toga izbrište “#” tako da linija ispod navedenih izgleda ovako: name "MY CLUSTER" Snimite promjene i izađite. Zatim pokrenite naredbu:

sudo nano /etc/gmetad.conf


i pronađite sljedći sadržaj:

# data_source "my cluster" 10 localhost  my.machine.edu:8649  1.2.3.5:8655
# data_source "my grid" 50 1.3.4.7:8655 grid.org:8651 grid-backup.org:8651
# data_source "another source" 1.3.4.7:8655 1.3.4.8


ispod navedenog sadržaja takođe izbrišite “#” i dopišite tekst tako da linija izgleda ovako:

data_source "MY CLUSTER" localhost


Snimite promjene i izađite. Na svakom čvoru je potrebno pokrenuti kolektor informacija izvršavanjem naredbe:

sudo /etc/init.d/ganglia-monitor restart


Navedena naredba se takođe nalazi i u startup-u sistema, tako da najčešće, navedenu naredbu nije potrebno izvršavati.
Ako se čvor ne može detektovati ili ne šalje informacije, naravno, poželjno je restartovati ganglia-monitor. Na master čvoru je potrebno izvršiti sljedeću naredbu.

sudo /etc/init.d/gmetad start

I time smo završili instalaciju i podešavanja.

 

Upotreba

 

 

Otvorite vaš browser i u address bar ukucajte localhost. Primjetićete da se lokacija u address bar-u promijenila na

localhost/ganglia

a izgled ekrana koji možete da dobijete, može izgledati kao na sljedećoj slici.

 

Primjetićete da je naziv klastera “MY CLUSTER” ekivalentan podacima koje smo unijeli u gmond.conf i gmetad.conf fajlove. Ispod ćete primjetiti čvor master obojen u crveno (boja predstavlja opterećenje). drugi čvor se ne vidi u GMS-u jer nije pokrenut ganglia monitor na njemu. E sad idemo pokrenuti Hadoop. U konzoli se kao “hadoop“ korisnik dovedimo na poziciju foldera hadoop-0.20.2 i unesimo sljedeću naredbu.

hadoop@primeuser-desktop:~/hadoop-0.20.2$ ./bin/start-all.sh



 

Ukoliko pokrećete hadoop po prvi put,moguće je da budete upitani “yes/no” . Ukucajte yes i pustite da se upali sistem. Ispis pokazuje čvor koji se “pali” i servis (da li je to “datanode” ili “tasktracker”). U vašem browseru, posjećivanjem u address bar ukucajte

localhost:50070

Dobićete izgled ekrana sličan slici ispod.

 

Slika prikazuje pristup HDFS-u. Primjetićete da je podebljana poruka na slici “Safe mode is ON”.Hadoop se nalazi u Safe Mode-u prilikom startovanja, jer svaki čvor mora da odgovori master čvoru da li se upalio ili ne. Dok god se svi čvorovi ne jave master čvoru sa pozitivnom ili negativnom potvrdom, nikakve operacije nad HDFS-om se ne mogu vršiti. Vrijeme koje je potrebno za izlazak iz Safe Mode-a se razlikuje od klastera do klastera.

Nakon što se “podigne” hadoop, recimo da želimo da iskopiramo neki fajl (u ovom slučaju video fajl od 3 GB) u HDFS. Replikacija blokova je namještena na vrijednost 2. Blokovi su veličine 64 MB (po default-u). Znači da ćemo na HDFS-u imati duplu veličinu fajla koji će zauzimati 6 GB, sa blokovima koji se nalaze na oba čvora. Obratite pažnju kako je otkucana sljedeća naredba.

 

Navedena naredba kopira

When.We.Left.Earth.Part.1-CtrlHD.mkv

sa lokalnog harddiska na HDFS, pod imenom

WhenWeLeftEarth1.mkv

Za vrijeme kopiranja, u Ganglia Monitoring Systemu možemo vidjeti zauzeće svakog čvora posebno, kao i brzinu kojom se kopira fajl na osnovu zauzetosti mreže klastera. (slika ispod)

Zauzeće mreže za vrijeme kopiranja fajla

Nakon kopiranja fajla, na sljedećim slikama možemo vidjeti status sistema na pomenutim linkovima..

Pošto smo samo jedan fajl kopirali i replicirali 2 puta, vidimo da je zauzeće memorije 6 GB, kao što je i očekivano.

Na gornjoj slici imamo dio postojećih blokova na koje je fajl izdjeljen prilikom kopiranja. Obratite pažnju da se blokovi nalaze i na čvoru sa 192.168.0.130 adresom i sa 192.168.0.131 adresom. Pošto je vrijednost replikacije blokova jednak broju čvorova, svaki blok se nalazi na oba računara. U slučaju manje vrijednosti replikacije od broja čvorova, to neće biti slučaj. Isto tako , stanje fajlova možete saznati i kroz konzolu kucanjem “ekvivalentnih” naredbi, npr. izlistavanje:

A isto to možemo vidjeti i u browser-u kliknuvši na Browse the filesystem. MapReduce aplikacije je vrlo teško napraviti, stoga ćemo preskočiti dio koji objašnjava pokretanje takvih aplikacija. Stanje o tim aplikacijama i njihovom izvršavanju možete takođe vidjeti kroz browser:

localhost:50030
localhost:50060

Na kraju želimo da zaustavimo hadoop:

 

 

Udruženje Linux korisnika – Banja Luka ©