Vous êtes sur la page 1sur 10

TP1 : Big Data

Installation et configuration de Hadoop 2

Présentation
Ce TP s'intéresse à l'installation et la configuration d'un cluster Hadoop simple nœud. Nous décrirons
comment réaliser une telle installation dans un système virtualisé Linux (Ubuntu 14.10). Bien entendu,
Hadoop n'a d'intérêt que s'il est utilisé dans un cluster composé de plusieurs machines. En effet,
utiliser Hadoop dans un environnement simple nœud, comme nous allons le faire, n'a de sens que
pour tester la configuration de l'installation ou fournir un environnement de développement
MapReduce.

Dans le cadre de ce TP, nous utiliserons la distribution Hadoop fournie par Apache. Par ailleurs, si nous
consultons le site de la fondation Apache, on se retrouve avec quatre versions majeures Hadoop. À
l'écriture de ce cours, il s'agissait des versions 0.23.X, 1.2.X, 2.2.X et 2.X.X. Les trois premières versions
correspondent à des versions stables et aptes à passer en production. La dernière est la version en
cours.

I. Environnement de travail
L’installationde Hadoop 2 dans ce cours sera réalisée dans un environnement Linux virtualisé (Ubuntu
14.10 LTS). Il est préférable d’utiliser VMware 10 :

Et créer une machine virtuelle Ubuntu 14.04.5 :

II. Prérequis
1. Mise à jour du système
Avant toutes installations de nouveaux paquets, mettez à jour le cache des paquets sur votre machine.
La commande suivante téléchargera la nouvelle liste des paquets proposés par le dépôt.

$ sudo apt-get update

Dans le “Settings” de la VM, mettez le réseau à « Bridged » ou à «NAT » selon votre type de connexion
à fin d’avoir une connexion dans la VM:

1 2022/2023 Pr. ROCHD Yassir


2. Java

Hadoop est écrit en Java, donc vous aurez besoin d'avoir Java installé sur votre machine (version 7 ou
ultérieure).

Pour ce cours, la version 8 de Java sera utilisée via la distribution OpenJDK. La commande pour
installer OpenJDK 8 sur un Linux.

$ sudo apt-get install openjdk-8-jdk

Après l'installation, assurez-vous que la version Java est correctement installée.

$ java -version

3. Groupe et utilisateur Hadoop

Nous emploierons un utilisateur Hadoop spécifique pour exécuter un nœud Hadoop. Bien que celui-
ci ne soit pas requis, il est fortement recommandé de séparer les installationsdes logiciels afin de
garantir les problèmes de sécurité et de permissions.

Un utilisateur hduser avec le mot de passe hduser sera créé et ajouté au groupe hadoop.

$ sudo addgroup hadoop


$ sudo adduser --ingroup hadoop hduser

2 2022/2023 Pr. ROCHD Yassir


Connectez-vous avec ce nouvel utilisateur.

4. Configuration SSH

Hadoop nécessite un accès SSH pour gérer les différents nœuds et pour vous connectez à la machine
virtuelle.

Tout d'abord, assurez-vous que SSH est installé et un serveur est en cours d'exécution. Sur Ubuntu,
ce résultat est obtenu avec :

$ sudo apt-get install openssh-server

5. Configuration SSH

$ sudo su hduser
$ ssh-keygen -t rsa -P ""

Cette commande va créer une paire de clés RSA (publique/privée) avec un mot de passe vide. Dans
notre cas de test et de virtualisation, l'absence de mot de passe n'a pas d'importance.

Vous devez ensuite autoriser l'accès au SSH de la machine avec cette nouvelle clé fraîchement créée.

$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Tester la connexion SSH à partir de l'utilisateur hduser

$ ssh localhost

III. Installation
Dans ce cours, nous ciblons la dernière version stable Hadoop 2.7.4 .

Téléchargez le fichier compressé à travers la commande suivante :

$ wget http://www.eu.apache.org/dist/hadoop/common/stable2/hadoop-2.7.4.tar.gz

Décompressez l'archive de Hadoop via la commande suivante :

$ tar xzf hadoop-2.7.4.tar.gz

Déplacez le répertoire hadoop-2.7.4 vers /usr/local sous le nom hadoop :

$ sudo mv hadoop-2.7.4 /usr/local/hadoop

3 2022/2023 Pr. ROCHD Yassir


Donner à l’utilisateur hduser du groupe hadoop les permissions pour ce dossier.

$ sudo chown hduser:hadoop -R /usr/local/hadoop

Créez les répertoires de NameNode et DataNode et changez le propriétaire de dossier «hadoop» et


les dossiers et fichiers contenus à l’intérieur de ce dossier.

$ sudo mkdir -p /usr/local/hadoop/hadoopdata/hdfs/namenode


$ sudo mkdir -p /usr/local/hadoop/hadoopdata/hdfs/datanode
$ sudo chown hduser:hadoop -R /usr/local/hadoop/

