Table des Matières
Installation de Hadoop via Docker¶
Les étapes pour installer Hadoop via Docker sont largement adaptées de la page de Lilia Sfaxi, elles-mêmes reposant sur le projet github de Kai Liu.
Installation de Docker et des noeuds¶
Pour installer le logiciel Docker, merci de suivre les consignes disponibles ici, en fonction de votre système d’exploitation (lisez les System requirements pour vérifier que votre machine est adaptée). Si votre machine est trop ancienne, ou avec peu d’espace disque ou mémoire RAM, il y a de bonnes chances que l’installation ne fonctionne pas. Si c’est le cas, - soit vous pouvez travailler avec votre voisin, - soit vous pouvez aller directement à la seconde partie du TP, et réaliser les exercices en local (sans Hadoop).
A partir de maintenant et pour la suite des TPs, il vous faudra penser à lancer Docker (qui s’exécutera en arrière plan).
Nous allons utiliser, tout au long de ce TP, trois contenaires représentant respectivement un nœud maître (le Namenode) et deux nœuds esclaves (les Datanodes).
- Depuis un Terminal, téléchargez l’image docker que j’ai stocké sous dockerhub (volume à télécharger > 3.3 GB !). Si votre ordinateur est équipé de seulement 8GB de RAM, alors utilisez la commande suivante :
docker pull stephanederrode/docker-cluster-hadoop-spark-python-8:3.6
Si non utilisez celle-ci:
docker pull stephanederrode/docker-cluster-hadoop-spark-python-16:3.6
Ce container contient une distribution Linux/Ubuntu, et les librairies nécessaires pour utiliser Hadoop et Spark. Il contient également python3.x (version du langage python compatible avec les versions de Hadoop et Spark installées).
- Créez les 3 contenaires à partir de l’image téléchargée. Pour cela:
a. Créez un réseau qui permettra de relier les trois contenaires:
docker network create --driver=bridge hadoop
b. Créez et lancez les trois contenaires (les instructions -p
permettent de faire un mapping entre les ports de la machine hôte et ceux du contenaire). Important Dans la suite, adaptez la syntaxe -16
à la syntaxe -8
, en fonction de l’image que vous avez téléchargée.
docker run -itd --net=hadoop -p 9870:9870 -p 8088:8088 -p 7077:7077 -p 16010:16010 -p 9999:9999 --name hadoop-master --hostname hadoop-master stephanederrode/docker-cluster-hadoop-spark-python-16:3.6
docker run -itd -p 8040:8042 --net=hadoop --name hadoop-slave1 --hostname hadoop-slave1 stephanederrode/docker-cluster-hadoop-spark-python-16:3.6
docker run -itd -p 8041:8042 --net=hadoop --name hadoop-slave2 --hostname hadoop-slave2 stephanederrode/docker-cluster-hadoop-spark-python-16:3.6
Remarques
- Sur certaines machines, la première ligne de commande ne s’exécute pas correctement. L’erreur provient sans doute du port
9870
que doit déjà être utilisé par une autre application installée sur votre machine. Vous pouvez alors supprimer ce port de la première ligne de commande :
docker run -itd --net=hadoop -p 8088:8088 -p 7077:7077 -p 16010:16010 -p 9999:9999 --name hadoop-master --hostname hadoop-master stephanederrode/docker-cluster-hadoop-spark-python-16:3.6
- Le port
9999
sera utilisé lors du TP sur la librairie Spark streaming.
Preparation au TP¶
- Entrez dans le contenaire
hadoop-master
pour commencer à l’utiliser
docker exec -it hadoop-master bash
Le résultat de cette exécution sera le suivant:
root@hadoop-master:~#
Il s’agit du shell
ou du bash
(Linux/Ubuntu) du nœud maître.
- La commande ls
, qui liste les fichiers et dossiers du dossier en cours, doit faire état des répertoires et fichiers suivants (et d’autres fichiers éventuellement):
TP_Hadoop TP_Spark hdfs
Remarque Ces étapes de configuration ne doivent être réalisées qu’une seule fois. Pour relancer le cluster (une fois qu’on a fermé et relancé son ordinateur p. ex.), il suffira
- de lancer l’application
Docker Desktop
, qui lance les daemon Docker. - de lancer la commande suivante :
docker start hadoop-master hadoop-slave1 hadoop-slave2
Vous pouvez alors entrer dans le Namenode :
docker exec -it hadoop-master bash