Instal·leu Hadoop Multinode Cluster mitjançant CDH4 a RHEL/CentOS 6.5


Hadoop és un marc de programació de codi obert desenvolupat per apache per processar grans dades. Utilitza HDFS (Hadoop Distributed File System) per emmagatzemar les dades a tots els nodes de dades del clúster d'una manera distributiva i el model mapreduce per processar les dades.

Namenode (NN) és un dimoni mestre que controla HDFS i Jobtracker (JT) és un dimoni principal per al motor mapreduce.

En aquest tutorial estic fent servir dues màquines virtuals CentOS 6.3 mestre i node, és a dir. (el mestre i el node són els meus noms d'amfitrió). La IP mestra és 172.21.17.175 i la IP del node és 172.21.17.188. Les instruccions següents també funcionen amb les versions RHEL/CentOS 6.x.

 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

Primer, assegureu-vos que tots els amfitrions del clúster hi siguin al fitxer /etc/hosts (a cada node), si no teniu configurat el DNS.

 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

Instal·lació de Hadoop Multinode Cluster a CentOS

Utilitzem el dipòsit oficial de CDH per instal·lar CDH4 a tots els amfitrions (Master i Node) d'un clúster.

Aneu a la pàgina oficial de descàrrega de CDH i agafeu la versió CDH4 (és a dir, 4.6) o podeu utilitzar la següent comanda wget per descarregar el dipòsit i instal·lar-lo.

# 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

Abans d'instal·lar Hadoop Multinode Cluster, afegiu la clau pública GPG de Cloudera al vostre dipòsit executant una de les ordres següents segons l'arquitectura del vostre sistema.

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

A continuació, executeu l'ordre següent per instal·lar i configurar JobTracker i NameNode al servidor principal.

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

De nou, executeu les ordres següents al servidor mestre per configurar el node de nom secundari.

 yum clean all 
 yum install hadoop-hdfs-secondarynam

A continuació, configureu el rastrejador de tasques i el node de dades a tots els amfitrions del clúster (Node), excepte els amfitrions JobTracker, NameNode i secundaris (o en espera) NameNode (al node en aquest cas).

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

Podeu instal·lar el client Hadoop en una màquina independent (en aquest cas l'he instal·lat a datanode, podeu instal·lar-lo a qualsevol màquina).

 yum install hadoop-client

Ara, si hem acabat amb els passos anteriors, avancem per desplegar hdfs (que es farà a tots els nodes).

Copieu la configuració predeterminada al directori /etc/hadoop (a cada node del clúster).

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

Utilitzeu l'ordre d'alternatives per configurar el vostre directori personalitzat, de la manera següent (a cada node del clúster).

 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

Ara obriu el fitxer core-site.xml i actualitzeu fs.defaultFS a cada node del clúster.

 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>

Següent actualització dfs.permissions.superusergroup a hdfs-site.xml a cada node del clúster.

 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>

Nota: si us plau, assegureu-vos que la configuració anterior estigui present a tots els nodes (feu-ho en un node i executeu scp per copiar a la resta dels nodes).

Actualitzeu dfs.name.dir o dfs.namenode.name.dir a hdfs-site.xml al NameNode (a Master i Node). Canvieu el valor tal com es destaca.

 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>

Executeu les ordres següents per crear una estructura de directoris i gestionar els permisos d'usuari a la màquina Namenode (Master) i Datanode (Node).

 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

Formateu el Namenode (a Master), emetent l'ordre següent.

 sudo -u hdfs hdfs namenode -format

Afegiu la propietat següent al fitxer hdfs-site.xml i substituïu el valor tal com es mostra a 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>

Nota: En el nostre cas, el valor hauria de ser l'adreça IP de la màquina virtual mestra.

Ara despleguem MRv1 (versió de reducció de mapes 1). Obriu el fitxer mapred-site.xml seguint els valors que es mostren.

 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>

A continuació, copieu el fitxer mapred-site.xml a la màquina del node mitjançant l'ordre scp següent.

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

Ara configureu els directoris d'emmagatzematge local per utilitzar els dimonis MRv1. Torneu a obrir el fitxer mapred-site.xml i feu canvis com es mostra a continuació per a cada TaskTracker.

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

Després d'especificar aquests directoris al fitxer 'mapred-site.xml', heu de crear els directoris i assignar-los els permisos de fitxer correctes a cada node del vostre clúster.

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

Ara executeu l'ordre següent per iniciar HDFS a tots els nodes del clúster.

 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

Cal crear /tmp amb els permisos adequats exactament com s'esmenta a continuació.

 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

Ara verifiqueu l'estructura del fitxer HDFS.

 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

Després d'iniciar HDFS i crear '/tmp', però abans d'iniciar el JobTracker, creeu el directori HDFS especificat pel paràmetre 'mapred.system.dir' (per defecte $ {hadoop.tmp.dir}/mapred/system i canvieu el propietari a maped.

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

Per iniciar MapReduce: inicieu els serveis TT i JT.

 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

A continuació, creeu un directori d'inici per a cada usuari d'hadoop. es recomana que ho feu a NameNode; per exemple.

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

Nota: on és el nom d'usuari de Linux de cada usuari.

Alternativament, podeu crear el directori d'inici de la següent manera.

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

Obriu el vostre navegador i escriviu l'URL com a http://ip_address_of_namenode:50070 per accedir a Namenode.

Obriu una altra pestanya al vostre navegador i escriviu l'URL com a http://ip_address_of_jobtracker:50030 per accedir a JobTracker.

Aquest procediment s'ha provat amb èxit a RHEL/CentOS 5.X/6.X. Comenteu a continuació si teniu cap problema amb la instal·lació, us ajudaré amb les solucions.