SlideShare une entreprise Scribd logo
2
Plus lue
5
Plus lue
6
Plus lue
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 (20)

PDF
BigData_Chp5: Putting it all together
Lilia Sfaxi
 
PDF
Cours Big Data Chap4 - Spark
Amal Abid
 
PDF
Cours Big Data Chap3
Amal Abid
 
PDF
Chapitre 2 hadoop
Mouna Torjmen
 
PDF
Les BD NoSQL
Minyar Sassi Hidri
 
PDF
Cours Big Data Chap1
Amal Abid
 
PDF
Big Data, Hadoop & Spark
Alexia Audevart
 
PDF
Hadoop Hbase - Introduction
Blandine Larbret
 
PDF
Chapitre1 introduction
Mouna Torjmen
 
PDF
TP1 Big Data - MapReduce
Amal Abid
 
PDF
Technologies pour le Big Data
Minyar Sassi Hidri
 
PDF
BigData_TP5 : Neo4J
Lilia Sfaxi
 
PDF
Cours Big Data Chap5
Amal Abid
 
PDF
Une introduction à MapReduce
Modern Data Stack France
 
PDF
Bases de données NoSQL
Samy Dindane
 
PDF
Chapitre i-intro
WaelKhemakhem
 
PPTX
Hive ppt (1)
marwa baich
 
PPTX
Les Base de Données NOSQL
kamar MEDDAH
 
BigData_Chp5: Putting it all together
Lilia Sfaxi
 
Cours Big Data Chap4 - Spark
Amal Abid
 
Cours Big Data Chap3
Amal Abid
 
Chapitre 2 hadoop
Mouna Torjmen
 
Les BD NoSQL
Minyar Sassi Hidri
 
Cours Big Data Chap1
Amal Abid
 
Big Data, Hadoop & Spark
Alexia Audevart
 
Hadoop Hbase - Introduction
Blandine Larbret
 
Chapitre1 introduction
Mouna Torjmen
 
TP1 Big Data - MapReduce
Amal Abid
 
Technologies pour le Big Data
Minyar Sassi Hidri
 
BigData_TP5 : Neo4J
Lilia Sfaxi
 
Cours Big Data Chap5
Amal Abid
 
Une introduction à MapReduce
Modern Data Stack France
 
Bases de données NoSQL
Samy Dindane
 
Chapitre i-intro
WaelKhemakhem
 
Hive ppt (1)
marwa baich
 
Les Base de Données NOSQL
kamar MEDDAH
 

En vedette (12)

PDF
Thinking Big - Big data: principes et architecture
Lilia Sfaxi
 
PDF
Thinking BIG
Lilia Sfaxi
 
PDF
Business Intelligence
Lilia Sfaxi
 
PDF
Javascript Design Patterns
Lilia Sfaxi
 
PDF
Core JavaScript
Lilia Sfaxi
 
PDF
Introduction au Web
Lilia Sfaxi
 
PDF
Client-side JavaScript
Lilia Sfaxi
 
PDF
Testing Angular
Lilia Sfaxi
 
PDF
Angular
Lilia Sfaxi
 
PDF
Mobile developement
Lilia Sfaxi
 
PDF
Server-side JS with NodeJS
Lilia Sfaxi
 
PPSX
Thinking big
Lilia Sfaxi
 
Thinking Big - Big data: principes et architecture
Lilia Sfaxi
 
Thinking BIG
Lilia Sfaxi
 
Business Intelligence
Lilia Sfaxi
 
Javascript Design Patterns
Lilia Sfaxi
 
Core JavaScript
Lilia Sfaxi
 
Introduction au Web
Lilia Sfaxi
 
Client-side JavaScript
Lilia Sfaxi
 
Testing Angular
Lilia Sfaxi
 
Angular
Lilia Sfaxi
 
Mobile developement
Lilia Sfaxi
 
Server-side JS with NodeJS
Lilia Sfaxi
 
Thinking big
Lilia Sfaxi
 
Publicité

Similaire à BigData_TP2: Design Patterns dans Hadoop (6)

PPTX
Chapitre2_Hadoop_MapReduce----------------.pptx
Nidhalgharbi3
 
PPTX
Introduction aux algorithmes map reduce
Mathieu Dumoulin
 
PPTX
MapReduce: Traitement de données distribué à grande échelle simplifié
Mathieu Dumoulin
 
PPTX
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Microsoft
 
PDF
chp
DOUA9
 
PDF
Cours design pattern m youssfi partie 4 composite
ENSET, Université Hassan II Casablanca
 
Chapitre2_Hadoop_MapReduce----------------.pptx
Nidhalgharbi3
 
Introduction aux algorithmes map reduce
Mathieu Dumoulin
 
MapReduce: Traitement de données distribué à grande échelle simplifié
Mathieu Dumoulin
 
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Microsoft
 