Avant de pouvoir exécuter Hadoop, vous devez lui dire où Java est situé sur votre système. Si vous
avez la variable d'environnement JAVA_HOME mis au point avec une installation de Java appropriée,
vous n'avez rien à configurer.
C'est très pratique de créer une variable d'environnement (HADOOP_HOME) qui pointe vers le
répertoire d'installation Hadoop et de mettre le répertoire binaire Hadoop sur votre chemin de ligne
de commande (PATH). (En Hadoop 2.0 ou ultérieure, vous devrez mettre le répertoire sbin sur le
"PATH" aussi).

Seul le fichier de configuration utilisateur .bashrc a besoin d'être modifié afin qu'il propage les
nouvelles valeurs des variables d'environnement.

Ouvrez le fichier .bashrc (avec la commande « nano » ou « gedit »)

$ sudo gedit .bashrc

Puis ajoutez à la fin du fichier les lignes suivantes : (PS : Vérifiez le chemin de Java dans votre
machine)

# Java Environment Variable


export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
# -- HADOOP ENVIRONMENT VARIABLES START -- #
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"
# -- HADOOP ENVIRONMENT VARIABLES END -- #

4 2022/2023 Pr. ROCHD Yassir


Pour que le système prenne en compte la modification, redémarrez la machine : [sudo reboot]
ou bien recharger le fichier ~/.bashrc : [source ~/.bashrc].

Le fichier $HADOOP_HOME/etc/hadoop/hadoop-env.sh contient des variables d'environnement


utilisées par Hadoop. Décommentez (ou modifiez) celle de la variable JAVA_HOME.

# The java implementation to use.


export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64

Vérifiez que Hadoop s'exécute en tapant :

$ hadoop version
Hadoop 2.7.4
Subversion https://shv@git-wip-us.apache.org/repos/asf/hadoop.git -r
cd915e1e8d9d0131462a0b7301586c175728a282
Compiled by kshvachk on 2017-08-01T00:29Z
Compiled with protoc 2.5.0
From source with checksum 50b0468318b4ce9bd24dc467b7ce1148
This command was run using
/usr/local/hadoop/share/hadoop/common/hadoop-common-2.7.4.jar

IV. Configuration
Tous les fichiers de configuration de Hadoop sont disponibles dans le répertoire /etc/hadoop.

Les fichiers de configuration de Hadoop fonctionnent sur le principe de clé/valeur : la clé


correspondant au nom du paramètre et valeur à la valeur assignée à ce paramètre. Ces fichiers de
configuration utilisent le format XML. Les nouveaux paramètres sont à ajouter entre la balise
<configuration> … </configuration>.

Chaque propriété de ce fichier est de la forme :

<property>
<name>nom de la propriété</name>
<value>valeur de la propriété</value>
</property>

Nous ne pouvons pas être exhaustifs sur les modifications à apporter sur ces fichiers de configuration.
Nous nous limiterons donc aux paramètres de base pour exécuter un cluster Hadoop composé d'un
nœud.

1. core-site.xml

5 2022/2023 Pr. ROCHD Yassir


Le fichier $HADOOP_HOME/etc/hadoop/core-site.xml est le fichier général de la configuration de la
plate-forme. Il contient des informations telles que le numéro de port utilisé par l'instance Hadoop, la
mémoire allouée pour le système de fichiers, la limite de mémoire pour stocker les données et la taille
des tampons de lecture/écriture.

Ouvrir le fichier core-site.xml et ajouter les propriétés suivantes entre

<configuration>
/*--- contenue a jouter--- */
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

La propriété fs.defaultFS permet de spécifier quant à elle le nom du système de fichier. Hdfs://
localhost/ est utilisé pour définir un système de fichiers par défaut pour Hadoop. Les systèmes de
fichiers sont spécifiés par un URI, et ici nous avons utilisé un HDFS URI pour configurer Hadoop à utiliser
HDFS par défaut. Les démons HDFS vont utiliser cette propriété pour déterminer l'hôte et le port du
NameNode HDFS.

2. hdfs-site.xml

Le fichier $HADOOP_HOME/etc/hadoop/hdfs-site.xml contient les paramètres spécifiques au


système de fichiers HDFS : le nombre de réplication des données, le chemin de NameNode et les
chemins des DataNodes dans les systèmes de fichiers locaux. Il désigne l'endroit où vous souhaitez
stocker l'infrastructure Hadoop.

<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/hadoopdata/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/hadoopdata/hdfs/datanode</value>
</property>
</configuration>

6 2022/2023 Pr. ROCHD Yassir


Le paramètre dfs.replication permet de préciser le nombre de réplication d'un block. La valeur sera 1
puisque notre cluster ne se compose que d'un noeud. En effet, nous avons mis cette propriété, à 1 afin
que HDFS ne réplique pas le blocs du système de fichiers par le facteur par défaut 3. Lors de l'exécution
d'une seule datanode, HDFS ne peut pas reproduire les blocs à trois datanodes, de sorte qu'il soit en
avertissement continu sur les blocs étant sous-répliqués. Ce paramètre permet de résoudre ce
problème.
La propriété dfs.namenode.name.dir détermine l'endroit où le NameNode de HDFS doit stocker la
"name table" (fsimage) sur le système de fichiers local.

