Installer Hadoop Multinode Cluster med CDH4 i RHEL/CentOS 6.5


Hadoop er et åpen kildekode-programmeringsramme utviklet av apache for å behandle store data. Den bruker HDFS (Hadoop Distributed File System) for å lagre dataene på tvers av alle datanodene i klyngen på en distributiv måte og kartredusere modellen for å behandle dataene.

Namenode (NN) er en master-demon som kontrollerer HDFS og Jobtracker (JT) er master-demon for mapreduce-motoren.

I denne opplæringen bruker jeg to CentOS 6.3 VM-er 'master' og 'node', nemlig. (master og node er vertsnavnene mine). 'Master' IP er 172.21.17.175 og node IP er '172.21.17.188'. Følgende instruksjoner fungerer også på RHEL/CentOS 6.x-versjoner.

 hostname

master
 ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.175  Bcast:172.21.19.255  Mask:255.255.252.0
 hostname

node
 ifconfig|grep 'inet addr'|head -1

inet addr:172.21.17.188  Bcast:172.21.19.255  Mask:255.255.252.0

Sørg først for at alle klyngevertene er der i '/etc/hosts'-filen (på hver node), hvis du ikke har DNS-oppsett.

 cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
 cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Installere Hadoop Multinode Cluster i CentOS

Vi bruker offisielt CDH-depot for å installere CDH4 på alle vertene (Master og Node) i en klynge.

Gå til den offisielle CDH-nedlastingssiden og hent CDH4-versjonen (dvs. 4.6), eller du kan bruke følgende wget-kommando for å laste ned depotet og installere det.

# 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
# 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

Før du installerer Hadoop Multinode Cluster, legg til Cloudera Public GPG Key til depotet ditt ved å kjøre en av følgende kommandoer i henhold til systemarkitekturen din.

## 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

Kjør deretter følgende kommando for å installere og konfigurere JobTracker og NameNode på Master-serveren.

 yum clean all 
 yum install hadoop-0.20-mapreduce-jobtracker
 yum clean all
 yum install hadoop-hdfs-namenode

Igjen, kjør følgende kommandoer på hovedserveren for å sette opp sekundær navnenoden.

 yum clean all 
 yum install hadoop-hdfs-secondarynam

Deretter setter du opp oppgavesporing og datanode på alle klyngeverter (Node) bortsett fra JobTracker, NameNode og Secondary (eller Standby) NameNode-verter (på noden i dette tilfellet).

 yum clean all
 yum install hadoop-0.20-mapreduce-tasktracker hadoop-hdfs-datanode

Du kan installere Hadoop-klienten på en separat maskin (i dette tilfellet har jeg installert den på datanode, du kan installere den på hvilken som helst maskin).

 yum install hadoop-client

Hvis vi er ferdige med trinnene ovenfor, la oss gå videre for å distribuere hdfs (skal gjøres på alle nodene).

Kopier standardkonfigurasjonen til katalogen /etc/hadoop (på hver node i klyngen).

 cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster
 cp -r /etc/hadoop/conf.dist /etc/hadoop/conf.my_cluster

Bruk alternatives-kommandoen for å angi din egendefinerte katalog, som følger (på hver node i klyngen).

 alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

 alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster
 alternatives --verbose --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.my_cluster 50
reading /var/lib/alternatives/hadoop-conf

 alternatives --set hadoop-conf /etc/hadoop/conf.my_cluster

Åpne nå 'core-site.xml'-filen og oppdater fs.defaultFS på hver node i klyngen.

 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>
 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>

Neste oppdatering dfs.permissions.superusergroup i hdfs-site.xml på hver node i klyngen.

 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>
 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>

Merk: Sørg for at konfigurasjonen ovenfor er til stede på alle nodene (gjør på én node og kjør scp for å kopiere på resten av nodene).

Oppdater dfs.name.dir eller dfs.namenode.name.dir i 'hdfs-site.xml' på NameNode (på Master og Node ). Vennligst endre verdien som uthevet.

 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>
 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>