chp
DOUA9
 
Cours design pattern m youssfi partie 4 composite
ENSET, Université Hassan II Casablanca
 
Publicité

Plus de Lilia Sfaxi (20)

PDF
chp1-Intro à l'urbanisation des SI.pdf
Lilia Sfaxi
 
PDF
Plan d'études_INSAT_2022_2023.pdf
Lilia Sfaxi
 
PDF
Lab3-DB_Neo4j
Lilia Sfaxi
 
PDF
Lab2-DB-Mongodb
Lilia Sfaxi
 
PDF
Lab1-DB-Cassandra
Lilia Sfaxi
 
PDF
TP2-UML-Correction
Lilia Sfaxi
 
PDF
TP1-UML-Correction
Lilia Sfaxi
 
PDF
TP0-UML-Correction
Lilia Sfaxi
 
PDF
TD4-UML
Lilia Sfaxi
 
PDF
TD4-UML-Correction
Lilia Sfaxi
 
PDF
TD3-UML-Séquences
Lilia Sfaxi
 
PDF
TD3-UML-Correction
Lilia Sfaxi
 
PDF
TD2 - UML - Correction
Lilia Sfaxi
 
PDF
TD1 - UML - DCU
Lilia Sfaxi
 
PDF
TD1-UML-correction
Lilia Sfaxi
 
PDF
Android - Tp1 - installation et démarrage
Lilia Sfaxi
 
PDF
Android - Tp2 - Elements graphiques
Lilia Sfaxi
 
PDF
Android - Tp3 - intents
Lilia Sfaxi
 
PDF
Android - TPBonus - web services
Lilia Sfaxi
 
PDF
Android - Tp4 - graphiques avancés
Lilia Sfaxi
 
chp1-Intro à l'urbanisation des SI.pdf
Lilia Sfaxi
 
Plan d'études_INSAT_2022_2023.pdf
Lilia Sfaxi
 
Lab3-DB_Neo4j
Lilia Sfaxi
 
Lab2-DB-Mongodb
Lilia Sfaxi
 
Lab1-DB-Cassandra
Lilia Sfaxi
 
TP2-UML-Correction
Lilia Sfaxi
 
TP1-UML-Correction
Lilia Sfaxi
 
TP0-UML-Correction
Lilia Sfaxi
 
TD4-UML
Lilia Sfaxi
 
TD4-UML-Correction
Lilia Sfaxi
 
TD3-UML-Séquences
Lilia Sfaxi
 
TD3-UML-Correction
Lilia Sfaxi
 
TD2 - UML - Correction
Lilia Sfaxi
 
TD1 - UML - DCU
Lilia Sfaxi
 
TD1-UML-correction
Lilia Sfaxi
 
Android - Tp1 - installation et démarrage
Lilia Sfaxi
 
Android - Tp2 - Elements graphiques
Lilia Sfaxi
 
Android - Tp3 - intents
Lilia Sfaxi
 
Android - TPBonus - web services
Lilia Sfaxi
 
Android - Tp4 - graphiques avancés
Lilia Sfaxi
 

Dernier (8)

PDF
Infomaniak - Bilan de gaz à effet de serre 2023
Infomaniak
 
PPTX
Les-Secrets-pour-Reussir-vos-Projets-de-Developpement-Web-et-Mobile.pptx
OsharaInc
 
PDF
Conference-LIA-un-levier-de-transformation-strategique (5).pdf
Romain Bailleul
 
PPTX
Structuration_Support_IT_ISO9001_Augmentee_Agile.pptx
Elalmianas
 
PPTX
826182697-AZ-500T00A-ENU-Powerpoint-02 (1).pptx
wisdomrobertkonudze
 
PDF
COMMUTATION AVANCEE 02 deuxième partie la suite de la première
AhmatAliGeudey
 
PDF
COMMUTATION AVANCEE 01 première partie de commutation avancée
AhmatAliGeudey
 
PDF
How to secure your APIs without compromising the Developer eXperience.pdf
romainquinio1
 
Infomaniak - Bilan de gaz à effet de serre 2023
Infomaniak
 
Les-Secrets-pour-Reussir-vos-Projets-de-Developpement-Web-et-Mobile.pptx
OsharaInc
 
Conference-LIA-un-levier-de-transformation-strategique (5).pdf
Romain Bailleul
 
Structuration_Support_IT_ISO9001_Augmentee_Agile.pptx
Elalmianas
 
826182697-AZ-500T00A-ENU-Powerpoint-02 (1).pptx
wisdomrobertkonudze
 
COMMUTATION AVANCEE 02 deuxième partie la suite de la première
AhmatAliGeudey
 
COMMUTATION AVANCEE 01 première partie de commutation avancée
AhmatAliGeudey
 
How to secure your APIs without compromising the Developer eXperience.pdf
romainquinio1
 

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 ?