Recherche de site Web

Installer le cluster multinode Hadoop à l'aide de CDH4 dans RHEL/CentOS 6.5


Hadoop est un framework de programmation open source développé par Apache pour traiter le Big Data. Il utilise HDFS (Hadoop Distributed File System) pour stocker les données sur tous les nœuds de données du cluster de manière distributive et mapreduce un modèle pour traiter les données.

Namenode (NN) est un démon maître qui contrôle HDFS et Jobtracker (JT ) est le démon maître du moteur mapreduce.

Exigences

Dans ce didacticiel, j'utilise deux machines virtuelles CentOS 6.3 « maître » et « nœud », à savoir. (le maître et le nœud sont mes noms d'hôte). L'adresse IP « principale » est 172.21.17.175 et l'adresse IP du nœud est « 172.21.17.188 ». Les instructions suivantes fonctionnent également sur les versions RHEL/CentOS 6.x.

Sur Maître
[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
Sur le nœud
[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

Assurez-vous d'abord que tous les hôtes du cluster sont présents dans le fichier '/etc/hosts' (sur chaque nœud), si vous n'avez pas configuré DNS.

Sur Maître
[root@master ~]# cat /etc/hosts

172.21.17.175 master
172.21.17.188 node
Sur le nœud
[root@node ~]# cat /etc/hosts

172.21.17.197 qabox
172.21.17.176 ansible-ground

Installation du cluster multinœud Hadoop dans CentOS

Nous utilisons le référentiel officiel CDH pour installer CDH4 sur tous les hôtes (maître et nœud) d'un cluster.

Étape 1 : Télécharger Installer le référentiel CDH

Accédez à la page de téléchargement officielle de CDH et récupérez la version CDH4 (c'est-à-dire 4.6) ou vous pouvez utiliser la commande wget suivante pour télécharger le référentiel et l'installer.

Sur RHEL/CentOS 32 bits
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
Sur RHEL/CentOS 64 bits
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

Avant d'installer Hadoop Multinode Cluster, ajoutez la clé GPG publique Cloudera à votre référentiel en exécutant l'une des commandes suivantes en fonction de l'architecture de votre système.

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

Étape 2 : Configurer JobTracker et NameNode

Ensuite, exécutez la commande suivante pour installer et configurer JobTracker et NameNode sur le serveur maître.

[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

Étape 3 : Configurer le nœud de nom secondaire

Encore une fois, exécutez les commandes suivantes sur le serveur maître pour configurer le nœud de nom secondaire.

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

Étape 4 : Configurer Tasktracker et Datanode

Ensuite, configurez Tasktracker et datanode sur tous les hôtes du cluster (nœud), à l'exception des hôtes JobTracker, NameNode et secondaire (ou de secours) NameNode (sur le nœud dans ce cas).

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

Étape 5 : configurer le client Hadoop

Vous pouvez installer le client Hadoop sur une machine distincte (dans ce cas, je l'ai installé sur datanode, vous pouvez l'installer sur n'importe quelle machine).

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

Étape 6 : Déployer HDFS sur les nœuds

Maintenant, si nous en avons terminé avec les étapes ci-dessus, passons au déploiement de hdfs (à faire sur tous les nœuds).

Copiez la configuration par défaut dans le répertoire /etc/hadoop (sur chaque nœud du cluster).

[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

Utilisez la commande alternatives pour définir votre répertoire personnalisé, comme suit (sur chaque nœud du cluster).

[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

Étape 7 : personnalisation des fichiers de configuration

Ouvrez maintenant le fichier « core-site.xml » et mettez à jour « fs.defaultFS » sur chaque nœud du cluster.

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

Mettez ensuite à jour « dfs.permissions.superusergroup » dans hdfs-site.xml sur chaque nœud du cluster.

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

Remarque : Veuillez vous assurer que la configuration ci-dessus est présente sur tous les nœuds (faites sur un nœud et exécutez scp pour copier sur le reste des nœuds ).

Étape 8 : configuration des répertoires de stockage locaux

Mettez à jour « dfs.name.dir ou dfs.namenode.name.dir » dans « hdfs-site.xml » sur le NameNode (sur Master et Node). Veuillez modifier la valeur comme indiqué.

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

Étape 9 : Créer des répertoires et gérer les autorisations

Exécutez les commandes ci-dessous pour créer une structure de répertoires et gérer les autorisations des utilisateurs sur la machine Namenode (Maître) et 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

Formatez le Namenode (sur Master), en exécutant la commande suivante.

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

Étape 10 : Configuration du NameNode secondaire

Ajoutez la propriété suivante au fichier hdfs-site.xml et remplacez la valeur comme indiqué sur 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>

Remarque : Dans notre cas, la valeur doit être l'adresse IP de la VM principale.

Déployons maintenant MRv1 ( Map-reduce version 1 ). Ouvrez le fichier « mapred-site.xml » en suivant les valeurs comme indiqué.

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

Ensuite, copiez le fichier « mapred-site.xml » sur la machine du nœud à l'aide de la commande scp suivante.

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

Configurez maintenant les répertoires de stockage locaux à utiliser par les démons MRv1. Ouvrez à nouveau le fichier « mapred-site.xml » et apportez les modifications comme indiqué ci-dessous pour chaque TaskTracker.

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

Après avoir spécifié ces répertoires dans le fichier « mapred-site.xml », vous devez créer les répertoires et leur attribuer les autorisations de fichier appropriées sur chaque nœud de votre cluster.

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

Étape 10 : Démarrez HDFS

Exécutez maintenant la commande suivante pour démarrer HDFS sur chaque nœud du cluster.

[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

Étape 11 : Créer les répertoires HDFS /tmp et MapReduce /var

Il est nécessaire de créer /tmp avec les autorisations appropriées, exactement comme mentionné ci-dessous.

[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

Vérifiez maintenant la structure du fichier 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

Après avoir démarré HDFS et créé '/tmp', mais avant de démarrer JobTracker, veuillez créer le répertoire HDFS spécifié par le paramètre 'mapred.system.dir' (par défaut $ {hadoop.tmp .dir}/mapred/system et changez de propriétaire en 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

Étape 12 : Démarrer MapReduce

Pour démarrer MapReduce : veuillez démarrer les services TT et JT.

Sur chaque système 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
Sur le système 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

Ensuite, créez un répertoire personnel pour chaque utilisateur Hadoop. il est recommandé de le faire sur NameNode ; Par exemple.

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

Remarque : où est le nom d'utilisateur Linux de chaque utilisateur.

Alternativement, vous pouvez créer le répertoire personnel comme suit.

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

Étape 13 : Ouvrez JT, NN UI à partir du navigateur

Ouvrez votre navigateur et saisissez l'URL sous la forme http://ip_address_of_namenode:50070 pour accéder à Namenode.

Ouvrez un autre onglet dans votre navigateur et saisissez l'URL comme http://ip_address_of_jobtracker:50030 pour accéder à JobTracker.

Cette procédure a été testée avec succès sur RHEL/CentOS 5.X/6.X. Veuillez commenter ci-dessous si vous rencontrez des problèmes lors de l'installation, je vous aiderai avec les solutions.