SlideShare une entreprise Scribd logo
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.
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/
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:
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…)

Recommandé pour vous

Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3

Utilisation de Hadoop - Manipulation de HDFS - Développement d’une application MapReduce Cours Big Data - Chap3 - GI3 - ENIS

big datahadoopmapreduce
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J

Utilisation de la base Neo4J

nosqlneo4jgraph database
Rapport de stage: mastère ISIC (Business Intelligence)
Rapport de stage: mastère ISIC (Business Intelligence)Rapport de stage: mastère ISIC (Business Intelligence)
Rapport de stage: mastère ISIC (Business Intelligence)

rapport de mémoire (projet fin d'études)

#bi#analyse data#power bi
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
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
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 ?
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?

Recommandé pour vous

BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together

VISION GLOBALE SUR LES NOTIONS DE BIG DATA, BI ET NOSQL

nosqlbig databi
PFE BI - INPT
PFE BI - INPTPFE BI - INPT
PFE BI - INPT
openerpbitalend
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)

Big Data , HIVE

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

Contenu connexe

Tendances

BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
Lilia Sfaxi
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
Alexia Audevart
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
Lilia Sfaxi
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
Amal Abid
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
Lilia Sfaxi
 
Rapport de stage: mastère ISIC (Business Intelligence)
Rapport de stage: mastère ISIC (Business Intelligence)Rapport de stage: mastère ISIC (Business Intelligence)
Rapport de stage: mastère ISIC (Business Intelligence)
Ines Ben Kahla
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
Lilia Sfaxi
 
PFE BI - INPT
PFE BI - INPTPFE BI - INPT
PFE BI - INPT
riyadadva
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
marwa baich
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
Minyar Sassi Hidri
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Hatim CHAHDI
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
Yosra ADDALI
 
présentation soutenance PFE.ppt
présentation soutenance PFE.pptprésentation soutenance PFE.ppt
présentation soutenance PFE.ppt
Mohamed Ben Bouzid
 
Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
Mouna Torjmen
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
Amal Abid
 
Projet BI - 2 - Conception base de données
Projet BI - 2 - Conception base de donnéesProjet BI - 2 - Conception base de données
Projet BI - 2 - Conception base de données
Jean-Marc Dupont
 
Rapport de projet de fin d'année
Rapport de projet de fin d'année Rapport de projet de fin d'année
Rapport de projet de fin d'année
kaies Labiedh
 
Chapitre1 introduction
Chapitre1 introductionChapitre1 introduction
Chapitre1 introduction
Mouna Torjmen
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation Multidimensionnelle
Lilia Sfaxi
 

Tendances (20)

BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
Rapport de stage: mastère ISIC (Business Intelligence)
Rapport de stage: mastère ISIC (Business Intelligence)Rapport de stage: mastère ISIC (Business Intelligence)
Rapport de stage: mastère ISIC (Business Intelligence)
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
PFE BI - INPT
PFE BI - INPTPFE BI - INPT
PFE BI - INPT
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
 
Rapport pfe isi_Big data Analytique
Rapport pfe isi_Big data AnalytiqueRapport pfe isi_Big data Analytique
Rapport pfe isi_Big data Analytique
 
présentation soutenance PFE.ppt
présentation soutenance PFE.pptprésentation soutenance PFE.ppt
présentation soutenance PFE.ppt
 
Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Projet BI - 2 - Conception base de données
Projet BI - 2 - Conception base de donnéesProjet BI - 2 - Conception base de données
Projet BI - 2 - Conception base de données
 
Rapport de projet de fin d'année
Rapport de projet de fin d'année Rapport de projet de fin d'année
Rapport de projet de fin d'année
 
Chapitre1 introduction
Chapitre1 introductionChapitre1 introduction
Chapitre1 introduction
 
Chp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation MultidimensionnelleChp3 - Modélisation Multidimensionnelle
Chp3 - Modélisation Multidimensionnelle
 
Hadoop
HadoopHadoop
Hadoop
 

En vedette

Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture
Lilia Sfaxi
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
Lilia Sfaxi
 
Thinking BIG
Thinking BIGThinking BIG
Thinking BIG
Lilia Sfaxi
 
