Vous êtes sur la page 1sur 2

Hadoop: MapReduce

Exercice 1 : Graphe Social


On suppose qu'on administre un réseau social comportant des millions d'utilisateurs. Pour
chaque utilisateur, on a dans notre base de données la liste des utilisateurs qui sont ses amis
sur le réseau (via une requête SQL). On souhaite afficher quand un utilisateur va sur la page
d'un autre utilisateur une indication « Vous avez N amis en commun ». On ne peut pas se
permettre d'effectuer une série de requêtes SQL à chaque fois que la page est accédé (trop
lourd en traitement). On va donc développer des programmes MAP et REDUCE pour cette
opération et exécuter le traitement toutes les nuits sur notre base de données, en stockant le
résultat dans une nouvelle table.

Pour simplifier et pour se focaliser sur les opérations Hadoop, nous supposons que nos
données sont sous la forme d'un graphe d'adjacence stocké dans un fichier où chaque ligne
renseigne les amis d'une personne. Une ligne commence ainsi par le l’utilisateur suivi par ses
amis.
A => B, C, D
B => A, C, D, E
C => A, B, D, E
D => A, B, C, E
E => B, C, D

1. Donner un schéma illustratif (avec les différentes phases) du traitement


MapReduce
2. Proposer un pseudo code pour le Mapper
3. Proposer un pseudo code pour le Reducer

Exercice 2 : Sentiment client/twitter


Une entreprise dispose d'un compte twitter pour son service après vente, recevant plusieurs
dizaines de milliers de tweets par jour. Elle cherche à déterminer le taux de satisfaction de ses
clients à partir du compte twitter.
Chaque heure, les tweets reçus sont exportés au sein d'un fichier texte. Données d'entrée :

4. Expliquer brièvement le traitement du Mapper et du Reducer


5. Proposer un pseudo code pour le Mapper
6. Proposer un pseudo code pour le Reducer

Exercice 3 : Bank data


Proposer un schéma MapReduce (avec un pseudo-code des Mappers et Reducers)
qui à partir du fichier bank-data.csv calcule des statistiques de base par rapport aux
âges des personnes incluses (e.g., pour chaque âge le salaire minimum, maximum,
moyen, l'écart type, le nombre de personnes de cet âge).

1/2
Ci-après la structure du fichier bank-data.csv :

id,age,sex,region,income,married,children,car,save_act,current_act,mortgage,pep
ID12101,48,FEMALE,INNER_CITY,17546.0,NO,1,NO,NO,NO,NO,YES
ID12102,40,MALE,TOWN,30085.1,YES,3,YES,NO,YES,YES,NO
ID12103,51,FEMALE,INNER_CITY,16575.4,YES,0,YES,YES,YES,NO,NO
ID12104,23,FEMALE,TOWN,20375.4,YES,3,NO,NO,YES,NO,NO
ID12105,57,FEMALE,RURAL,50576.3,YES,0,NO,YES,NO,NO,NO
ID12106,57,FEMALE,TOWN,37869.6,YES,2,NO,YES,YES,NO,YES
ID12107,22,MALE,RURAL,8877.07,NO,0,NO,NO,YES,NO,YES
ID12108,58,MALE,TOWN,24946.6,YES,0,YES,YES,YES,NO,NO

1. Donner un schéma illustratif (avec les différentes phases) du traitement


MapReduce.
2. Donner le Pseudo code Mapper.
3. Donner le Pseudo code Reducer.

2/2