Facult´e des Math´ematiques et Informatique D´epartement d’Informatique
Master II Big Data et Syst`emes Multi-´echelles Ann´ee 2021-2022
TD MapReduce
Exercice 1
Que fait ce programme MapReduce?
Op´eration Map: Entr´ee: document d Pour chaque mot dans d faire:
Retourner (taille(mot), 1)
Op´eration Reduce: Entr´ee: (cl´e, [val1,....]) int x = 0;
Pour chaque val dans [val1,....] faire:
x++;
retourner (cl´e, x);
D´erouler sur l’exemple suivant les r´esultats des diff´erentes ´etapes du programme ci-dessus.
Le savoir, c’est le pouvoir.
Savoir pour pr´evoir, afin de pouvoir.
Exercice 2
Que fait ce programme MapReduce?
Op´eration Map: Entr´ee: document d Pour chaque mot dans d faire:
Retourner (tri(mot), mot)
Op´eration Reduce: Entr´ee: (cl´e, [val1,....]) int x = 0;
Pour chaque val dans [val1,....] faire:
x++;
Si x>10 retourner (cl´e, x);
Exercice 3
Une grande chaine de distribution r´ecup`ere aupr`es de ses magasins des fichiers log contenant les informations relatives aux ventes. Le fichier log est compos´e de diff´erents champs sous la forme suivante:
date|temps|magasin |produit|cout |paiement Ecrire en pseudo-code les tˆ´ aches Map et Reduce qui permettent de d´eterminer:
• Le total de ventes par magasin.
• Le montant de la vente la plus ´elev´e pour chaque magasin.
• Le nombre total des ventes et la valeur totale des ventes de tous magasins confondus.
Exercice 4
Une entreprise souhaite r´ealiser des statistiques sur son personnel. Le fichier contient les informations relatives
`
a chaque salari´e (identifiant, age, sexe, adresse, statut, nbrenfants...). ´Ecrire en pseudo-code les tˆaches Map et Reduce qui permettent de d´eterminer:
• Pour chaque age, le salaire minimum, maximum et le nombre de personnes de cet age.
1
Exercice 5
Depuis l’apparition de la pand´emie du Coronavirus, l’Institut Pasteur d’Alg´erie garde trace de tous les ´echantillons re¸cus des diff´erentes wilayas, dans le but d’´etudier la propagation du virus. Une ligne de donn´ees est format´ee de la mani`ere suivante:
id_echantillon, date_prise, wilaya, sexe_malade, age_malade, resultat
Ci-dessous un exemple d’un ´echantillon prit le 25/06/2020 dans la wilaya d’Oran d’un homme ˆag´e de 35 ans.
Le r´esultat est n´egatif.
1652, 25/06/2020, Oran, H, 35, N
1. Que fait ce programme MapReduce?
Op´eration Map: Entr´ee: document d Pour chaque Ligne L dans d faire:
Retourner (L[3], 1)
Op´eration Reduce: Entr´ee: (cl´e, [val1,....]) int x = 0;
Pour chaque val dans [val1,....] faire:
x++;
retourner (cl´e, x);
2. ´Ecrire en pseudo-code le programme MapReduce permettant de calculer le nombre de personnes test´ees positives/n´egatives par sexe.
Le r´esultat attendu est comme suit:
Sur tous les ´echantillons analys´es, il y a eu:
345 femmes test´ees positivement et 546 test´ees n´egativement.
548 hommes test´es positivement et 576 test´es n´egativement.
3. D´erouler sur l’exemple suivant le r´esultat des diff´erentes ´etapes: Map, Shuffle et Reduce de votre pro- gramme.
1652, 25/06/2020, Oran, H, 35, N 1653, 25/06/2020, Alger, F, 85, P 1654, 26/06/2020, Annaba, F, 25, P 1655, 27/06/2020, Oran, H, 64, N 1656, 29/06/2020, Mostaganem, F, 74, P 1656, 29/06/2020, Alger, H, 58, P
Exercice 6
Le super march´e ARVIS souhaite effectuer des statistiques sur l’ensemble des achats de ses clients sur les douze derniers mois. L’entreprise poss`ede plusieurs super-march´es en Alg´erie. A chaque passage de client `a la caisse, une ligne de log est sauvegard´ee dans un fichier. Cette ligne de log est format´ee de la mani`ere suivante :
• Le premier mot indique la date de l’achat au formatJ J M M AAAA
• Le deuxi`eme mot indique l’heure de l’achat au formatHH M M SS
• Le troisi`eme mot indique l’identifiant du caissier qui a prit en charge le client.
• Le reste de la ligne contient les achats. Chaque produit du panier est s´epar´e par le caract`ere +.
• Ecrire en pseudo-code le programme MapReduce permettant de calculer par tranche horaire d’une demi-´ heure (toutes journ´ees confondues) le nombre total de produits achet´es dans la tranche. Le r´esultat attendu est comme suit:
Sur les douze derniers mois, il y a eu:
54000 produits vendus dans la tranche horaire de 9h `a 9h29 87548 produits vendus dans la tranche horaire de 9h30 `a 9h59 ...
• Ecrire en pseudo-code le programme MapReduce permettant de calculer par tranche horaire d’une demi-´ heure (toutes journ´ees confondues) le produit le plus achet´e dans la tranche.
• D´erouler sur l’exemple suivant le r´esultat des diff´erentes ´etapes: Map, Shuffle et Reduce pour les deux programmes.
02_11_2019 12_32_10 132227 pain+lait+chocolat
02_11_2019 12_45_25 132234 huile+sel+pain+yaourt+lait 03_11_2019 12_15_15 132154 fromage+lait+eau
03_11_2019 12_58_10 132227 lait+caf´e+chips+salade 03_11_2019 15_12_10 132227 couscous+farine+levure
Indication: Il est autoris´e d’utiliser dans votre pseudo-code des fonctions pr´e-d´efinies comme par exemple:
extraire jour(date), extraire heure(horaire)... `a condition qu’elles soient compr´ehensibles `a partir de leur nom.
Exercice 7
Soit le fichierTwitter contenant un jeu de donn´ees repr´esentant le graphe (orient´e) des relations de suivi entre plusieurs milliers d’utilisateurs de Twitter. Chaque ligne du fichier repr´esente un utilisateur et son follower.
• Ecrire en pseudo-code le programme MapReduce permettant de retourner les utilisateurs qui `´ a la fois
”suivent” et ”sont suivis”.
• D´erouler sur l’exemple suivant le r´esultat des diff´erentes ´etapes: Map, Shuffle et Reduce.
Exemple: Supposons le fichier d’entr´ee Twitter contenant:
A B A C B C C D
Exercice 8
Soient les deux relations suivantes: R(A,B) et S(X,Y). ´Ecrire en pseudo-code les op´erations Map et Reduce impl´ementant les requˆetes suivantes:
• SELECT * FROM R WHERE A<1;
• SELECT DISTINCT A , B FROM R;
• (SELECT * FROM R) INTERSECT ( SELECT X as A , Y as B FROM S);
• (SELECT * FROM R) UNION ( SELECT X as A , Y as B FROM S);
• SELECT A , count(*) FROM R GROUP BY A;
• SELECT R.A , R.B , S.Y FROM R INNER JOIN S on R.A = S.X;
Exercice 9
Le termek-merd´esigne g´en´eralement toutes les sous-chaˆınes possibles de longueur k contenues dans une chaˆıne.
En g´enomique informatique, les k-mers d´esignent toutes les sous-s´equences possibles (de longueur k) `a partir d’une lecture obtenue par s´equen¸cage d’ADN.
Soit un fichier contenant un ensemble de s´equen¸cage d’ADN o`u chaque ligne est caract´eris´ee par une suite de lettres (sans espace). Nous souhaitons calculer le nombre de fois qu’apparait une suite de trois lettres. (nombre de sous-s´equences de longueur 3).
Exemple: Supposons le fichier d’entr´ee F contenant: ACACACAGT Le r´esultat retourn´e est: (ACA,3) (CAC,2) (CAG,1) (AGT,1)
• D´eterminer la cl´e et d´efinir l’op´eration Map g´en´erant le couple (cl´e,valeur).
• D´efinir l’op´eration Reduce.
Exercice 10
Le PageRank est un algorithme utilis´e par les moteurs de recherche pour la pond´eration et le classement des pages web. Il utilise pour ses calculs la multiplication d’une matrice par un vecteur. Cette op´eration doit ˆetre adapt´ee `a l’environnement Big Data.
Rappel: Soit une matriceAde taillem×net un vecteurV de taillen, le produitA×V est calcul´e comme suit:
A=
a11 a12 · · · a1n
a21 a22 · · · a2n
... ... . .. ... am1 am2 · · · amn
V =
v1 v2
... vn
A×V =
a11×v1+a12×v2+· · ·+a1n×vn a21×v1+a22×v2+· · ·+a2n×vn
...
am1×v1+am2×v2+· · ·+amn×vn
Nous supposons que le vecteurV est pr´esent sur tous les noeuds (il n’est pas n´ecessaire de partitionnerV).
Ecrire en pseudo-code les tˆ´ achesMap et Reduce permettant la multiplication d’une matrice par un vecteur en suivant les ´etapes ci-dessous:
1. Les matrices sont souvent creuses (beaucoup de 0) dans ce type de probl`eme. Comment doit-on repr´esenter les donn´ees en entr´ees (Matrice A) pour optimiser le traitement?
2. D´eterminer la cl´e et d´efinir l’op´eration Map g´en´erant le couple (cl´e,valeur).
3. D´efinir l’op´eration Reduce.
Indication: Les indices des lignes et des colonnes vont vous ˆetes utiles.
Exercice 11
Soit le fichier Comp´etition Boxe contenant les r´esultats des diff´erents combats d’une comp´etition de boxe.
Chaque ligne repr´esente: (1) un boxeur (premier ´el´ement de la ligne) et (2) la liste des boxeurs qu’il a battu (les autres ´el´ements de la ligne). Par exemple, la ligne A,C,D exprime que le le boxeur A a battu les boxeurs C et D.
• Ecrire en pseudo-code le programme MapReduce permettant de retourner les boxeurs qui n’ont jamais´
Nous souhaitons ´etudier les variations de temp´erature dans une maison. Pour cela, chaque pi`ece est munie d’un ou plusieurs capteurs pour mesurer la temp´erature. Ces capteurs retournent `a des intervalles r´eguliers (toutes les 5 minutes) la temp´erature de la pi`ece. Les informations retourn´ees sont structur´ees comme suit:
id capteur|piece|horodatage|temperature
Ecrire en pseudo-code un programme MapReduce qui:
1. Retourne le nombre de fois qu’un mˆeme capteur a enregistr´e de fortes temp´eratures (>40°).
2. Retourne pour chaque pi`ece le jour et l’heure o`u a ´et´e enreg- istr´e la temp´erature minimale.
Ci-dessous un ´echantillon des donn´ees re- tourn´ees:
cap1|cuisine|20210304 10:30|28 cap1|cuisine|20210304 10:35|28.5 cap2|cuisine|20210304 10:40|27.2 cap3|sdb|20210304 11:45|20.8 cap3|sdb|20210304 11:50|20.1