Institut National des Sciences Appliquées et de Technologie Tunisie
Big Data
2015-2016
TP1- INITIATION A HADOOP ET
MAP-RED...
TP1 : Initiation à Hadoop et Map-Reduce
Page 2
I. Hadoop
I.1 Présentation
Apache Hadoop1
est un framework open-source pour...
TP1 : Initiation à Hadoop et Map-Reduce
Page 3
I.3 Premiers Pas avec Hadoop
Toutes les commandes interagissant avec le sys...
TP1 : Initiation à Hadoop et Map-Reduce
Page 4
Dans le tableau suivant, nous résumons les commandes les plus utilisées dan...
TP1 : Initiation à Hadoop et Map-Reduce
Page 5
Pour notre TP, nous utilisons le langage Python pour développer les Mappers...
TP1 : Initiation à Hadoop et Map-Reduce
Page 6
II.3 Reducer
Le Reducer permet de faire le traitement désiré sur des entrée...
TP1 : Initiation à Hadoop et Map-Reduce
Page 7
II.4 Lancer un Job entier
Lancer un job entier sur Hadoop implique qu’on fe...
TP1 : Initiation à Hadoop et Map-Reduce
Page 8
III. Application
Nous continuons à travailler avec le même fichier en entré...
TP1 : Initiation à Hadoop et Map-Reduce
Page 9
IV. Homework
Partie 1 :
Votre première tâche est de chercher comment tradui...
Prochain SlideShare
Chargement dans…5
×

BigData_TP1: Initiation à Hadoop et Map-Reduce

7 606 vues

Publié le

Pour accéder aux fichiers nécessaires pour faire ce TP, visitez: https://drive.google.com/folderview?id=0Bz7DokLRQvx7M2JWZEt1VHdwSE0&usp=sharing

Pour plus de contenu, Visitez http://liliasfaxi.wix.com/liliasfaxi !

Publié dans : Technologie
1 commentaire
6 j’aime
Statistiques
Remarques
Aucun téléchargement
Vues
Nombre de vues
7 606
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1 965
Actions
Partages
0
Téléchargements
511
Commentaires
1
J’aime
6
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