Utfør kommandoene nedenfor for å lage katalogstruktur og administrere brukertillatelser på Namenode (Master) og Datanode (Node) maskin.

 mkdir -p /data/1/dfs/nn /nfsmount/dfs/nn
 chmod 700 /data/1/dfs/nn /nfsmount/dfs/nn
  mkdir -p /data/1/dfs/dn /data/2/dfs/dn /data/3/dfs/dn /data/4/dfs/dn
  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

Formater Namenode (på Master), ved å gi følgende kommando.

 sudo -u hdfs hdfs namenode -format

Legg til følgende egenskap til filen hdfs-site.xml og erstatt verdien som vist på Master.

<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>

Merk: I vårt tilfelle bør verdien være ip-adressen til master VM.

La oss nå distribuere MRv1 ( Map-reduce versjon 1 ). Åpne 'mapred-site.xml'-filen ved å følge verdiene som vist.

 cp hdfs-site.xml mapred-site.xml
 vi mapred-site.xml
 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>

Deretter kopierer du ‘mapred-site.xml’-filen til nodemaskinen ved å bruke følgende scp-kommando.

 scp /etc/hadoop/conf/mapred-site.xml node:/etc/hadoop/conf/
mapred-site.xml                                                                      100%  200     0.2KB/s   00:00

Konfigurer nå lokale lagringskataloger for bruk av MRv1 Daemons. Åpne igjen 'mapred-site.xml'-filen og gjør endringer som vist nedenfor for hver TaskTracker.

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

Etter å ha spesifisert disse katalogene i 'mapred-site.xml'-filen, må du opprette katalogene og tildele de riktige filtillatelsene til dem på hver node i klyngen din.

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

Kjør nå følgende kommando for å starte HDFS på hver node i klyngen.

 for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done
 for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

Det kreves å opprette /tmp med riktige tillatelser nøyaktig som nevnt nedenfor.

 sudo -u hdfs hadoop fs -mkdir /tmp
 sudo -u hdfs hadoop fs -chmod -R 1777 /tmp
 sudo -u hdfs hadoop fs -mkdir -p /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
 sudo -u hdfs hadoop fs -chmod 1777 /var/lib/hadoop-hdfs/cache/mapred/mapred/staging
 sudo -u hdfs hadoop fs -chown -R mapred /var/lib/hadoop-hdfs/cache/mapred

Bekreft nå HDFS-filstrukturen.

 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

Etter at du har startet HDFS og opprettet '/tmp', men før du starter JobTracker, må du opprette HDFS-katalogen spesifisert av parameteren 'mapred.system.dir' (som standard $ {hadoop.tmp.dir}/mapred/system og endre eier til mapred.

 sudo -u hdfs hadoop fs -mkdir /tmp/mapred/system
 sudo -u hdfs hadoop fs -chown mapred:hadoop /tmp/mapred/system

For å starte MapReduce: start TT- og JT-tjenestene.

 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
 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

Deretter oppretter du en hjemmekatalog for hver hadoop-bruker. det anbefales at du gjør dette på NameNode; for eksempel.

 sudo -u hdfs hadoop fs -mkdir  /user/<user>
 sudo -u hdfs hadoop fs -chown <user> /user/<user>

Merk: hvor er Linux-brukernavnet til hver bruker.

Alternativt kan du lage hjemmekatalogen som følger.

 sudo -u hdfs hadoop fs -mkdir /user/$USER
 sudo -u hdfs hadoop fs -chown $USER /user/$USER

Åpne nettleseren din og skriv inn url som http://ip_address_of_namenode:50070 for å få tilgang til Namenode.

Åpne en annen fane i nettleseren din og skriv inn url som http://ip_address_of_jobtracker:50030 for å få tilgang til JobTracker.

Denne prosedyren har blitt testet på RHEL/CentOS 5.X/6.X. Vennligst kommenter nedenfor hvis du har problemer med installasjonen, jeg vil hjelpe deg med løsningene.