Installation et configuration du cluster Hadoop 2.7 sur CentOS 7 part1
Apache Hadoop est une construction de framework Open Source pour le stockage et le traitement de données Big Data distribués à travers des clusters d'ordinateurs.
Le projet est basé sur les composants suivants:
Hadoop datanode : 192.168.3. 34 ( DataNode1 )
Hadoop datanode : 192.168.3.51 ( DataNode2 )
Hadoop nécessite Java comme pré-requis. Nous utiliserons jdk 8.
* telechager sur le site oracle jdk 8
* transferer à l’aide de winscp dans le repertoire /usr/lib/jvm
* executer la commande en tant que root: rpm -Uvh jdk-8u131-linux-x64.rpm
Étape 2. Configurer l'alias de la machine 192.168.3.207 dans le fichier hôte
Ensuite, nous devons modifier le fichier hôte pour mettre l'alias du nom de l'ordinateur. Il faut juste editer le fichier hosts avec editeur VI à travers la commande:
* vi /etc/hosts
Une fois le fichier ouvert, ajouter : 192.168.3.207 NameNode à la fin du fichier, enregistrer et fermer.
Étape 3. Configurer le serveur SSH
Pour fonctionner de manière transparente, SSH doit être configuré pour permettre une connexion sans mot de passe pour l'utilisateur root / hadoop à partir des machines du cluster. La façon la plus simple d'y parvenir est de générer une paire de clés public / privé, et elle sera partagée sur le cluster.
Nous allons Générer une clé SSH pour l'utilisateur root ave cette commande:
ssh-keygen -t rsa -P “ “
Nous executerons ensuite la commande suivante qui nous permettra de faire entrer le fichier dans lequel enregistrer la clé en octroyant des droits :
cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
Ensuite se Connecter et valider la connexion sans mot de passe ssh à localhost. Avec
La commande : ssh localhost
Si vous êtes invité à accepter la connexion, sélectionnez oui
Étape 4. Télécharger et installer la distribution Hadoop
apres avoir telechargé hadoop 2.7.2 sur le site d’Apache et transferer dans le repertoire /usr/local via winscp. Nous allons l'installer dans ce / usr / local / Après cela, nous créerons également quelques répertoires supplémentaires comme NameNode pour hadoop pour stocker toutes les informations de NameNode et les sections secondaires pour stocker les images de point de contrôle.
Dans un premier temps nous nous deplacerons dans ce repertoire avec la commande :
cd /usr/local
ensuite utiliserons cette commande pour installer hadoop 2.7.2 :
tar -xzvf hadoop-2.7.2.tar.gz
Et enfin nous allons créer 2 répertoires à partir des commandes:
mkdir –p /usr/local/hadoop_work/hdfs/namenode
mkdir -p /usr/local/hadoop_work/hdfs/namesecondary
Étape 5. Configuration Variables d'environnement
Nous allons configurer certaines variables d'environnement dans .bashrc afin que chaque fois que nous redémarrons nos machines, il sait où trouver l'emplacement d'installation Java ou Hadoop à l'intérieur de la machine. Pour ce faire, dans le cas d’espece il se trouve dans le repertoire
/ usr / lib / jvm / jdk1.8.0_131
Nous allons nous deplacer dans le repertoire : /usr/lib/jvm/jdk1.8.0_131/jre pour editer le fichier .bashrc avec la commande : cd /usr/lib/jvm/jdk1.8.0_131/jre
Une fois dans ce répertoire nous éditons le fichier .bashrc avec cette commande:
vi ~/.bashrc
Le fichier etant ouvert ajoutons à la fin du fichier les configurations suivantes:
export JAVA_HOME= /usr/lib/jvm/jdk1.8.0_131/jre
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export CLASSPATH=$CLASSPATH:/usr/local/hadoop/lib/*:.
export HADOOP_OPTS="$HADOOP_OPTS -Djava.security.egd=file:/dev/../dev/urandom"
Dans ce fichier de configuration nous avons juste configuré les variables de java et de hadoop sans lesquelles nous ne pourrions executer les commandes hadoop. Il ne nous reste qu’enregistrez le fichier .bashrc et la source en tapant la commande ci-dessous: source ~/.bashrc
Étape 6. Configuration JAVA_HOME sous hadoop environment
Pour cela, nous allons editer le fichier hadoop-end.sh Avec cette commande:
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
Une fois Dans le fichier, recherchez la ligne JAVA_HOME = $ {JAVA_HOME}. Remplacez la avec : export JAVA_HOME= /usr/lib/jvm/jdk1.8.0_131/jre Enregistrer et fermer l’editeur.
Étape 7. Configuration du NameNode
Hadoop utilise un fichier de configuration basé sur XML dont il lit tous les paramètres d'exécution. Ces fichiers de configuration sont situés sous le repertoire /usr/local/hadoop/etc/. Nous allons configurer et définir des options minimales juste pour faire démarrer sur le cluster Hadoop. Dans cette configuration, nous utiliserons YARN comme cadre de gestion de cluster.
Configure core-site.xml
Ce fichier de configuration XML nous permet de configurer des propriétés spécifiques au site, telles que les paramètres d'E / S communs à HDFS et MapReduce. Editons le fichier avec la commande : vi core-site.xml
et ensuite écrire les propriétés suivantes entre la balise configuration:
<property>
<name>fs.defaultFS</name>
<value>hdfs://NameNode:8020/</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
Configure core-site.xml
Ce fichier de configuration XML nous permet de configurer des propriétés spécifiques au site, telles que les paramètres d' E/S communs à HDFS et MapReduce. Editons le fichier avec la commande : vi core-site.xml
et ensuite écrire les propriétés suivantes entre la balise configuration:
<property>
<name>fs.defaultFS</name>
<value>hdfs://NameNode:8020/</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
Configurez hdfs-site.xml
Nous dirons à hadoop où se trouve le nom du répertoire de noeud (que nous avons créé précédemment à la fin de l'installation de Hadoop) et le nombre de copies de sauvegarde des fichiers de données à créer dans le système le tout sous la balise de configuration du fichier hdfs-site.xml que nous allons éditer avec la commande : vi hdfs-site.xml.
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_work/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_work/hdfs/datanode</value>
</property>
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file:/usr/local/hadoop_work/hdfs/namesecondary</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.block.size</name>
<value>134217728</value>
</property>
Configurer mapred-site.xml
Cela contrôle les paramètres de configuration des démons MapReduce. Nous devons nous assurer que nous utiliserons le cadre YARN. Nous allons également configurer le serveur MapReduce Job History. Nous allons tout d’abord Copiez le fichier modèle mapred-site.xml.template dans le fichier mapred-site.xml avec la commande : cp mapred-site.xml.template mapred-site.xmlEnsuite editer le fichier avec cette commnde: vi mapred-site.xml Une fois le fichier ouvert inserons entre la balise configuration les lignes suivantes:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>NameNode:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>NameNode:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/user/app</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Djava.security.egd=file:/dev/../dev/urandom</value>
</property>
Configure yarn-site.xml
Ce fichier de configuration XML nous permet de configurer les propriétés spécifiques au site YARN pour Resource Manager & Node Manager. Ouvrons le fichier yarn-site.xml avec la commande :
vi yarn-site.xml
Et inserons entre la balise configuration les lignes de la page suivante:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>NameNode</value>
</property>
<property>
<name>yarn.resourcemanager.bind-host</name>
<value>0.0.0.0</value>
</property>
<property>
<name>yarn.nodemanager.bind-host</name>
<value>0.0.0.0</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>file:/usr/local/hadoop_work/yarn/local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>file:/usr/local/hadoop_work/yarn/log</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>hdfs://NameNode:8020/var/log/hadoop-yarn/apps</value>
</property>
Étape 8.Configurer le maître
Maintenant, nous devons indiquer à Hadoop NameNode le nom d'hôte du nom du nœud secondaire. Dans notre cas, NameNode & secondary NameNode réside sur la même machine. Nous le faisons en éditant le fichier du maitre avec la commande : vi masters ecrivons cette ligne une fois dans le fichier : NameNode Ensuite, nous formaterons le NameNode en tapant cette commande :
/usr/local/hadoop/bin/hadoop namenode -format
Étape 9.Création des nœuds de données(DataNodes)
Notre cluster hadoop sera composé de 2 datanodes disposant de Centos 7 de part et d’autres avec les caractéristiques suivantes;
Nom d’hote: DataNode1
adresse ip : 192.168.3.34
Ram: 6 GB
Nom d’hote: DataNode2
adresse ip : 192.168.3.51
Ram: 6 GB
Étape 10.Ajout des noeuds de données en Master
L’ Ajout consiste a informer le maître de ces nouveaux noeuds de données, pour ce faire nous allons éditer le fichier slaves avec la commande : vi slaves
Une fois dans ce fichier nous devons insérer les données relatives aux deux datanodes pour que le maitre puisse prendre connaissant d’eux nous saisissons donc ceci dans le fichier :
DataNode1
DataNode2
et ajoutons également ces noms d'hôtes du nœud principal en éditant le fichier /etc/hosts avec cette commande : vi /etc/hosts et ajoutons les entrées suivantes:
192.68.3.34 DataNode1
192.168.3.51 DataNode2
Étape 11. Configuration des DataNodes
Installation de JAVA dans les DataNodes
Apres avoir téléchargé jdk8 sur le site d’oracle nous transférons le jdk dans le répertoire /usr/lib/jvm de nos datanodes via winscp et nous procéderons à son installation avec cette commande :
rpm -Uvh jdk-8u131-linux-x64.rpm
Mise à jour du fichier / etc / hosts
Nous ouvrirons le fichier / etc / hosts et inserons à la fin du fichier les donnees
ci-dessous:
192.168.3.207 NameNode
192.168.3.34 DataNode1
192.168.3.51 DataNode2
Configuration variable d'environnement
Pour configurer nos variables d’environnement nous allons editer le fichier .bashrc avec la commande :
vi ~/.bashrc
Ensuite, ajoutez les lignes suivantes à la fin du fichier :
export JAVA_HOME=/usr/lib/jvm/jdk-8u131-linux-x64/jre
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
export CLASSPATH=$CLASSPATH:/usr/local/hadoop/lib/*:.
export HADOOP_OPTS="$HADOOP_OPTS -Djava.security.egd=file:/dev/../dev/urandom"
Étape 12 Installation de Hadoop
Cette fois, nous n'installerons pas Hadoop comme nous l'avons installé sur le NameNode. Au lieu de cela, nous allons simplement copier les répertoires d'installation du NameNode vers les DataNodes. Pour que nous puissions le copier, nous devrons d'abord inclure la clé publique de NameNode sur les clés autorisées de tous les nœuds de données(DataNodes) afin que nous puissions exploiter le programme de copie de fichier SSH (scp) pour la copie.
Connectons-nous au NameNode et copions le contenu de la clé publique sur notre bloc note, pour le faire tapons la commande : cat ~/.ssh/id_rsa.pub
Une fois que nous avons copié la clé,connectons-nous aux DataNodes en editant le fichier ~/.ssh/authorized_keys et collons la clé dans le fichier de clés autorisé. Pendant la même période, nous allons creer également des répertoires de datanode et de yarn dans chaque datanodes avec les commandes suivantes:
mkdir -p /usr/local/hadoop_work/hdfs/datanode
mkdir -p /usr/local/hadoop_work/yarn/local
mkdir -p /usr/local/hadoop_work/yarn/log
Ils seront utilisés par les Démons de gestion de node(NodeManager Daemons)& DataNode .
Connectons-nous et validons la connexion sans mot de passe ssh à tous les Datanodes du NameNode avec la commande:
ssh DataNode1
ssh DataNode2
Si vous êtes invité à accepter la connexion, sélectionnez yes.
Il est maintenant temps de copier l'installation de hadoop, c'est-à-dire les fichiers binaires ainsi que les fichiers de configuration spécifiques à notre site de NameNode aux DataNodes. Connectons-nous au NameNode et exécutez la commande :
cd /usr/local
scp -r hadoop DataNode1:/usr/local
scp -r hadoop DataNode2:/usr/local
Nous Examinons les démons exécutés dans le NameNode ainsi que le DataNodes dans le cluster Hadoop avec les commandes:
root@NameNode:/usr/local# jps
root@DataNode1:~# jps
root@DataNode2:~# jps
Une fois que le Namenode & le Datanodes sont démarrés, nous allons créer quelques répertoires dans le système de fichiers hadoop qui ont été répertoriés dans nos fichiers de configuration spécifiques au site avec les commandes:
-mkdir /tmp
hadoop fs -chmod -R 1777 /tmp
hadoop fs -mkdir /user
hadoop fs -chmod -R 1777 /user
hadoop fs -mkdir /user/app
hadoop fs -chmod -R 1777 /user/app
hadoop fs -mkdir -p /var/log/hadoop-yarn
hadoop fs -chmod -R 1777 /var/log/hadoop-yarn
hadoop fs -mkdir -p /var/log/hadoop-yarn/apps
hadoop fs -chmod -R 1777 /var/log/hadoop-yarn/apps
Ces répertoires HDFS seront utilisés par YARN Map Reduce Staging, YARN Log & Job History Server.
Maintenant, nous devons demarrer le cadre du cluster YARN. Nous devrions exécuter la commande ci-dessous à partir du noeud hébergeant Resource Manager. Dans notre cas, le gestionnaire de ressources est dans le même NameNode.
$HADOOP_HOME/sbin/start-yarn.sh
Maintenant, nous allons demarrer le MapReduce History Server. Nous devrions exécuter la commande suivante à partir du noeud hébergeant le serveur historique:
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
Dans notre cas, History Server est dans le même NameNode. Tout apres, modifions rapidement le fichier $ HADOOP_HOME / etc / hadoop / mapred-site.xml dans le NameNode. Et Remplacons le nom d'hôte de la valeur pour les noms de propriétés comme ci-dessous de NameNode à 0.0.0.0:
Mapreduce.jobhistory.address de NameNode: 10020 à 0.0.0.0:10020.
Mapreduce.jobhistory.webapp.address de NameNode: 19888 à 0.0.0.0:19888
Vérifions à nouveau les démons exécutés dans le NameNode ainsi que les DataNodes dans le cluster Hadoop avec les commandes:
root@NameNode:/usr/local# jps
root@DataNode1:~# jps
root@DataNode2:~# jps
Idéalement, vous devriez voir NameNode, SecondName NameNode & ResourceManager démarré comme processus java dans NameNode; Et le processus Java DataNode & NodeManager dans les DataNodes.
Enfin, vérifions l'état du cluster dans le navigateur Web. En saissans dans l’url les adresses suivantes:
http://192.168.3.207:50070
http://192.168.3.207:8088
http://192.168.3.207:19888
Capture vue Vue d'ensemble des applications
Pour cela nous devons saisir dans l’url l’adresse:
http://192.168.3.207:8088
Pour cela nous devons saisir dans l’url l’adresse:
http://192.168.3.207:19888
je terminerai cet article ici, dans mon prochain article nous discuterons sur les fonctionnalites des differents services que compte hadoop.