Angular
AngularAngular
Angular
Lilia Sfaxi
 
Introduction au Web
Introduction au WebIntroduction au Web
Introduction au Web
Lilia Sfaxi
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
Lilia Sfaxi
 
Core JavaScript
Core JavaScriptCore JavaScript
Core JavaScript
Lilia Sfaxi
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
Lilia Sfaxi
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
Lilia Sfaxi
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
Lilia Sfaxi
 
Mobile developement
Mobile developementMobile developement
Mobile developement
Lilia Sfaxi
 
Introduction à HDFS
Introduction à HDFSIntroduction à HDFS
Introduction à HDFS
Modern Data Stack France
 
Thinking big
Thinking bigThinking big
Thinking big
Lilia Sfaxi
 

En vedette (13)

Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
 
Thinking BIG
Thinking BIGThinking BIG
Thinking BIG
 
Angular
AngularAngular
Angular
 
Introduction au Web
Introduction au WebIntroduction au Web
Introduction au Web
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
 
Core JavaScript
Core JavaScriptCore JavaScript
Core JavaScript
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
 
Mobile developement
Mobile developementMobile developement
Mobile developement
 
Introduction à HDFS
Introduction à HDFSIntroduction à HDFS
Introduction à HDFS
 
Thinking big
Thinking bigThinking big
Thinking big
 

Similaire à BigData_TP1: Initiation à Hadoop et Map-Reduce

Hadoop MapReduce.docx
Hadoop  MapReduce.docxHadoop  MapReduce.docx
Hadoop MapReduce.docx
IssamHamdi
 
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Hamza Ben Marzouk
 
chp
chpchp
chp
DOUA9
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
gplanchat
 
MUG Nantes - MongoDB et son connecteur pour hadoop
MUG Nantes - MongoDB et son connecteur pour hadoopMUG Nantes - MongoDB et son connecteur pour hadoop
MUG Nantes - MongoDB et son connecteur pour hadoop
Bruno Bonnin
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et Pinba
Patrick Allaert
 
ch2-hadoop-L3-2023-4p (1).pdf
ch2-hadoop-L3-2023-4p (1).pdfch2-hadoop-L3-2023-4p (1).pdf
ch2-hadoop-L3-2023-4p (1).pdf
salmanakbi
 
PerfUG - Hadoop Performances
PerfUG - Hadoop PerformancesPerfUG - Hadoop Performances
PerfUG - Hadoop Performances
Sofian Djamaa
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big Data
Arrow Group
 
Tech day hadoop, Spark
Tech day hadoop, SparkTech day hadoop, Spark
Tech day hadoop, Spark
Arrow-Institute
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
PrestaShop
 
Atelier IDS SNORT
Atelier IDS SNORTAtelier IDS SNORT
Atelier IDS SNORT
Natasha Grant
 
Tp1 - OpenERP (1)
Tp1 - OpenERP (1)Tp1 - OpenERP (1)
Tp1 - OpenERP (1)
Lilia Sfaxi
 
TP Fouille de données (Data Mining) et Apprentissage Machine
TP Fouille de données (Data Mining) et Apprentissage MachineTP Fouille de données (Data Mining) et Apprentissage Machine
TP Fouille de données (Data Mining) et Apprentissage Machine
Boubaker KHMILI
 
Rapport openembedded
Rapport openembeddedRapport openembedded
Rapport openembedded
Ayoub Rouzi
 
Afterwork hadoop
Afterwork hadoopAfterwork hadoop
Afterwork hadoop
OCTO Technology Suisse
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
Thomas Bodin
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
Noël Bardelot
 
Spad big data - sfds - 2016
Spad   big data - sfds - 2016Spad   big data - sfds - 2016
Spad big data - sfds - 2016
Julien BLAIZE
 
NetApp PartnersTour 2011 à Lille, mon point de vue
NetApp PartnersTour 2011 à Lille, mon point de vueNetApp PartnersTour 2011 à Lille, mon point de vue
NetApp PartnersTour 2011 à Lille, mon point de vue
Olivier (DaffyDuke) Duquesne
 

Similaire à BigData_TP1: Initiation à Hadoop et Map-Reduce (20)

