SlideShare une entreprise Scribd logo
Institut National des Sciences Appliquées et de Technologie Tunisie
Big Data
2015-2016
TP2- DESIGN PATTERNS MAP-
REDUCE
Dr. Lilia SFAXI
Objectifs du TP : Encore plus d’exercices sur Map-Reduce, cette fois ci en respectant
les différents patrons de conception.
TP2 : Design Patterns Map-Reduce
Page 2
I. Rappel sur les Design Patterns Map Reduce
Les Patrons de Conception Map Reduce (ou plus communément les Design Patterns) permettent
d’aider l’utilisateur à savoir QUAND utiliser Map-Reduce pour résoudre ses problèmes.
Chacun de ces patrons représente une classe de problèmes récurrents pour ceux qui manipulent
les Big Data. Ce qui est utile, car on peut ainsi appliquer une solution standardisée et unifiée pour
chacune de nos difficultés.
Les Design Patterns les plus utilisés sont:
- Les Patrons de Filtrage
- Les Patrons de Récapitulation
- Les Patrons Structurels
Ce TP est largement inspiré du cours Introduction to Hadoop and MapReduce, réalisé par Cloudera.
II. Patrons de Filtrage : Filtrage Simple
Les Patrons de filtrage permettent de sélectionner certains enregistrements, parmi la totalité des
enregistrements existants dans votre source de données, respectant un critère donné.
Dans cette partie, nous travaillons sur les données d’un forum. Ces données ont la forme suivante:
Id title tagnames author_id body node_type parent_id …
On s’intéresse au 5ème champs, soit le corps du message. Nous désirons dans cet exercice
extraire les posts les plus courts du forum, soit les posts dont le corps contient uniquement une
phrase. Une phrase est un texte qui, soit ne contient aucun signe de ponctuation parmi “ . ! ? ”, soit
seulement l’un d’entre eux comme dernier caractère. Les nouvelles lignes ne sont pas prises en
considération.
TP2 : Design Patterns Map-Reduce
Page 3
Activité 1. Les données source se trouvent dans le fichier forum_data.tar.gz fourni par votre
enseignante.
- Décompresser ce fichier : tar zxvf forum_data.tar.gz
- On s’intéresse au fichier forum_node.tsv. Visualiser les premières lignes de ce fichier pour
voir la structure complète des données.
- Écrire et tester un Mapper permettant d’extraire uniquement les posts d’une phrase ou
moins.
- Écrire et tester un Reducer permettant de compter le nombre de posts.
- Combien y’a-t-il de posts avec une seule phrase ou moins?
III. Patrons de Récapitulation
Ces patrons vous aident à avoir une compréhension globale et de haut niveau de vos données.
III.1 Index
Nous nous proposons pour cet exercice de créer un index pour nos données, c’est à dire un fichier
permettant d’afficher pour chaque mot, dans quels posts du forum est-ce qu’il a été mentionné, et
combien de fois.
TP2 : Design Patterns Map-Reduce
Page 4
Activité 2.
- Écrire et tester un Mapper permettant d’extraire les différents mots d’un post (les mots
sont séparés par des caractères d’espacement, ou par les caractères . ! ? : ; “ ( ) < > [ ] #
$ = - / ), puis de les afficher dans des lignes séparées, avec le node_id dans lequel ils se
trouvent.
- Écrire et tester un Reducer permettant de donner, pour chacun des mots, le nombre
d’occurrences, ainsi que la liste des node_id dans lesquels il apparaît.
- Tester le job Hadoop uniquement sur les 10000 premières lignes du fichier forum_node. (le
job exécuté sur toutes les données prend trop de temps)
o Combien de fois est-ce que le mot difficult apparaît-il?
o Donner la liste des noeuds dans lesquels apparaît le mot difficulty.
III.2 Moyenne
On s’intéresse dans cette partie à calculer la moyenne des ventes chaque jour de la semaine
PS : pour extraire le jour de la semaine d’une date avec Python, utiliser l’instruction suivante:
weekday = datetime.strptime(date,”%Y-%m-%d”).weekday()
Activité 3.
- Écrire et tester un programme MapReduce qui parcourt le fichier purchases.txt pour
extraire la moyenne des ventes pour chaque jour de la semaine.
- Quelle est la valeur moyenne des ventes le Dimanche (Sunday)?
III.3 Combiner
Utiliser un combiner permet de faire des réductions sur le nœud Mapper avant d’envoyer le résultat
au Reducer, ce qui diminue considérablement le trafic sur le réseau, ainsi que le travail du Reducer.
TP2 : Design Patterns Map-Reduce
Page 5
Pour faire cela, suivre les étapes suivantes:
- Ouvrir le fichier .bashrc
- Ajouter un nouveau raccourci de commande run_mapreduce_combiner en copiant la
fonction run_mapreduce que vous avez créé la dernière fois. Modifier cette fonction en
ajoutant juste après “-reducer $2”:
-combiner $2
- A la fin du fichier, ajouter une ligne pour l’alias:
alias hsc=run_mapreduce_combiner
- Sauvegarder le fichier, puis exécuter la commande suivante sur le terminal, pour prendre
en considération les nouvelles modifications:
source ~/.bashrc
- Désormais, pour prendre en considération le combiner, lancer la commande hsc à la place de
hs.
On désire également voir quel est le nombre d’entrées arrivant au Reducer. Pour faire cela, il faut,
après exécution du job MapReduce:
- Ouvrir un navigateur. Vous trouverez des raccourcis prédéfinis dans le navigateur firefox
de votre machine.
- Dans le raccourcis Hadoop, aller à Yarn Resource Manager
- Cliquer sur l’ID du job qui vient de se terminer. Cliquer ensuite sur le lien History
- Dans le menu de gauche, sous l’onglet Job, cliquer sur Counters
- Dans le tableau récapitulatif, regarder la valeur du Reduce input records.
Activité 4.
- Créer un programme MapReduce permettant de calculer la somme des ventes par jour de la
semaine.
- Lancer ce job d’abord sans combiner, puis avec combiner. Retenez à chaque fois:
o La somme des ventes le dimanche
o La valeur du Reduce Input Records.
TP2 : Design Patterns Map-Reduce
Page 6
IV. Homework
IV.1Partie 1
On se propose de réaliser une application mettant en oeuvre le patron de conception structurel.
Pour cela, nous allons réaliser la jointure de deux ensembles de données: les fichiers délimités
forum_nodes et forum_users.
Le fichier forum_nodes contient des informations sur les posts du forum, alors que forum_users
contient des informations sur les utilisateurs. Ils ont une clef en commun (author_id dans le fichier
forum_nodes et user_ptr_id dans forum_users).
Créer un job MapReduce permettant de donner, pour chaque post, les données suivantes:
"id" "title" "tagnames" "author_id" "node_type" "parent_id" "abs_parent_id" "added_at"
"score" "reputation" "gold" "silver" "bronze"
Quelle est la réputation de l’auteur du post dont l’identifiant est 100002517 ?
IV.2 Partie 2
Avancer dans le développement de votre réseau social :
1. Implémenter la partie front-end avec la technologie de votre choix.
2. Chercher, parmi ses fonctionnalités, celles qui nécessitent des traitements respectant les
designs patterns présentés plus haut, mais également le design pattern structurel, dont
vous aurez obligatoirement besoin si vous allez combiner des éléments provenant de
plusieurs tables/sources.
3. Quelles données de votre application seront stockées dans des bases de données NOSQL ?
Pourquoi ? Et quelle catégorie de bases NOSQL vous semble la plus appropriée pour vos
besoins ?

