tp1 big data - mapreduce

7
1 ENIS – GI 3 – 2017/2018 Mme. Amal ABID TP 1 - Big Data Programmation Hadoop Introduction Dans ce TP, nous manipulerons l’exemple « Word Count » ou « Compteur d’occurrence de mots » vu en cours, en premier lieu sur la machine virtuelle Apache Hadoop (installée par létudiant) puis sur la machine virtuelle Cloudera. A. Manipulation sur la VM Apache Hadoop I. Préparation du TD 1. Démarrer la machine virtuelle. 2. Démarrer les services de Hadoop avec les commandes : $ start-dfs.sh $ start-yarn.sh 3. Vérifier le bon fonctionnement de Hadoop. 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 4. Vérifier que l'environnement de compilation est fonctionnel. (Vérifier que Java est bien installé sur votre machine « java version »).

Upload: amal-abid

Post on 23-Jan-2018

1.472 views

Category:

Data & Analytics


17 download

TRANSCRIPT

Page 1: TP1 Big Data - MapReduce

1 ENIS – GI 3 – 2017/2018 Mme. Amal ABID

TP 1 - Big Data Programmation Hadoop

Introduction Dans ce TP, nous manipulerons l’exemple « Word Count » ou « Compteur d’occurrence de

mots » vu en cours, en premier lieu sur la machine virtuelle Apache Hadoop (installée par

l’étudiant) puis sur la machine virtuelle Cloudera.

A. Manipulation sur la VM Apache Hadoop

I. Préparation du TD 1. Démarrer la machine virtuelle.

2. Démarrer les services de Hadoop avec les commandes :

$ start-dfs.sh

$ start-yarn.sh

3. Vérifier le bon fonctionnement de Hadoop. 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

4. Vérifier que l'environnement de compilation est fonctionnel.

(Vérifier que Java est bien installé sur votre machine « java –version »).

Page 2: TP1 Big Data - MapReduce

2 ENIS – GI 3 – 2017/2018 Mme. Amal ABID

5. Exécuter la commande suivante (sur la même ligne) :

$ wget --no-check-certificate

'https://docs.google.com/uc?export=download&id=0B4fI_1marvB

ZZFYwVm5aYmZ1LUU' -O td1_bigdata_enis.zip

La commande va télécharger une archive contenant :

- Le poème ayant servi d'exemple en cours.

- Le code d'exemple du cours (classes Driver, Map et Reduce).

- Un script permettant la mise en place simplifiée de l'environnement de compilation.

Vous pouvez la télécharger directement via le lien : https://goo.gl/jiuFnF

6. Décompresser l'archive :

$ unzip td1_bigdata_enis.zip

II. Manipulation de l’exemple Nous allons maintenant compiler le code d'exemple Java du cours (compteur d’occurrence de

mots).

1. Changer le répertoire courant :

$ cd td1_bigdata_enis

2. Compiler le programme Hadoop (le tout sur la même ligne) :

$ javac -classpath

"/usr/local/hadoop/share/hadoop/common/hadoop-common-

2.7.4.jar:/usr/local/hadoop/share/hadoop/mapreduce/hadoop-

mapreduce-client-common-

2.7.4.jar:/usr/local/hadoop/share/hadoop/common/lib/commons

-cli-

1.2.jar:/usr/local/hadoop/share/hadoop/mapreduce/hadoop-

mapreduce-client-core-2.7.4.jar" WCount*java

La compilation a généré trois fichiers .class: un pour chacune de nos classes (driver, map

et reduce).

Page 3: TP1 Big Data - MapReduce

3 ENIS – GI 3 – 2017/2018 Mme. Amal ABID

3. On va désormais packager le programme d'exemple au sein d'un fichier .jar. Créer

l'arborescence liée au nom du package avec la commande :

$ mkdir -p enis/hadoop/wordcount

Et déplacer, par la suite, les fichiers compilés au sein de cette arborescence :

$ mv *.class enis/hadoop/wordcount

4. Générer le .jar :

$ jar -cvf enis_wcount.jar -C . enis

5. En préparation de l'exécution de notre programme Hadoop, nous allons maintenant

déplacer le texte du poème sur HDFS. Exécuter la commande :

$ hadoop fs -put poeme.txt /

et vérifier sa présence avec la commande :

$ hadoop fs -ls /

6. Enfin, exécuter notre programme Hadoop avec la commande :

$ hadoop jar enis_wcount.jar enis.hadoop.wordcount.WCount /poeme.txt /results

La commande devrait prendre tout au plus quelques secondes à s'exécuter.

Si tout s'est passé correctement, un message « mapreduce.Job: map 100% reduce

100% » devrait s'afficher.

7. Vérifier la présence des fichiers de résultats dans le répertoire /results avec la commande :

$ hadoop fs -ls /results

