www.bluestone.fr55 rue du Faubourg Montmartre – 75009 Paris+33 (0)1 53 25 02 10contact@bluestone.frBS TEMPLATE 20120625BAS...
ContexteQu’est-ce que le Big Data ?HadoopRHadoopLe MapReduce en pratiquePour aller plus loinHollande vs SarkozyBIG DATA - ...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 3 Stage de fin d’étude : Ensai 2012 – Marketing quantitatif ...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 5 « La Big Data est caractérisée par une accumulationcontinue...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 6 Volume : 2011 : 1,8 ZettaOctet[3] au niveau mondial Résea...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 8 Open-source, fondation Apache Exploité par : Microsoft, IB...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 10 RHadoop RevolutionAnalytics (Github) Trois package R, rh...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 11rmr
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 13 Association clef/valeur Dualité Map/Reduce Map = une obs...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 14map=function(k,v){…k’= …v’= …keyval(k’,v’)}reduce = function...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 15 Association clef/valeur Dualité Map/Reduce Map = une obs...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 16 Association clef/valeur Dualité Map/Reduce Map = une obs...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 17mapreduce(input=input,map=function(k,v){k’ = NULLv’ = 1keyva...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 18 Nombre de tweets par utilisateur :Maptweet1tweet2tweet3twe...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 19 Nombre de tweets par utilisateur :Maptweet1tweet2tweet3twe...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 20 Nombre de tweets par utilisateur :RegroupementAutomatiqueM...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 21 Nombre de tweets par utilisateur :RegroupementAutomatiqueM...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 22mapreduce(input = input ,map=function(k,v){k’ = v$user$id_st...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 23 Nombre de tweets moyen par utilisateur :Reduce 1Regroupeme...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 24 Nombre de tweets moyen par utilisateur :Reduce 1Regroupeme...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 25 Nombre de tweets moyen par utilisateur :Reduce 2Reduce 1Re...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 26input2=mapreduce( input = input ,map= function(k,v) {keyval(...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 28 Étude de l’influence sur Twitter Début : 19 mars 2012 (p...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 29{ "_id":{ "$oid": "4f625e47e2a3f33c79000002" },"truncated":f...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 30 F. Hollande : 1er personne Candidat sortant N. Sarkozy ...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 31 F. Hollande : 1er personne Candidat sortant #rennes… N...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 32 F. Hollande : 228 776 N. Sarkozy : 174 967
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 33Nombre deTweetsNombre deRetweetsNombre de tractséquivalentFr...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 35 Structure des retweets Estimation de la matrice « qui a r...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 36 François Hollande : 12eme Nicolas Sarkozy : 14eme Analys...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 37 Structure des retweets Estimation de la matrice « qui a r...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 38RegroupementAutomatiqueMaptweet1tweet2tweet3tweet4tweet5twee...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 39mapreduce(input=input,map=function(k,v){if(is.null(v$retweet...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 40Reduceid_author4 | id_author6<id_Retweeter1, 0.333 | 0.667 >...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 41mapreduce(input=input,map=function(k,v){if(is.null(v$retweet...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 42Matrice creuseclef : id_Retweetervaleur : data.frame :(id_us...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 43tmp=equijoin(left.input=score,right.input=matrice,outer="lef...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 44Autres fonctions R disponibles dans le package rmrmapreduce(...
BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 451. Zouheir Guédri Congrès BigData Paris. (2012)2. Alex Pope...
Big data with r
Big data with r
Big data with r
Big data with r
Big data with r
Big data with r
Upcoming SlideShare
Loading in …5
×

Big data with r

4,846 views

Published on

  • Be the first to comment

Big data with r

  1. 1. www.bluestone.fr55 rue du Faubourg Montmartre – 75009 Paris+33 (0)1 53 25 02 10contact@bluestone.frBS TEMPLATE 20120625BASTIEN RIERA
  2. 2. ContexteQu’est-ce que le Big Data ?HadoopRHadoopLe MapReduce en pratiquePour aller plus loinHollande vs SarkozyBIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 2
  3. 3. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 3 Stage de fin d’étude : Ensai 2012 – Marketing quantitatif et gestion de la relation client Bluestone Consulting – Maître de stage : Julien Damon Monitoring de la campagne présidentielle sur Twitter Étude de l’influence de François Hollande et Nicolas Sarkozy Analyse statistique en environnement Big Data Choix du logiciel R
  4. 4. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 5 « La Big Data est caractérisée par une accumulationcontinue de tous les types de données atteignant une tailleet un niveau de granularité difficile à exploiter »(Zouheir Guédri – Mars 2012)[1] Les quatre V du Big Data (Alex Popescu – Fev 2012)[2] : Volume Variété Vitesse Valeur
  5. 5. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 6 Volume : 2011 : 1,8 ZettaOctet[3] au niveau mondial Réseaux Sociaux : 400 millions de tweets publiés par jour en 2012[4] Variété : Structuré / Non structuré Open Data Réseaux Sociaux Vitesse : Flux d’information Valeur : 5% des données sont compatibles avec l’analyse décisionnelle[3] Open Data API
  6. 6. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 8 Open-source, fondation Apache Exploité par : Microsoft, IBM, Oracle, EMC, … Avantages Stockage et calculs distribués Nombre de nœuds évolutif Fiable face aux défaillances matérielles Inconvénients Pas d’interface utilisateur Aucune méthode d’analyse statistique Hadoop Distributed File System (HDFS) Division par bloc Stockage distribué MapReduce
  7. 7. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 10 RHadoop RevolutionAnalytics (Github) Trois package R, rhbase, rhdfs, rmr MapReduce : rmr Avantages Environnement R[5] Transparent Définition des fonctions Map et Reduce Deux environnements : « local » et « hadoop » Inconvénients Peu de méthodes directement implémentées Gestion des erreurs
  8. 8. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 11rmr
  9. 9. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 13 Association clef/valeur Dualité Map/Reduce Map = une observation Reduce = agrégation
  10. 10. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 14map=function(k,v){…k’= …v’= …keyval(k’,v’)}reduce = function(k’,list_v’){…k’’= …v’’= …keyval(k’’, v’’)}
  11. 11. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 15 Association clef/valeur Dualité Map/Reduce Map = une observation Reduce = agrégation Nombre de tweets :Maptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1>
  12. 12. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 16 Association clef/valeur Dualité Map/Reduce Map = une observation Reduce = agrégation Nombre de tweets :ReduceMaptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,1><NULL,11>
  13. 13. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 17mapreduce(input=input,map=function(k,v){k’ = NULLv’ = 1keyval(k’, v’)},reduce = function(k’,list_v’){k’’ = NULLv’’= sum(unlist(list_v’))keyval(k’’,v’’)})
  14. 14. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 18 Nombre de tweets par utilisateur :Maptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<id1,1><id2,1><id3,1><id1,1><id1,1><id1,1><id2,1><id3,1><id2,1><id1,1><id2,1>
  15. 15. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 19 Nombre de tweets par utilisateur :Maptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<id1,1><id2,1><id3,1><id1,1><id1,1><id1,1><id2,1><id3,1><id2,1><id1,1><id2,1> Map Clef :identifiant utilisateur Valeur : 1
  16. 16. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 20 Nombre de tweets par utilisateur :RegroupementAutomatiqueMaptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<id1,1><id2,1><id3,1><id1,1><id1,1><id1,1><id2,1><id3,1><id2,1><id1,1><id2,1><id1,1><id1,1><id1,1><id1,1><id1,1><id2,1><id2,1><id2,1><id2,1><id3,1><id3,1> Map Clef :identifiant utilisateur Valeur : 1
  17. 17. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 21 Nombre de tweets par utilisateur :RegroupementAutomatiqueMap Reducetweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<id1,1><id2,1><id3,1><id1,1><id1,1><id1,1><id2,1><id3,1><id2,1><id1,1><id2,1><id2,4><id1,1><id1,1><id1,1><id1,1><id1,1><id2,1><id2,1><id2,1><id2,1><id3,1><id3,1><id3,2><id1,5><id1,5><id2,4><id3,2> Map Clef :identifiant utilisateur Valeur : 1 Reduce Agrégation par clef
  18. 18. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 22mapreduce(input = input ,map=function(k,v){k’ = v$user$id_strv’ = 1keyval(k’, v’)},reduce = function(k,list_v){keyval(k, sum(unlist(list_v)))})
  19. 19. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 23 Nombre de tweets moyen par utilisateur :Reduce 1RegroupementAutomatiqueMaptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<id1,1><id2,1><id3,1><id1,1><id1,1><id1,1><id2,1><id3,1><id2,1><id1,1><id2,1><NULL,5><NULL,4><NULL,2><id1,1><id1,1><id1,1><id1,1><id1,1><id2,1><id2,1><id2,1><id2,1><id3,1><id3,1>
  20. 20. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 24 Nombre de tweets moyen par utilisateur :Reduce 1RegroupementAutomatiqueMaptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<id1,1><id2,1><id3,1><id1,1><id1,1><id1,1><id2,1><id3,1><id2,1><id1,1><id2,1><NULL,5><NULL,4><NULL,2><id1,1><id1,1><id1,1><id1,1><id1,1><id2,1><id2,1><id2,1><id2,1><id3,1><id3,1> Reduce 1 : Agrégation par clef Changement de clef
  21. 21. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 25 Nombre de tweets moyen par utilisateur :Reduce 2Reduce 1RegroupementAutomatiqueMaptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<id1,1><id2,1><id3,1><id1,1><id1,1><id1,1><id2,1><id3,1><id2,1><id1,1><id2,1><NULL,5><NULL,4><NULL,2><NULL, 3.7><id1,1><id1,1><id1,1><id1,1><id1,1><id2,1><id2,1><id2,1><id2,1><id3,1><id3,1> Reduce 1 : Agrégation par clef Changement de clef Reduce 2 : Moyenne sur tousles individus
  22. 22. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 26input2=mapreduce( input = input ,map= function(k,v) {keyval(v$user$id_str,1)},reduce = function(k,list_v){keyval(NULL, sum(unlist(list_v)))})mapreduce(input=input2,reduce=function(k,list_v){keyval(k,mean(unlist(list_v)))})
  23. 23. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 28 Étude de l’influence sur Twitter Début : 19 mars 2012 (publication de la liste des candidats) Fin : 5 mai 2012 (la veille des résultats du second tour) 130 mots clefs 16 millions de tweets récoltés 4 500 000 utilisateurs 53 Go
  24. 24. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 29{ "_id":{ "$oid": "4f625e47e2a3f33c79000002" },"truncated":false,"retweet_count":0,"source":"web","user":{ "screen_name":"Expat00007","followers_count":0,"time_zone":"Amsterdam","location":null,"lang":"fr","profile_image_url_https":"https://si0.twimg.com/sticky/default_profile_images/default_profile_5_normal.png","name":"Expat00007","id":525747899,"geo_enabled":false,"created_at":"Thu Mar 15 21:02:35 +0000 2012","friends_count":0,"id_str":"525747899","profile_image_url":"http://a0.twimg.com/sticky/default_profile_images/default_profile_5_normal.png" },"place":null,"geo":null,"text":"#FH réveille toi, Sarkozy lui, envoyait sévère, il a du punch, il répond du tac o tac, il sait de quoi il parle... il tergiverse pas !","coordinates":null,"created_at":"Thu Mar 15 21:25:27 +0000 2012","entities":{ "hashtags": [{ "text":"FH","indices":[0,3] }],"urls":[],"user_mentions":[]},"id":180404368162570240,"id_str":"180404368162570240" }
  25. 25. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 30 F. Hollande : 1er personne Candidat sortant N. Sarkozy : 3eme personne @fhollande
  26. 26. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 31 F. Hollande : 1er personne Candidat sortant #rennes… N. Sarkozy : 3eme personne @fhollande #dpda…
  27. 27. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 32 F. Hollande : 228 776 N. Sarkozy : 174 967
  28. 28. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 33Nombre deTweetsNombre deRetweetsNombre de tractséquivalentFrançois Hollande 712 30 854 12 107 411Nicolas Sarkozy 609 42 796 13 769 105
  29. 29. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 35 Structure des retweets Estimation de la matrice « qui a retweeté qui » Matrice stochastique Matrice creuse de dimension 4 500 000 * 4 500 000 Évolution d’une mesure de probabilité Produit matriciel Mesure récursive du pouvoir d’influence Prise en compte de la capacité d’influence des proches Convergence itérative Solution unique
  30. 30. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 36 François Hollande : 12eme Nicolas Sarkozy : 14eme Analystes politiques : Le Véritomètre (rang 3) Owni (rang 4) Journalistes : Soren Seelow (rang 24) Leparmentier Arnaud (rang 26) Politiques : Vincent Feltesse (rang 17) Jean-Luc Mélenchon (rang 20) Etrangers : Barack Obama (rang 6-7) Breaking news (rang 13) …
  31. 31. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 37 Structure des retweets Estimation de la matrice « qui a retweeté qui » Matrice stochastique Matrice creuse de dimension 4 500 000 * 4 500 000 Évolution d’une mesure de probabilité Produit matriciel Mesure récursive du pouvoir d’influence Prise en compte de la capacité d’influence des proches Convergence itérative Solution unique
  32. 32. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 38RegroupementAutomatiqueMaptweet1tweet2tweet3tweet4tweet5tweet6tweet7tweet8tweet9tweet10tweet11<id_Retweeter1,id_Author4><id_Retweeter2,id_Author4><id_Retweeter1,id_Author6><id_Retweeter1,id_Author6><id_Retweeter3,id_Author4><id_Retweeter3,id_Author5><id_Retweeter1,id_Author4><id_Retweeter1,id_Author6><id_Retweeter1,id_Author6><id_Retweeter2,id_Author4><id_Retweeter3,id_Author4><id_Retweeter3,id_Author5>………
  33. 33. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 39mapreduce(input=input,map=function(k,v){if(is.null(v$retweeted_status$user$id_str)){return()}else{retweeteur=v$user$id_strretweete=v$retweeted_status$user$id_strkeyval(retweeteur,retweete)}},…
  34. 34. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 40Reduceid_author4 | id_author6<id_Retweeter1, 0.333 | 0.667 >………id_author4 |<id_Retweeter2, 1 | >id_author4 | id_author5<id_Retweeter1, 0.5 | 0.5 >Matrice creuse
  35. 35. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 41mapreduce(input=input,map=function(k,v){if(is.null(v$retweeted_status$user$id_str)){return()}retweeteur=v$user$id_strretweete=v$retweeted_status$user$id_strkeyval(retweeteur,retweete)},reduce=function(k,vv){keyval(k,table(unlist(vv))/length(vv))})
  36. 36. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 42Matrice creuseclef : id_Retweetervaleur : data.frame :(id_user, coefficient)Vecteur de score d’influenceclef : id_uservaleur : scoreReduceReduceEquijoin()(Jointure sur les clefs)Clef : id_RetweeterValeur 1 : (id_user, coefficient)Valeur 2 : (score)Clef : id_userValeur : coefficient*scoreNouveau vecteur de scoreClef : id_userValeur : nouveau_score = SUM(coefficient*score)
  37. 37. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 43tmp=equijoin(left.input=score,right.input=matrice,outer="left",#map.right=function(…)#map.left=function(…)reduce.all=function(k, v.left, v.right){k’=unlist(v.right[,1])v’=unlist(as.numeric(v.right[,2])*as.numeric(v.left))keyval(k’,v’)})mapreduce(input=tmp,reduce=function(k,v){keyval(k’,sum(unlist(v’))})
  38. 38. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 44Autres fonctions R disponibles dans le package rmrmapreduce(…)Cadre fonctionnel permettant de définiret de réaliser les traitements au formatMapReduce.rmr.str(…) Équivalent de la fonction str() de Rrmr.sample(input, output = NULL, method = c("any", "Bernoulli"), ...)Réalise des échantillonnages aléatoiresdans les fichiers de l’hdfs.On peut y définir un effectif cible ou uneprobabilité d’échantillonnage.equijoin(…)Permet de réaliser des jointures enMapReduce (cf. exemple)
  39. 39. BIG DATA - INTRODUCTION À LA PROGRAMMATION MAPREDUCE AVEC R 451. Zouheir Guédri Congrès BigData Paris. (2012)2. Alex Popescu Big data causes concern and big confusion. A big data definition to helpclarify the confusion. (2012)3. Stephane Fermigier Big data & open source : une convergence inévitable ? (2012)4. Semiocast Twitter reaches half a billion accounts - More than 140 millions in the U.S.(2012)5. R development core team R : A language and environment for statistical computing. (2008) (3-900051-07-0)6. Michael Eisermann1. Comment fonctionne Google ? (2009)

×