Aller au contenu

Install Docker Hadoop

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).

  1. Depuis un Terminal, téléchargez l’image docker que j’ai stocké sous dockerhub (volume à télécharger > 3.3 GB !):
    docker pull stephanederrode/docker-cluster-hadoop-spark-python-16:4.1
    

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).

  1. 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).

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:4.1

docker run -itd -p 8040:8042 --net=hadoop --name hadoop-slave1 --hostname hadoop-slave1 stephanederrode/docker-cluster-hadoop-spark-python-16:4.1

docker run -itd -p 8041:8042 --net=hadoop --name hadoop-slave2 --hostname hadoop-slave2 stephanederrode/docker-cluster-hadoop-spark-python-16:4.1

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:4.1
    
  • 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

  1. de lancer l’application Docker Desktop, qui lance les daemon Docker.
  2. 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