(un fichier _SUCCESS devrait être présent, ainsi qu'un fichier part-r-00000).

8. Enfin, afficher les résultats finaux avec la commande :

$ hadoop fs -cat /results/part-r-00000

Page 4: TP1 Big Data - MapReduce

4 ENIS – GI 3 – 2017/2018 Mme. Amal ABID

Le mot « qui » devrait être le plus présent au sein de la poème (25 occurrences).

Consultez la figure 1 ci-dessous.

Figure 1. Résultat

Page 5: TP1 Big Data - MapReduce

5 ENIS – GI 3 – 2017/2018 Mme. Amal ABID

B. Manipulation sur la VM Cloudera

Cloudera propose une solution clé en main – gratuite – permettant de bénéficier d’une

configuration Hadoop fonctionnelle sous une nouvelle machine virtuelle invitée de VirtualBox

(ou autre, ex. VMWare). Dans le cadre de ce TP, nous utiliserons la distribution cloudera basée

sur le système d’exploitation CentOs (une machine virtuelle « All-in-One ») et comprenant un

cluster Hadoop simple noeud. Dans cette VM plusieurs composantes ont été pré-installé (Spark,

Hive, Zeppelin, etc.)

Installer VirtualBox (https://www.virtualbox.org/) si ce n’est pas déjà fait.

Importer la machine virtuelle cloudera-BigData.ova du TP.

Démarrer la machine virtuelle.

Depuis le terminal. Exécuter la commande suivante pour transformer le clavier en azerty

$ setxkbmap fr

Vérifier le bon fonctionnement de Hadoop en exécutant la commande:

$ hdfs dfsadmin -report

La commande vérifie le statut de HDFS. Elle devrait afficher:

Live datanodes (1) :

Vérifier la version d’Hadoop en exécutant la commande:

$ hadoop version

A partir d’un navigateur web, le lien suivant http://localhost:50070/ vous permettra

d’accéder à l’interface Web du noeud maître (NameNode)

Nous allons maintenant compiler le code d'exemple Java du cours (compteur d’occurrence

de mots).

Objectif: vérifier que l'environnement de compilation soit fonctionnel et que Hadoop soit

correctement à même d'exécuter des tâches, et se familiariser avec le processus de

compilation.

Page 6: TP1 Big Data - MapReduce

6 ENIS – GI 3 – 2017/2018 Mme. Amal ABID

Télécharger l’archive du projet maven WordCount.zip (lien: https://goo.gl/Ff6csj) :

Cette archive contient :

o Le poème ayant servi d'exemple en cours dans le dossier data.

o Le code d'exemple du cours (classes driver, map et reduce).

Décompresser l'archive

On va désormais packager le programme d'exemple au sein d'un fichier .jar. Créer

l'arborescence liée au nom du package avec la commande:

(Attention : cette commande ne pourra fonctionner que si vous la lancez depuis le même

dossier contenant le fichier pom.xml: $ cd WordCount/WordCount )

$ mvn clean package

En préparation de l'exécution du programme Hadoop, nous allons en premier temps créer

dans le disque HDFS un dossier pour ce TP. Vous allez travailler dans la suite du TP dans

un dossier nom.de.votre.dossier (à fixer) sur la racine du disque HDFS (Attention : le

dossier nom.de.votre.dossier n’existe pas). On va créer dedans un dossier wordcount en

exécutant la commande suivante :

$ hadoop fs -mkdir -p /nom.de.votre.dossier/wordcount

Maintenant il faut déplacer le texte du poème du dossier data sur le disque HDFS dans le

dossier créé. Exécuter la commande :

$ hadoop fs -put data/poeme.txt /nom.de.votre.dossier/wordcount

et vérifier sa présence avec la commande :

$ hadoop fs -ls /nom.de.votre.dossier/wordcount

ou directement via l’interface Web (Hue - Hadoop User Experience)

http://quickstart.cloudera:8888/filebrowser/view/user/cloudera#/

Enfin, exécuter votre programme Hadoop avec la commande ci-dessous sur la même

ligne : (Attention : le jar créé est dans le dossier target: $ cd target)

$ hadoop jar WordCount-1.0-SNAPSHOT.jar WCount

/nom.de.votre.dossier/wordcount/poeme.txt

/nom.de.votre.dossier/resultat_wordcount

Page 7: TP1 Big Data - MapReduce

7 ENIS – GI 3 – 2017/2018 Mme. Amal ABID

La commande devrait prendre tout au plus quelques secondes à s'exécuter.

Si tout s'est passé correctement, un message «mapreduce.Job: map 100% reduce

100%» devrait s'afficher.

Vérifier la présence des fichiers de résultats dans le répertoire /resultat_wordcount avec

la commande:

$ hadoop fs -ls /nom.de.votre.dossier/resultat_wordcount

ou directement via Hue

(un fichier _SUCCESS devrait être présent, ainsi qu'un fichier part-r-00000).

Enfin, afficher les résultats finaux avec la commande:

$ hadoop fs -cat /nom.de.votre.dossier/resultat_wordcount/part-r-00000

ou directement via Hue

Le mot « qui » devrait être le plus présent au sein du poème avec 25 occurrence

(Fig2).

Figure 2. Résultat