Hadoop MapReduce.docx
Hadoop  MapReduce.docxHadoop  MapReduce.docx
Hadoop MapReduce.docx
 
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
Présentation Hadoop SECURINETS INSAT (MAP & REDUCE )
 
chp
chpchp
chp
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 
MUG Nantes - MongoDB et son connecteur pour hadoop
MUG Nantes - MongoDB et son connecteur pour hadoopMUG Nantes - MongoDB et son connecteur pour hadoop
MUG Nantes - MongoDB et son connecteur pour hadoop
 
Monitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et PinbaMonitoring d'applications/environnements PHP: APM et Pinba
Monitoring d'applications/environnements PHP: APM et Pinba
 
ch2-hadoop-L3-2023-4p (1).pdf
ch2-hadoop-L3-2023-4p (1).pdfch2-hadoop-L3-2023-4p (1).pdf
ch2-hadoop-L3-2023-4p (1).pdf
 
PerfUG - Hadoop Performances
PerfUG - Hadoop PerformancesPerfUG - Hadoop Performances
PerfUG - Hadoop Performances
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big Data
 
Tech day hadoop, Spark
Tech day hadoop, SparkTech day hadoop, Spark
Tech day hadoop, Spark
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
 
Atelier IDS SNORT
Atelier IDS SNORTAtelier IDS SNORT
Atelier IDS SNORT
 
Tp1 - OpenERP (1)
Tp1 - OpenERP (1)Tp1 - OpenERP (1)
Tp1 - OpenERP (1)
 
TP Fouille de données (Data Mining) et Apprentissage Machine
TP Fouille de données (Data Mining) et Apprentissage MachineTP Fouille de données (Data Mining) et Apprentissage Machine
TP Fouille de données (Data Mining) et Apprentissage Machine
 
Rapport openembedded
Rapport openembeddedRapport openembedded
Rapport openembedded
 
Afterwork hadoop
Afterwork hadoopAfterwork hadoop
Afterwork hadoop
 
Outils front-end
Outils front-endOutils front-end
Outils front-end
 
REX Ansible
REX AnsibleREX Ansible
REX Ansible
 
Spad big data - sfds - 2016
Spad   big data - sfds - 2016Spad   big data - sfds - 2016
Spad big data - sfds - 2016
 
NetApp PartnersTour 2011 à Lille, mon point de vue
NetApp PartnersTour 2011 à Lille, mon point de vueNetApp PartnersTour 2011 à Lille, mon point de vue
NetApp PartnersTour 2011 à Lille, mon point de vue
 

Plus de Lilia Sfaxi

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
Lilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
Lilia Sfaxi
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
Lilia Sfaxi
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
Lilia Sfaxi
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
Lilia Sfaxi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
Lilia Sfaxi
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
Lilia Sfaxi
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
Lilia Sfaxi
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
Lilia Sfaxi
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
Lilia Sfaxi
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
Lilia Sfaxi
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
Lilia Sfaxi
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
Lilia Sfaxi
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
Lilia Sfaxi
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
Lilia Sfaxi
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
Lilia Sfaxi
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
Lilia Sfaxi
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
Lilia Sfaxi
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
Lilia Sfaxi
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
Lilia Sfaxi
 

Plus de Lilia Sfaxi (20)

chp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdfchp1-Intro à l'urbanisation des SI.pdf
chp1-Intro à l'urbanisation des SI.pdf
 
Plan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdfPlan d'études_INSAT_2022_2023.pdf
Plan d'études_INSAT_2022_2023.pdf
 
Lab3-DB_Neo4j
Lab3-DB_Neo4jLab3-DB_Neo4j
Lab3-DB_Neo4j
 
Lab2-DB-Mongodb
Lab2-DB-MongodbLab2-DB-Mongodb
Lab2-DB-Mongodb
 
Lab1-DB-Cassandra
Lab1-DB-CassandraLab1-DB-Cassandra
Lab1-DB-Cassandra
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
TP1-UML-Correction
TP1-UML-CorrectionTP1-UML-Correction
TP1-UML-Correction
 