Contenu connexe

Tendances

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
 
Technologies pour le Big Data
Technologies pour le Big DataTechnologies pour le Big Data
Technologies pour le Big Data
Minyar Sassi Hidri
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
Lilia Sfaxi
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
Lilia Sfaxi
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
Amal Abid
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
Lilia Sfaxi
 
Installation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abidInstallation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abid
Amal Abid
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
Lilia Sfaxi
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
marwa baich
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
Lilia Sfaxi
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
Alexia Audevart
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
Amal Abid
 
Les Base de Données NOSQL -Presentation -
Les Base de Données NOSQL -Presentation -Les Base de Données NOSQL -Presentation -
Les Base de Données NOSQL -Presentation -
IliasAEA
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
Lilia Sfaxi
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-business
Vincent de Stoecklin
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
MICHRAFY MUSTAFA
 
Chapitre1 introduction
Chapitre1 introductionChapitre1 introduction
Chapitre1 introduction
Mouna Torjmen
 
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er coursBases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
Hatim CHAHDI
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
Khanh Maudoux
 
Base de données NoSQL
Base de données NoSQLBase de données NoSQL
Base de données NoSQL
Oussama ARBI
 

Tendances (20)

BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Technologies pour le Big Data
Technologies pour le Big DataTechnologies pour le Big Data
Technologies pour le Big Data
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Cours Big Data Chap5
Cours Big Data Chap5Cours Big Data Chap5
Cours Big Data Chap5
 
BigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-ReduceBigData_TP1: Initiation à Hadoop et Map-Reduce
BigData_TP1: Initiation à Hadoop et Map-Reduce
 
Installation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abidInstallation hadoopv2.7.4-amal abid
Installation hadoopv2.7.4-amal abid
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
BigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-ReduceBigData_Chp2: Hadoop & Map-Reduce
BigData_Chp2: Hadoop & Map-Reduce
 
Big Data, Hadoop & Spark
Big Data, Hadoop & SparkBig Data, Hadoop & Spark
Big Data, Hadoop & Spark
 
Cours Big Data Chap3
Cours Big Data Chap3Cours Big Data Chap3
Cours Big Data Chap3
 
Les Base de Données NOSQL -Presentation -
Les Base de Données NOSQL -Presentation -Les Base de Données NOSQL -Presentation -
Les Base de Données NOSQL -Presentation -
 
BigData_Chp3: Data Processing
BigData_Chp3: Data ProcessingBigData_Chp3: Data Processing
BigData_Chp3: Data Processing
 
Big data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-businessBig data - Cours d'introduction l Data-business
Big data - Cours d'introduction l Data-business
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Chapitre1 introduction
Chapitre1 introductionChapitre1 introduction
Chapitre1 introduction
 
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er coursBases de Données non relationnelles, NoSQL (Introduction) 1er cours
Bases de Données non relationnelles, NoSQL (Introduction) 1er cours
 
Hadoop et son écosystème
Hadoop et son écosystèmeHadoop et son écosystème
Hadoop et son écosystème
 
Base de données NoSQL
Base de données NoSQLBase de données NoSQL
Base de données NoSQL
 

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
 
Thinking BIG
Thinking BIGThinking BIG
Thinking BIG
Lilia Sfaxi
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
Lilia Sfaxi
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
Lilia Sfaxi
 
Core JavaScript
Core JavaScriptCore JavaScript
Core JavaScript
Lilia Sfaxi
 
Introduction au Web
Introduction au WebIntroduction au Web
Introduction au Web
Lilia Sfaxi
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
Lilia Sfaxi
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
Lilia Sfaxi
 
Angular
AngularAngular
Angular
Lilia Sfaxi
 
Mobile developement
Mobile developementMobile developement
Mobile developement
Lilia Sfaxi
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
Lilia Sfaxi
 
Thinking big
Thinking bigThinking big
Thinking big
Lilia Sfaxi
 

En vedette (12)

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
 
Thinking BIG
Thinking BIGThinking BIG
Thinking BIG
 
Business Intelligence
Business IntelligenceBusiness Intelligence
Business Intelligence
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
 
Core JavaScript
Core JavaScriptCore JavaScript
Core JavaScript
 
Introduction au Web
Introduction au WebIntroduction au Web
Introduction au Web
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
 
Testing Angular
Testing AngularTesting Angular
Testing Angular
 
Angular
AngularAngular
Angular
 
Mobile developement
Mobile developementMobile developement
Mobile developement
 
Server-side JS with NodeJS
Server-side JS with NodeJSServer-side JS with NodeJS
Server-side JS with NodeJS
 
Thinking big
Thinking bigThinking big
Thinking big
 

Similaire à BigData_TP2: Design Patterns dans Hadoop

Outils front-end
Outils front-endOutils front-end
Outils front-end
Thomas Bodin
 
Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire
Mohammed Zaoui
 
