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.