TP0-UML-Correction
TP0-UML-CorrectionTP0-UML-Correction
TP0-UML-Correction
 
TD4-UML
TD4-UMLTD4-UML
TD4-UML
 
TD4-UML-Correction
TD4-UML-CorrectionTD4-UML-Correction
TD4-UML-Correction
 
TD3-UML-Séquences
TD3-UML-SéquencesTD3-UML-Séquences
TD3-UML-Séquences
 
TD3-UML-Correction
TD3-UML-CorrectionTD3-UML-Correction
TD3-UML-Correction
 
TD2 - UML - Correction
TD2 - UML - CorrectionTD2 - UML - Correction
TD2 - UML - Correction
 
TD1 - UML - DCU
TD1 - UML - DCUTD1 - UML - DCU
TD1 - UML - DCU
 
TD1-UML-correction
TD1-UML-correctionTD1-UML-correction
TD1-UML-correction
 
Android - Tp1 - installation et démarrage
Android - Tp1 -   installation et démarrageAndroid - Tp1 -   installation et démarrage
Android - Tp1 - installation et démarrage
 
Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques Android - Tp2 - Elements graphiques
Android - Tp2 - Elements graphiques
 
Android - Tp3 - intents
Android - Tp3 -  intentsAndroid - Tp3 -  intents
Android - Tp3 - intents
 
Android - TPBonus - web services
Android - TPBonus - web servicesAndroid - TPBonus - web services
Android - TPBonus - web services
 
Android - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancésAndroid - Tp4 - graphiques avancés
Android - Tp4 - graphiques avancés
 

Dernier

Meetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances LiferayMeetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances Liferay
Sébastien Le Marchand
 
procede de fabrication mecanique et industriel
procede de fabrication mecanique et industrielprocede de fabrication mecanique et industriel
procede de fabrication mecanique et industriel
saadbellaari
 
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdfTutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Erol GIRAUDY
 
CLAUDE 3.5 SONNET EXPLICATIONS sur les usages
CLAUDE 3.5 SONNET EXPLICATIONS sur les usagesCLAUDE 3.5 SONNET EXPLICATIONS sur les usages
CLAUDE 3.5 SONNET EXPLICATIONS sur les usages
Erol GIRAUDY
 
Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)
Adrien Blind
 
Rapport de fin de formation/fin d'etudes, technicien specialise
Rapport de fin de formation/fin d'etudes, technicien specialiseRapport de fin de formation/fin d'etudes, technicien specialise
Rapport de fin de formation/fin d'etudes, technicien specialise
GammingWorld2
 
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxCours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Jacques KIZA DIMANDJA
 
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Erol GIRAUDY
 

Dernier (8)

Meetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances LiferayMeetup LFUG : Cahier de vacances Liferay
Meetup LFUG : Cahier de vacances Liferay
 
procede de fabrication mecanique et industriel
procede de fabrication mecanique et industrielprocede de fabrication mecanique et industriel
procede de fabrication mecanique et industriel
 
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdfTutoriel interactif d’ingénierie rapide d’Anthropic.pdf
Tutoriel interactif d’ingénierie rapide d’Anthropic.pdf
 
CLAUDE 3.5 SONNET EXPLICATIONS sur les usages
CLAUDE 3.5 SONNET EXPLICATIONS sur les usagesCLAUDE 3.5 SONNET EXPLICATIONS sur les usages
CLAUDE 3.5 SONNET EXPLICATIONS sur les usages
 
Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)Introduction à Crossplane (Talk Devoxx 2023)
Introduction à Crossplane (Talk Devoxx 2023)
 
Rapport de fin de formation/fin d'etudes, technicien specialise
Rapport de fin de formation/fin d'etudes, technicien specialiseRapport de fin de formation/fin d'etudes, technicien specialise
Rapport de fin de formation/fin d'etudes, technicien specialise
 
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptxCours d'Intelligence Artificielle et Apprentissage Automatique.pptx
Cours d'Intelligence Artificielle et Apprentissage Automatique.pptx
 
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
Vision de Claude 3.5 SONNET Comment utiliser la vision Utilisez les capacités...
 

BigData_TP1: Initiation à Hadoop et Map-Reduce

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