Presentation Map Reduce
Presentation Map ReducePresentation Map Reduce
Presentation Map Reduce
Adelphe Patrick Mveng
 
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
 
Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2
Emeric Tapachès
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
gplanchat
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
Olivier BAZOUD
 
ALT.NET Modéliser Parallèle avec C# 4.0
ALT.NET Modéliser Parallèle avec C# 4.0ALT.NET Modéliser Parallèle avec C# 4.0
ALT.NET Modéliser Parallèle avec C# 4.0
Bruno Boucard
 
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
 
Spideo: Movie Recommendation Analytics with Cassandra (Français)
Spideo: Movie Recommendation Analytics with Cassandra (Français)Spideo: Movie Recommendation Analytics with Cassandra (Français)
Spideo: Movie Recommendation Analytics with Cassandra (Français)
DataStax Academy
 
Spad big data - sfds - 2016
Spad   big data - sfds - 2016Spad   big data - sfds - 2016
Spad big data - sfds - 2016
Julien BLAIZE
 
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
 
Atelier IDS SNORT
Atelier IDS SNORTAtelier IDS SNORT
Atelier IDS SNORT
Natasha Grant
 
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
Benoit Fillon
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian
Lilia Sfaxi
 
CSI_COURS_diapo_part1...............ppsx
CSI_COURS_diapo_part1...............ppsxCSI_COURS_diapo_part1...............ppsx
CSI_COURS_diapo_part1...............ppsx
FUR7
 
La classification des Emails utilisant le modèle MapReduce
La classification des Emails utilisant le modèle MapReduce La classification des Emails utilisant le modèle MapReduce
La classification des Emails utilisant le modèle MapReduce
Nour El Houda Megherbi
 
MapReduce: Traitement de données distribué à grande échelle simplifié
MapReduce: Traitement de données distribué à grande échelle simplifiéMapReduce: Traitement de données distribué à grande échelle simplifié
MapReduce: Traitement de données distribué à grande échelle simplifié
Mathieu Dumoulin
 

Similaire à BigData_TP2: Design Patterns dans Hadoop (20)

Outils front-end
Outils front-endOutils front-end
Outils front-end
 
Programmation linéniaire
Programmation linéniaire Programmation linéniaire
Programmation linéniaire
 
Presentation Map Reduce
Presentation Map ReducePresentation Map Reduce
Presentation Map Reduce
 
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
 
Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2Algorithmique_et_programmation_part3_V2
Algorithmique_et_programmation_part3_V2
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 
BBL - Monitoring - kyriba
BBL - Monitoring - kyribaBBL - Monitoring - kyriba
BBL - Monitoring - kyriba
 
ALT.NET Modéliser Parallèle avec C# 4.0
ALT.NET Modéliser Parallèle avec C# 4.0ALT.NET Modéliser Parallèle avec C# 4.0
ALT.NET Modéliser Parallèle avec C# 4.0
 
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
 
Spideo: Movie Recommendation Analytics with Cassandra (Français)
Spideo: Movie Recommendation Analytics with Cassandra (Français)Spideo: Movie Recommendation Analytics with Cassandra (Français)
Spideo: Movie Recommendation Analytics with Cassandra (Français)
 
Spad big data - sfds - 2016
Spad   big data - sfds - 2016Spad   big data - sfds - 2016
Spad big data - sfds - 2016
 
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
 
Atelier IDS SNORT
Atelier IDS SNORTAtelier IDS SNORT
Atelier IDS SNORT
 
Xml
XmlXml
Xml
 
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
MasterClass SQL : Comment avoir de bonnes performances avec SQL Server ?
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian
 
CSI_COURS_diapo_part1...............ppsx
CSI_COURS_diapo_part1...............ppsxCSI_COURS_diapo_part1...............ppsx
CSI_COURS_diapo_part1...............ppsx
 
La classification des Emails utilisant le modèle MapReduce
La classification des Emails utilisant le modèle MapReduce La classification des Emails utilisant le modèle MapReduce
La classification des Emails utilisant le modèle MapReduce
 
MapReduce: Traitement de données distribué à grande échelle simplifié
MapReduce: Traitement de données distribué à grande échelle simplifiéMapReduce: Traitement de données distribué à grande échelle simplifié
MapReduce: Traitement de données distribué à grande échelle simplifié
 

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

INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
Faga1939
 
La Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdfLa Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdf
SoniazghalKallel
 
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et ComparatifLes Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Top-plans
 
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Chadi Kammoun
 
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
Nicolas Georgeault
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
InnovaSter-Trade Ltd.
 

Dernier (6)

INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
INTELLIGENCE ARTIFICIELLE + INFORMATIQUE QUANTIQUE = LA PLUS GRANDE RÉVOLUTIO...
 
La Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdfLa Gestion des risques selon ISO 27005.pdf
La Gestion des risques selon ISO 27005.pdf
 
Les Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et ComparatifLes Vidéoprojecteurs : Guide d'achat et Comparatif
Les Vidéoprojecteurs : Guide d'achat et Comparatif
 
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 16 (PFE Licence)
 
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
M365 Community Days MTL 2024 - Découverte du Process Mining et du Task Mining...
 
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
Technologie hydrostatique, innovation pour la stérilisation des aliments : HI...
 

BigData_TP2: Design Patterns dans Hadoop

  • 1. Institut National des Sciences Appliquées et de Technologie Tunisie Big Data 2015-2016 TP2- DESIGN PATTERNS MAP- REDUCE Dr. Lilia SFAXI Objectifs du TP : Encore plus d’exercices sur Map-Reduce, cette fois ci en respectant les différents patrons de conception.
  • 2. TP2 : Design Patterns Map-Reduce Page 2 I. Rappel sur les Design Patterns Map Reduce Les Patrons de Conception Map Reduce (ou plus communément les Design Patterns) permettent d’aider l’utilisateur à savoir QUAND utiliser Map-Reduce pour résoudre ses problèmes. Chacun de ces patrons représente une classe de problèmes récurrents pour ceux qui manipulent les Big Data. Ce qui est utile, car on peut ainsi appliquer une solution standardisée et unifiée pour chacune de nos difficultés. Les Design Patterns les plus utilisés sont: - Les Patrons de Filtrage - Les Patrons de Récapitulation - Les Patrons Structurels Ce TP est largement inspiré du cours Introduction to Hadoop and MapReduce, réalisé par Cloudera. II. Patrons de Filtrage : Filtrage Simple Les Patrons de filtrage permettent de sélectionner certains enregistrements, parmi la totalité des enregistrements existants dans votre source de données, respectant un critère donné. Dans cette partie, nous travaillons sur les données d’un forum. Ces données ont la forme suivante: Id title tagnames author_id body node_type parent_id … On s’intéresse au 5ème champs, soit le corps du message. Nous désirons dans cet exercice extraire les posts les plus courts du forum, soit les posts dont le corps contient uniquement une phrase. Une phrase est un texte qui, soit ne contient aucun signe de ponctuation parmi “ . ! ? ”, soit seulement l’un d’entre eux comme dernier caractère. Les nouvelles lignes ne sont pas prises en considération.
  • 3. TP2 : Design Patterns Map-Reduce Page 3 Activité 1. Les données source se trouvent dans le fichier forum_data.tar.gz fourni par votre enseignante. - Décompresser ce fichier : tar zxvf forum_data.tar.gz - On s’intéresse au fichier forum_node.tsv. Visualiser les premières lignes de ce fichier pour voir la structure complète des données. - Écrire et tester un Mapper permettant d’extraire uniquement les posts d’une phrase ou moins. - Écrire et tester un Reducer permettant de compter le nombre de posts. - Combien y’a-t-il de posts avec une seule phrase ou moins? III. Patrons de Récapitulation Ces patrons vous aident à avoir une compréhension globale et de haut niveau de vos données. III.1 Index Nous nous proposons pour cet exercice de créer un index pour nos données, c’est à dire un fichier permettant d’afficher pour chaque mot, dans quels posts du forum est-ce qu’il a été mentionné, et combien de fois.
  • 4. TP2 : Design Patterns Map-Reduce Page 4 Activité 2. - Écrire et tester un Mapper permettant d’extraire les différents mots d’un post (les mots sont séparés par des caractères d’espacement, ou par les caractères . ! ? : ; “ ( ) < > [ ] # $ = - / ), puis de les afficher dans des lignes séparées, avec le node_id dans lequel ils se trouvent. - Écrire et tester un Reducer permettant de donner, pour chacun des mots, le nombre d’occurrences, ainsi que la liste des node_id dans lesquels il apparaît. - Tester le job Hadoop uniquement sur les 10000 premières lignes du fichier forum_node. (le job exécuté sur toutes les données prend trop de temps) o Combien de fois est-ce que le mot difficult apparaît-il? o Donner la liste des noeuds dans lesquels apparaît le mot difficulty. III.2 Moyenne On s’intéresse dans cette partie à calculer la moyenne des ventes chaque jour de la semaine PS : pour extraire le jour de la semaine d’une date avec Python, utiliser l’instruction suivante: weekday = datetime.strptime(date,”%Y-%m-%d”).weekday() Activité 3. - Écrire et tester un programme MapReduce qui parcourt le fichier purchases.txt pour extraire la moyenne des ventes pour chaque jour de la semaine. - Quelle est la valeur moyenne des ventes le Dimanche (Sunday)? III.3 Combiner Utiliser un combiner permet de faire des réductions sur le nœud Mapper avant d’envoyer le résultat au Reducer, ce qui diminue considérablement le trafic sur le réseau, ainsi que le travail du Reducer.
  • 5. TP2 : Design Patterns Map-Reduce Page 5 Pour faire cela, suivre les étapes suivantes: - Ouvrir le fichier .bashrc - Ajouter un nouveau raccourci de commande run_mapreduce_combiner en copiant la fonction run_mapreduce que vous avez créé la dernière fois. Modifier cette fonction en ajoutant juste après “-reducer $2”: -combiner $2 - A la fin du fichier, ajouter une ligne pour l’alias: alias hsc=run_mapreduce_combiner - Sauvegarder le fichier, puis exécuter la commande suivante sur le terminal, pour prendre en considération les nouvelles modifications: source ~/.bashrc - Désormais, pour prendre en considération le combiner, lancer la commande hsc à la place de hs. On désire également voir quel est le nombre d’entrées arrivant au Reducer. Pour faire cela, il faut, après exécution du job MapReduce: - Ouvrir un navigateur. Vous trouverez des raccourcis prédéfinis dans le navigateur firefox de votre machine. - Dans le raccourcis Hadoop, aller à Yarn Resource Manager - Cliquer sur l’ID du job qui vient de se terminer. Cliquer ensuite sur le lien History - Dans le menu de gauche, sous l’onglet Job, cliquer sur Counters - Dans le tableau récapitulatif, regarder la valeur du Reduce input records. Activité 4. - Créer un programme MapReduce permettant de calculer la somme des ventes par jour de la semaine. - Lancer ce job d’abord sans combiner, puis avec combiner. Retenez à chaque fois: o La somme des ventes le dimanche o La valeur du Reduce Input Records.
  • 6. TP2 : Design Patterns Map-Reduce Page 6 IV. Homework IV.1Partie 1 On se propose de réaliser une application mettant en oeuvre le patron de conception structurel. Pour cela, nous allons réaliser la jointure de deux ensembles de données: les fichiers délimités forum_nodes et forum_users. Le fichier forum_nodes contient des informations sur les posts du forum, alors que forum_users contient des informations sur les utilisateurs. Ils ont une clef en commun (author_id dans le fichier forum_nodes et user_ptr_id dans forum_users). Créer un job MapReduce permettant de donner, pour chaque post, les données suivantes: "id" "title" "tagnames" "author_id" "node_type" "parent_id" "abs_parent_id" "added_at" "score" "reputation" "gold" "silver" "bronze" Quelle est la réputation de l’auteur du post dont l’identifiant est 100002517 ? IV.2 Partie 2 Avancer dans le développement de votre réseau social : 1. Implémenter la partie front-end avec la technologie de votre choix. 2. Chercher, parmi ses fonctionnalités, celles qui nécessitent des traitements respectant les designs patterns présentés plus haut, mais également le design pattern structurel, dont vous aurez obligatoirement besoin si vous allez combiner des éléments provenant de plusieurs tables/sources. 3. Quelles données de votre application seront stockées dans des bases de données NOSQL ? Pourquoi ? Et quelle catégorie de bases NOSQL vous semble la plus appropriée pour vos besoins ?