BigData_TP1: Initiation à Hadoop et Map-Reduce

  1. 1. Institut National des Sciences Appliquées et de Technologie Tunisie Big Data 2015-2016 TP1- INITIATION A HADOOP ET MAP-REDUCE Dr. Lilia SFAXI Objectifs du TP : Création et manipulation d’éléments graphiques de base dans Android, et familiarisation avec la notion d’intent, implicite et explicite.
  2. 2. TP1 : Initiation à Hadoop et Map-Reduce Page 2 I. Hadoop I.1 Présentation Apache Hadoop1 est un framework open-source pour stocker et traiter les données volumineuses sur un cluster. Il est utilisé par un grand nombre de contributeurs et utilisateurs. Il a une licence Apache 2.0. Figure 1 : Hadoop I.2 Installation Ce TP est inspiré de la formation “Intro to Hadoop and Map Reduce” fait par Cloudera2 et publié sur Udacity3 . Ils fournissent une machine virtuelle où Hadoop, ainsi qu’un grand nombre d’outils de son écosystème, sont préinstallés. La machine virtuelle est téléchargée à l’adresse: http://www.cloudera.com/downloads/quickstart_vms/5-5.html C’est une machine Linux, distribution CentOS. Une fois la VM lancée, vous êtes automatiquement identifié comme étant un utilisateur cloudera avec le username cloudera et le mot de passe cloudera. Ce même mot de passe est utilisé pour l’accès root pour avoir les privilèges sudo , l’accès root à MySQL, l’accès à Hue et à Cloudera Manager. Pour les besoins du TP : • Démarrer votre machine virtuelle et lancer un terminal • Créer un répertoire TP, puis deux sous-répertoires code et data dans lesquels on sauvegardera respectivement les codes de nos mappers et reducers, et les données sources et résultat. • Déplacez-vous sous le répertoire ~/TP/data, et y importer le fichier purchases.txt fourni par votre enseignante. 1 Apache Hadoop: hadoop.apache.org 2 Cloudera : Plateforme de BigData https://www.cloudera.com/ 3 Udacity : Plateforme de eLearning https://www.udacity.com/
  3. 3. TP1 : Initiation à Hadoop et Map-Reduce Page 3 I.3 Premiers Pas avec Hadoop Toutes les commandes interagissant avec le système Hadoop commencent par hadoop fs. Ensuite, les options rajoutées sont très largement inspirées des commandes Unix standard. - Créer un répertoire dans HDFS, appelé myinput. Pour cela, taper: hadoop fs –mkdir myinput - Pour copier le fichier purchases.txt dans HDFS sous le répertoire myinput, taper la commande: hadoop fs –put purchases.txt myinput/ - Pour afficher le contenu du répertoire myinput, la commande est: hadoop fs –ls myinput On obtiendra alors le résultat suivant: Pour visualiser les dernières lignes du fichier, taper: hadoop fs –tail purchases.txt On obtient alors:
  4. 4. TP1 : Initiation à Hadoop et Map-Reduce Page 4 Dans le tableau suivant, nous résumons les commandes les plus utilisées dans Hadoop: hadoop fs –ls Afficher le contenu du répertoire racine hadoop fs –put file.txt Upload un fichier dans hadoop (à partir du répertoire courant linux) hadoop fs –get file.txt Download un fichier à partir de hadoop sur votre disque local hadoop fs –tail file.txt Lire les dernières lignes du fichier hadoop fs –cat file.txt Affiche tout le contenu du fichier hadoop fs –mv file.txt newfile.txt Renommer le fichier hadoop fs –rm newfile.txt Supprimer le fichier hadoop fs –mkdir myinput Créer un répertoire hadoop fs –cat file.txt | less Lire le fichier page par page Activité 1. Tester les différentes fonctions citées ci-dessus pour: - Créer un répertoire appelé myinput - Copier le fichier purchases.txt dans le répertoire myinput - Afficher les dernières lignes du fichier II. MapReduce II.1 Présentation MapReduce est un patron d’architecture de développement permettant de traiter les données volumineuses de manière parallèle et distribuée. Il se compose principalement de deux types de programmes: - Les Mappers : permettent d’extraire les données nécessaires sous forme de clef/valeur, pour pouvoir ensuite les trier selon la clef - Les Reducers : prennent un ensemble de données triées selon leur clef, et effectuent le traitement nécessaire sur ces données (somme, moyenne, total…)
  5. 5. TP1 : Initiation à Hadoop et Map-Reduce Page 5 Pour notre TP, nous utilisons le langage Python pour développer les Mappers et les Reducers. Les traitements intermédiaires (comme le tri par exemple) sont effectués automatiquement par Hadoop. II.2 Mapper Soit un code comportant 6 champs, séparés par des tabulations. Le Mapper doit: - Séparer les différents champs par tabulation - Extraire les éléments voulus à partir de ces champs, sous forme de clef/valeur Pour ce premier exercice, notre but est de déterminer le total des ventes par magasin, pour un fichier log dont les champs sont de la forme suivante: date temps magasin produit coût paiement Pour calculer les ventes par magasin, le couple (clef, valeur) à extraire est (magasin,coût). Pour faire cela, le code du Mapper est le suivant : #!/usr/bin/python import sys for line in sys.stdin: data = line.strip().split(“t”) if len(data) == 6: date, time, store, item, cost, payment = data print “{0}t{1}”.format(store,cost) Remarque : Python est un langage qui délimite les différents blocs en utilisant les tabulations, faites alors bien attention à vos indentations! Activité 2. Créer d’abord un fichier mapper.py dans le répertoire code, dans lequel vous écrirez le code présenté plus haut. Étudier ensuite ce que vous venez d’écrire. - Que permet de faire chaque ligne de ce code? - Tester ce mapper en local sur les 50 premières lignes du fichier purchases.txt en tapant l’instruction suivante, directement à partir de votre répertoire code: head -50 ../data/purchases.txt | ./mapper.py
  6. 6. TP1 : Initiation à Hadoop et Map-Reduce Page 6 II.3 Reducer Le Reducer permet de faire le traitement désiré sur des entrées sous forme de clef/valeur, préalablement triées par Hadoop (on n’a pas à s’occuper du tri manuellement). Dans l’exemple précédent, une fois que le Mapper extrait les couples (store,cost), le Reducer aura comme tâche de faire la somme de tous les coûts pour un même magasin. Le code du Reducer est le suivant : #!/usr/bin/python import sys salesTotal = 0 oldKey = None for line in sys.stdin: data = line.strip().split(“t”) if len(data) != 2: continue thisKey, thisSale = data if oldKey and oldKey != thisKey: print “{0}t{1}”.format(oldKey,salesTotal) salesTotal = 0 oldKey = thisKey salesTotal += float (thisSale) if oldKey != None: print oldKey,“t”, salesTotal Activité 3. - Expliquer ce code. - Tester ce Reducer sur le disque local, en utilisant cette instruction. head -50 ../data/purchases.txt |./mapper.py |sort |./reducer.py
  7. 7. TP1 : Initiation à Hadoop et Map-Reduce Page 7 II.4 Lancer un Job entier Lancer un job entier sur Hadoop implique qu’on fera appel au mapper puis au reducer sur une entrée volumineuse, et obtenir à la fin un résultat, directement sur HDFS. Pour faire cela, l’instruction à exécuter est: hadoop jar /usr/lib/hadoop-0.20- mapreduce/contrib/streaming/hadoop-streaming-2.6.0-mr1- cdh5.5.0.jar –mapper mapper.py –reducer reducer.py –file mapper.py –file reducer.py –input myinput –output joboutput Cette instruction donne en paramètres les fichiers correspondant aux Mappers et Reducers, et les répertoires contenant le fichier d’entrée (myinput) et la sortie à générer (joboutput). Le répertoire de sortie, après exécution, contiendra un fichier appelé part-00000, représentant la sortie désirée. Remarque : Le répertoire d’entrée doit contenir un seul fichier. Le répertoire de sortie ne doit pas exister avant l’exécution de l’instruction. Pour faciliter le travail, créer un raccourci pour cette instruction (dans le fichier ~/.bashrc) en tapant les lignes suivantes : mapreduce(){ hadoop jar /usr/lib/hadoop-0.20-mapreduce/contrib/ streaming/hadoop-streaming-2.6.0-mr1-cdh5.5.0.jar -mapper $1 -reducer $2 -file $1 -file $2 -input $3 -output $4 } alias hs=mapreduce Désormais, pour exécuter cette instruction, il suffit de taper: hs mapper.py reducer.py myinput joboutput Activité 4. - Exécuter un job hadoop sur le fichier purchases.txt en utilisant les fichiers mapper.py et reducer.py déjà fournis. Stocker le résultat dans un répertoire joboutput. Sauvegarde ensuite le fichier part-00000 dans votre répertoire local. - Quelle est la totalité des ventes du magasin de Buffalo ?
  8. 8. TP1 : Initiation à Hadoop et Map-Reduce Page 8 III. Application Nous continuons à travailler avec le même fichier en entrées (purchases.txt), mais pour obtenir des résultats différents. Le but est donc d’écrire vos propres Mappers et Reducers. Activité 5. - Donner la liste des ventes par catégorie de produits. - Quelle est la valeur des ventes pour la catégorie Toys? - Et pour la catégorie Consumer Electronics? Activité 6. - Donner le montant de la vente le plus élevé pour chaque magasin - Quelle est cette valeur pour les magasins suivants: o Reno o Toledo o Chandler Activité 7. - Quel est le nombre total des ventes et la valeur totale des ventes de tous magasins confondus?
  9. 9. TP1 : Initiation à Hadoop et Map-Reduce Page 9 IV. Homework Partie 1 : Votre première tâche est de chercher comment traduire le code des exemples Map-Reduce que vous avez développé en classe en Java. Vous trouverez dans la machine virtuelle l’IDE Eclipse préinstallé, ainsi que des exemples à faire tourner, vous pourrez les utiliser comme point de départ. Partie 2 : Vous aurez comme objectif, à la fin de ce semestre, de créer votre propre réseau social, qui tourne autours d’un thème original de votre choix. Comme première étape, votre tâche sera : 1. De définir un nom, un logo et un thème pour votre réseau social 2. De réaliser une maquette (à la main ou bien avec un outil de votre choix) de l’ensemble des pages de votre site

×