Le framework Apache Hadoop

Utilisation d'Hadoop en mode Distribué

 




Intéret du mode Distribué

Le mode Distribué est le mode d'exécution réel d'Hadoop. Il permet de faire fonctionner le système de fichiers distribué et les tâches mapreduce sur un ensemble de machines.

Pour cela, il faut disposer de plusieurs machines permettant d'héberger les données et d'exécuter les tâches.

 

Exemple de configuration

En mode distribué, il faut, comme en pseudo-distribué, configurer les fichiers core-site.xml et mapred-site.xml pour paramétrer les rôles de NameNode et de JobTracker :

Nous définissons deux noms d'hôtes master et slave (dans le fichier /etc/hosts de notre système) qui vont respectivement jouer les rôles de maitre et d'esclave dans le cadre de notre exemple

conf/core-site.xml:


                <configuration>
                    <property>
                        <name>fs.default.name</name>
                        <value>hdfs://master:9000</value>
                    </property>
                </configuration>
            

conf/mapred-site.xml:


                <configuration>
                    <property>
                        <name>mapred.job.tracker</name>
                        <value>master:9001</value>
                    </property>
                </configuration>
            

Le noeud maître utilisera donc le port 9000 dans le cadre de la gestion des DataNodes (rôle NameNode) et sur le port 9001 pour la gestion des jobs MapReduce (rôle JobTracker)

Il est aussi possible de configurer le système de fichiers distribué au travers du fichier conf/hdfs-site.xml. Ici, nous configurons ce fichier pour dire à Hadoop de répliquer automatiquement les fichiers des DataNodes une fois :

conf/hdfs-site.xml:


                <configuration>
                    <property>
                        <name>dfs.replication</name>
                        <value>1</value>
                    </property>
                </configuration>
            

Le fichier conf/masters nous permet de définir la liste les noms d'hôtes des machines maîtres de l'architecture. Dans le cadre du mode distribué, le maître est donc le noeud master. Son contenu est donc :

                master
                

Le fichier conf/slaves nous permet de définir la liste les noms d'hôtes des machines esclaves de l'architecture. Dans le cadre du mode distribué, l'esclave est donc le noeud slave. Son contenu est donc :

                slave
                

Nous pouvons donc tester l'exécution d'un job MapReduce, toujours de la même manière, avec la commande bin/hadoop jar [jar_file] input/ output/

Cependant, cette fois ci, la configuration que nous avons effectué exécutera le job en mode distribué, sur les machines master et slave.