Institut National des Sciences Appliquées et de Technologie Tunisie
Big Data
2015-2016
TP2- DESIGN PATTERNS MAP-
REDUCE
Dr...
TP2 : Design Patterns Map-Reduce
Page 2
I. Rappel sur les Design Patterns Map Reduce
Les Patrons de Conception Map Reduce ...
TP2 : Design Patterns Map-Reduce
Page 3
Activité 1. Les données source se trouvent dans le fichier forum_data.tar.gz fourn...
TP2 : Design Patterns Map-Reduce
Page 4
Activité 2.
- Écrire et tester un Mapper permettant d’extraire les différents mots...
TP2 : Design Patterns Map-Reduce
Page 5
Pour faire cela, suivre les étapes suivantes:
- Ouvrir le fichier .bashrc
- Ajoute...
TP2 : Design Patterns Map-Reduce
Page 6
IV. Homework
IV.1Partie 1
On se propose de réaliser une application mettant en oeu...
Prochain SlideShare
Chargement dans…5
×

BigData_TP2: Design Patterns dans Hadoop

3 421 vues

Publié le

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

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

Publié dans : Technologie
1 commentaire
3 j’aime
Statistiques
Remarques
  • Bonjour, serait il possible d'avoir un lien vers correction du Homework ou du TP2 merci
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
Aucun téléchargement
Vues
Nombre de vues
3 421
Sur SlideShare
0
Issues des intégrations
0
Intégrations
1 577
Actions
Partages
0
Téléchargements
295
Commentaires
1
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

BigData_TP2: Design Patterns dans Hadoop

  1. 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. 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. 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. 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. 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. 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 ?

×