Instalirajte Hadoop Multinode Cluster koristeći CDH4 u RHEL/CentOS 6.5


Hadoop je programski okvir otvorenog koda koji je razvio Apache za obradu velikih podataka. Koristi HDFS (Hadoop distribuirani datotečni sustav) za pohranu podataka u svim podatkovnim čvorovima u klasteru na distributivni način i mapreduce model za obradu podataka.

Namenode (NN) je glavni demon koji kontrolira HDFS i Jobtracker (JT ) glavni je demon za motor mapreduce.

Zahtjevi

U ovom vodiču koristim dva CentOS 6.3 VM-a 'master' i 'node' tj. (master i čvor su moja imena hostova). ‘Glavni’ IP je 172.21.17.175, a IP čvora je ‘172.21.17.188’. Sljedeće upute također rade na verzijama RHEL/CentOS 6.x.

Na Učitelju
[root@master ~]# hostname

master
[root@master ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.175  Bcast:172.21.19.255  Mask:255.255.252.0
Na čvoru
[root@node ~]# hostname

node
[root@node ~]# ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.188  Bcast:172.21.19.255  Mask:255.255.252.0

Prvo provjerite nalaze li se svi hostovi klastera u ‘/etc/hosts’ datoteci (na svakom čvoru), ako nemate postavljen DNS.

Na Učitelju
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
Na čvoru
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Instaliranje Hadoop višečvornog klastera u CentOS

Koristimo službeni CDH repozitorij za instaliranje CDH4 na sve hostove (Master i Node) u klasteru.

Korak 1: Preuzmite instalaciju CDH repozitorija

Idite na službenu stranicu za preuzimanje CDH-a i preuzmite verziju CDH4 (tj. 4.6) ili možete upotrijebiti sljedeću naredbu wget da preuzmete spremište i instalirate ga.

Na RHEL/CentOS 32-bitnom
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/i386/cloudera-cdh-4-0.i386.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.i386.rpm
Na RHEL/CentOS 64-bitnom
wget http://archive.cloudera.com/cdh4/one-click-install/redhat/6/x86_64/cloudera-cdh-4-0.x86_64.rpm
yum --nogpgcheck localinstall cloudera-cdh-4-0.x86_64.rpm

Prije instaliranja Hadoop višečvornog klastera dodajte Cloudera javni GPG ključ u svoje spremište pokretanjem jedne od sljedećih naredbi u skladu s arhitekturom vašeg sustava.

## on 32-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/i386/cdh/RPM-GPG-KEY-cloudera
## on 64-bit System ##

rpm --import http://archive.cloudera.com/cdh4/redhat/6/x86_64/cdh/RPM-GPG-KEY-cloudera

Korak 2: Postavite JobTracker & NameNode

Zatim pokrenite sljedeću naredbu da instalirate i postavite JobTracker i NameNode na glavnom poslužitelju.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-0.20-mapreduce-jobtracker
[root@master ~]# yum clean all
[root@master ~]# yum install hadoop-hdfs-namenode

Korak 3: Postavite sekundarni čvor naziva

Ponovno pokrenite sljedeće naredbe na glavnom poslužitelju za postavljanje sekundarnog čvora imena.

[root@master ~]# yum clean all 
[root@master ~]# yum install hadoop-hdfs-secondarynam

Korak 4: Postavite Tasktracker & Datanode

Zatim postavite tasktracker & datanode na svim hostovima klastera (Node) osim JobTracker, NameNode i sekundarnih (ili Standby) NameNode hostova (u ovom slučaju na čvoru).

[root@node ~]# yum clean all
[root@node ~]# yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

Korak 5: Postavite Hadoop klijent

Možete instalirati Hadoop klijent na zasebno računalo (u ovom slučaju ja sam ga instalirao na datanode, možete ga instalirati na bilo koji stroj).

[root@node ~]# yum install hadoop-client

Korak 6: Postavite HDFS na čvorove

Sada, ako smo završili s gornjim koracima, krenimo naprijed s implementacijom hdfs (treba izvršiti na svim čvorovima).

Kopirajte zadanu konfiguraciju u direktorij /etc/hadoop (na svakom čvoru u klasteru).

[root@master ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
[root@node ~]# cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster

Upotrijebite naredbu alternative da postavite svoj prilagođeni direktorij, kako slijedi (na svakom čvoru u klasteru).

[root@master ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@master ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
[root@node ~]# alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

[root@node ~]# alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

Korak 7: Prilagodba konfiguracijskih datoteka

Sada otvorite 'core-site.xml' datoteku i ažurirajte "fs.defaultFS" na svakom čvoru u klasteru.

[root@master conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/core-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master/</value>
</property>
</configuration>

Sljedeće ažuriranje “dfs.permissions.superusergroup” u hdfs-site.xml na svakom čvoru u klasteru.

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/var/lib/hadoop-hdfs/cache/hdfs/dfs/name</value>
  </property>
  <property>
     <name>dfs.permissions.superusergroup</name>
     <value>hadoop</value>
  </property>
</configuration>

Napomena: Provjerite je li gornja konfiguracija prisutna na svim čvorovima (učinite na jednom čvoru i pokrenite scp za kopiranje na ostatak čvorova).

Korak 8: Konfiguriranje lokalnih direktorija za pohranu

Ažurirajte "dfs.name.dir ili dfs.namenode.name.dir" u 'hdfs-site.xml' na NameNode (na Master i Node). Promijenite vrijednost kao što je istaknuto.

[root@master conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.namenode.name.dir</name>
 <value>file:///data/1/dfs/nn,/nfsmount/dfs/nn</value>
</property>
[root@node conf]# cat /etc/hadoop/conf/hdfs-site.xml
<property>
 <name>dfs.datanode.data.dir</name>
 <value>file:///data/1/dfs/dn,/data/2/dfs/dn,/data/3/dfs/dn</value>
</property>

Korak 9: Stvorite imenike i upravljajte dopuštenjima

Izvršite donje naredbe za stvaranje strukture direktorija i upravljanje korisničkim dopuštenjima na računalu Namenode (Master) i Datanode (Node).

[root@master]# mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
[root@master]# chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
[root@node]#  mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
[root@node]#  chown -R hdfs:hdfs /data/1/dfs/nn /nfsmount/dfs/nn /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn

Formatirajte Namenode (na glavnom), izdavanjem sljedeće naredbe.

[root@master conf]# sudo -u hdfs hdfs namenode -format

Korak 10: Konfiguriranje sekundarnog NameNode

Dodajte sljedeće svojstvo u datoteku hdfs-site.xml i zamijenite vrijednost kao što je prikazano na Masteru.

<property>
  <name>dfs.namenode.http-address</name>
  <value>172.21.17.175:50070</value>
  <description>
    The address and port on which the NameNode UI will listen.
  </description>
</property>

Napomena: U našem slučaju vrijednost bi trebala biti ip adresa glavnog VM-a.

Sada implementirajmo MRv1 ( Map-reduce verzija 1 ). Otvorite datoteku ‘mapred-site.xml’ slijedeći prikazane vrijednosti.

[root@master conf]# cp hdfs-site.xml mapred-site.xml
[root@master conf]# vi mapred-site.xml
[root@master conf]# cat mapred-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>
 <name>mapred.job.tracker</name>
 <value>master:8021</value>
</property>
</configuration>

Zatim kopirajte datoteku ‘mapred-site.xml’ na stroj čvora pomoću sljedeće scp naredbe.

[root@master conf]# scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

Sada konfigurirajte lokalne direktorije za pohranu koje će koristiti MRv1 demoni. Ponovo otvorite 'mapred-site.xml' datoteku i napravite promjene kao što je prikazano u nastavku za svaki TaskTracker.

<property>
 <name>mapred.local.dir</name>
 <value>/data/1/mapred/local,/data/2/mapred/local,/data/3/mapred/local</value>
</property>

Nakon navođenja ovih direktorija u datoteci ‘mapred-site.xml’, morate stvoriti direktorije i dodijeliti im ispravna dopuštenja za datoteke na svakom čvoru u vašem klasteru.

mkdir -p /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local
chown -R mapred:hadoop /data/1/mapred/local /data/2/mapred/local /data/3/mapred/local /data/4/mapred/local

Korak 10: Pokrenite HDFS

Sada pokrenite sljedeću naredbu za pokretanje HDFS-a na svakom čvoru u klasteru.

[root@master conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
[root@node conf]# for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

Korak 11: Stvorite direktorije HDFS /tmp i MapReduce /var

Potrebno je stvoriti /tmp s odgovarajućim dozvolama točno kao što je navedeno u nastavku.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp
[root@master conf]# sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
[root@master conf]# sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
[root@master conf]# sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

Sada provjerite strukturu datoteke HDFS.

[root@node conf]# sudo -u hdfs hadoop fs -ls -R /

drwxrwxrwt   - hdfs hadoop          	0 2014-05-29 09:58 /tmp
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var
drwxr-xr-x  	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib
drwxr-xr-x   	- hdfs hadoop         	0 2014-05-29 09:59 /var/lib/hadoop-hdfs
drwxr-xr-x   	- hdfs hadoop          	0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred
drwxr-xr-x   	- mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred
drwxrwxrwt   - mapred hadoop          0 2014-05-29 09:59 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging

Nakon što pokrenete HDFS i stvorite '/tmp', ali prije nego što pokrenete JobTracker, stvorite HDFS direktorij određen parametrom 'mapred.system.dir' (prema zadanim postavkama $ {hadoop.tmp .dir}/mapred/system i promijenite vlasnika u mapred.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
[root@master conf]# sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system

Korak 12: Pokrenite MapReduce

Za pokretanje MapReducea: pokrenite usluge TT i JT.

Na svakom sustavu TaskTracker
[root@node conf]# service hadoop-0.20-mapreduce-tasktracker start

Starting Tasktracker:                               [  OK  ]
starting tasktracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-tasktracker-node.out
Na sustavu JobTracker
[root@master conf]# service hadoop-0.20-mapreduce-jobtracker start

Starting Jobtracker:                                [  OK  ]

starting jobtracker, logging to /var/log/hadoop-0.20-mapreduce/hadoop-hadoop-jobtracker-master.out

Zatim stvorite kućni direktorij za svakog hadoop korisnika. preporučuje se da to učinite na NameNode; na primjer.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir  /user/<user>
[root@master conf]# sudo -u hdfs hadoop fs -chown <user> /user/<user>

Napomena: gdje je korisničko ime za Linux svakog korisnika.

Alternativno, možete kreirati početni direktorij na sljedeći način.

[root@master conf]# sudo -u hdfs hadoop fs -mkdir /user/$USER
[root@master conf]# sudo -u hdfs hadoop fs -chown $USER /user/$USER

Korak 13: Otvorite JT, NN UI iz preglednika

Otvorite svoj preglednik i upišite url kao http://ip_address_of_namenode:50070 za pristup Namenode.

Otvorite drugu karticu u svom pregledniku i upišite url kao http://ip_address_of_jobtracker:50030 za pristup JobTrackeru.

Ovaj postupak je uspješno testiran na RHEL/CentOS 5.X/6.X. Komentirajte ispod ako naiđete na bilo kakve probleme s instalacijom, pomoći ću vam s rješenjima.