La propriété dfs.datanode.data.dir détermine l'endroit où un DataNode de HDFS doit stocker ses blocs
sur le système de fichiers local.

3. yarn-site.xml

Ce fichier est utilisé pour la configuration du yarn sur hadoop. ous devons configurer le fichier
$HADOOP_HOME/etc/hadoop/yarn-site.xml.

<configuration>
<property>
<property>
<name>yarn.nodemanager.aux-services</name>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<value>mapreduce_shuffle</value>
</property>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>

4. mapred-site.xml

Ce fichier est utilisé pour spécifier quel Framework MapReduce nous utilisons. Par default, Hadoop
contient un Template pour mapred-site.xml. Avant tout, vous devez copier le fichier mapred-
site.xml.template vers le fichier mapred-site.xml en utilisant la commande ci-dessus :

$ cp mapred-site.xml.template mapred-site.xml

Ouvrir ce fichier est ajouter les propriétés suivantes :

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

7 2022/2023 Pr. ROCHD Yassir


</configuration>

5. Vérification d’installation du Hadoop

Les étapes suivantes sont utilisées afin de vérifier l’installation hadoop.

Formatter namenode
Avant de démarrer le serveur Hadoop, vous devez formater le système de fichiers HDFS. Comme tout
système de fichiers, il est nécessaire de le formater avant son utilisation. Dans le cas de cette
installation d'un cluster simple noeud, seul le système de fichiers HDFS de votre machine locale sera
formaté. Pour cela, il suffit d’exécuter la commande hadoop système suivante :

$ hdfs namenode –format

Démarrage et arrêt d'un serveur Hadoop

Pour démarrer Hadoop, vous aurez besoin de démarrer le système de fichiers HDFS et le serveur
MapReduce dans le cas où vous souhaitez utiliser des jobs MapReduce.

La commande suivante démarre le système de fichiers HDFS.

$ start-dfs.sh

Il faut ensuite démarrer le serveur MapReduce en exécutant la commande suivante :

$ start-yarn.sh

Vérifier les services démarrés

Pour s'assurer que tout fonctionne, utiliser l'outil jps pour lister les processus Java en cours d'exécution
:

$ jps
3631 Jps
3336 NodeManager
3212 ResourceManager
3651 NameNode
2863 DataNode
3052 SecondaryNameNode

Depuis la version 2.3.x de Hadoop, ResourceManager remplace JobTracker.

8 2022/2023 Pr. ROCHD Yassir


Vous pouvez également vérifier si les démons ont commencé avec succès en regardant fichiers de logs
dans le répertoire des logs (dans le répertoire d'installation Hadoop) ou en regardant la bande
interfaces, à l'adresse http://localhost:8088/ pour le ResourceManager et à l'adresse
http://localhost:50070/ pour la NameNode.

Vérification de toutes les applications sur le cluster


http://localhost:8088/

Accès en hadoop par le navigateur


http://localhost:50070/

9 2022/2023 Pr. ROCHD Yassir


et la commande suivante pour interrompre le serveur MapReduce :

$ stop-yarn.sh

Remarque :

Pour utiliser la ligne de commande sous HDFS (hadoop fs –[generic option]), n’oublierez jamais de
démarrer HDFS (start-dfs.sh).

Même remarque pour l’utilisation de yarn (start-yarn.sh).

Remarques :
 Si l’interface web du ResourceManager n’a pas été affichée vous devez vérifier la
configuration des fichiers « mapred-site.xml » et « yarn-site.xml ».
 Si l’interface web du NameNode n’a pas été affichée vous devez vérifier la configuration des
fichiers « core-site.xml » et « hdfs-site.xml », et suivre les étapes suivantes :
o Lancez la commande : hdfs namenode
o Généralement vous aurez comme exception : NameNode is not formatted
o Lancez les commandes : stop-dfs.sh et stop-yarn.sh
o Vérifiez la configurationdes fichiers « core-site.xml » et « hdfs-site.xml ». Cette
exception peut être dû à l’oublie de la sauvegarde des modifications nécessaires sur
ces fichiers.
o Supprimez le contenu des deux dossiers (le contenu des dossiers, pas les dossiers!) :
/usr/local/hadoop/hadoopdata/hdfs/namenode
/usr/local/hadoop/hadoopdata/hdfs/datanode
o Refaites le formatage : hdfs namenode –format
o Lancez les commandes : start-dfs.sh et start-yarn.sh
o Lancez la commande : jps
Le namenode et le datanode doivent apparaitre dans la liste.
o Consultez la page http://localhost:50070/

10 2022/2023 Pr. ROCHD Yassir

Vous aimerez peut-être aussi