Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html. R.R. Université Lyon 2

Documents pareils
Programmation parallèle et distribuée

Programmation parallèle et distribuée

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Big Data Concepts et mise en oeuvre de Hadoop

Fouillez facilement dans votre système Big Data. Olivier TAVARD

Programmation parallèle et distribuée (Master 1 Info )

Panorama des solutions analytiques existantes

Introduction à MapReduce/Hadoop et Spark

Cartographie des solutions BigData

Les participants repartiront de cette formation en ayant une vision claire de la stratégie et de l éventuelle mise en œuvre d un Big Data.

20 ans du Master SIAD de Toulouse - BigData par l exemple - Julien DULOUT - 22 mars ans du SIAD -"Big Data par l'exemple" -Julien DULOUT

Formation Cloudera Data Analyst Utiliser Pig, Hive et Impala avec Hadoop

L écosystème Hadoop Nicolas Thiébaud Tuesday, July 2, 13

Déploiement d une architecture Hadoop pour analyse de flux. françois-xavier.andreu@renater.fr

Les technologies du Big Data

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

HADOOP ET SON ÉCOSYSTÈME

NoSQL. Introduction 1/30. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Hadoop, les clés du succès

NoSQL. Introduction 1/23. I NoSQL : Not Only SQL, ce n est pas du relationnel, et le contexte. I table d associations - Map - de couples (clef,valeur)

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

MapReduce. Nicolas Dugué M2 MIAGE Systèmes d information répartis

Bases de données documentaires et distribuées Cours NFE04

Les journées SQL Server 2013

Introduction aux algorithmes MapReduce. Mathieu Dumoulin (GRAAL), 14 Février 2014

Labs Hadoop Février 2013

R+Hadoop = Rhadoop* Des logiciels libres complémentaires, une implémentation, une réponse au nouveau paradigme du bigdata!

Organiser vos données - Big Data. Patrick Millart Senior Sales Consultant


Stephan Hadinger, Sr. Mgr Solutions Architecture, AWS. Salon du Big Data 11 mars 2015

M2 GL UE DOC «In memory analytics»

MapReduce et Hadoop. Alexandre Denis Inria Bordeaux Sud-Ouest France ENSEIRB PG306

Acquisition des données - Big Data. Dario VEGA Senior Sales Consultant

Tables Rondes Le «Big Data»

Les quatre piliers d une solution de gestion des Big Data

AVRIL Au delà de Hadoop. Panorama des solutions NoSQL

BIG DATA en Sciences et Industries de l Environnement

Hadoop dans l entreprise: du concept à la réalité. Pourquoi et comment?

Big Data. Les problématiques liées au stockage des données et aux capacités de calcul

Groupe de Discussion Big Data Aperçu des technologies et applications. Stéphane MOUTON

Offre formation Big Data Analytics

Document réalisé par Khadidjatou BAMBA

CNAM Déploiement d une application avec EC2 ( Cloud Amazon ) Auteur : Thierry Kauffmann Paris, Décembre 2010

Les bases de données relationnelles

Prototypage et évaluation de performances d un service de traçabilité avec une architecture distribuée basée sur Hadoop

Projet Xdata. Cinequant, Data Publica, EDF, ESRI, Hurence, INRIA, Institut Mines Telecom, La Poste, Orange, Veolia

Chapitre 10 Mettre en œuvre un cluster Hadoop

Livre. blanc. Solution Hadoop d entreprise d EMC. Stockage NAS scale-out Isilon et Greenplum HD. Février 2012

Introduc)on à Map- Reduce. Vincent Leroy

Cloud Computing : Utiliser Stratos comme PaaS privé sur un cloud Eucalyptus

Le BigData, aussi par et pour les PMEs

11/01/2014. Le Big Data Mining enjeux et approches techniques. Plan. Introduction. Introduction. Quelques exemples d applications

Certificat Big Data - Master MAthématiques

Anticiper et prédire les sinistres avec une approche Big Data

Technologies du Web. Ludovic DENOYER - ludovic.denoyer@lip6.fr. Février 2014 UPMC

BI dans les nuages. Olivier Bendavid, UM2 Prof. A. April, ÉTS

Pentaho Business Analytics Intégrer > Explorer > Prévoir

4 Exemples de problèmes MapReduce incrémentaux

Big Data : utilisation d un cluster Hadoop HDFS Map/Reduce HBase

LE BIG DATA. TRANSFORME LE BUSINESS Solution EMC Big Data

Maîtriser les technologies Big Data pour obtenir des résultats en quasi-temps réel

Hibernate vs. le Cloud Computing

TP2_1 DE BUSINESS INTELLIGENCE ISIMA ZZ3 F3

VirtualScale L expert infrastructure de l environnement Open source HADOOP Sofiane Ammar sofiane.ammar@virtualscale.fr

//////////////////////////////////////////////////////////////////// Administration bases de données

Lʼavenir des grilles Des grilles aux Clouds avec quelques «petits problèmes» de recherche. F. Desprez INRIA


Les enjeux du Big Data Innovation et opportunités de l'internet industriel. Datasio 2013

Vos experts Big Data. Le Big Data dans la pratique

CAHIER DES CHARGES D IMPLANTATION

Limitations of the Playstation 3 for High Performance Cluster Computing

Le projet Gaïa, le Big Data au service du traitement de données satellitaires CRIP - 16/10/2013 Pierre-Marie Brunet

Importation et exportation de données dans HDFS

Programme détaillé. Administrateur de Base de Données Oracle - SQLServer - MySQL. Objectifs de la formation. Les métiers

Hadoop, Spark & Big Data 2.0. Exploiter une grappe de calcul pour des problème des données massives

Exploration des Big Data pour optimiser la Business Intelligence

VMware vsphere 5 Préparation à la certification VMware Certified Professional 5 Data Center Virtualization (VCP5-DCV) - Examen VCP510

Notes de cours Practical BigData

Département Informatique 5 e année Hadoop: Optimisation et Ordonnancement

UE 8 Systèmes d information de gestion Le programme

«clustering» et «load balancing» avec Zope et ZEO

INSTALLATION ET CONFIGURATION DE HYPER V3

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Ne cherchez plus, soyez informés! Robert van Kommer

Change the game with smart innovation

Présentation du PL/SQL

NoSQL. Etat de l art et benchmark

Cluster High Availability. Holger Hennig, HA-Cluster Specialist

ETUDE ET IMPLÉMENTATION D UNE CACHE L2 POUR MOBICENTS JSLEE

Analytics & Big Data. Focus techniques & nouvelles perspectives pour les actuaires. Université d Eté de l Institut des Actuaires Mardi 8 juillet 2014

Rapport de stage. Développement d un logiciel de vidéoconférence : Enjeux 3. Guillaume DOTT 2009

Livre blanc Haute disponibilité sous Linux

FAMILLE EMC VPLEX. Disponibilité continue et mobilité des données dans et entre les datacenters AVANTAGES

Map-Reduce : un cadre de programmation parallèlle pour l analyse de grandes données. Stéphane Genaud ENSIIE

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Transcription:

Ricco Rakotomalala http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html 1

Plan de présentation 1. L écosystème Hadoop 2. Principe de programmation MapReduce 3. Programmation des fonctions Map et Reduce avec RHadoop 4. Quelques exemples 2

HADOOP 3

Hadoop Hadoop? Hadoop est un environnement logiciel «open source» de la fondation Apache. C est un environnement logiciel dédié au stockage et au traitement distribués de larges volumes de données. Hadoop repose sur deux composantes essentielles : 1. Un système de fichiers distribué (HDFS : hadoop distributed file system) 2. Une implémentation efficace de l algorithme MapReduce Outils Hadoop Hadoop intègre des modules supplémentaires : Hadoop Common, qui est une bibliothèque d utilitaires destinées à gérer les autres modules ; Hadoop YARN, qui gère les ressources et l organisation des tâches (plus performante que la génération précédente, on l associe à l appellation MapReduce 2.0 Le moteur interne est amélioré, mais rien ne change pour nous programmeurs). Hadoop propose une séries d outils prêtes à l emploi : HBase, une base de données non-relationnelle ; Hive, un entrepôts de données proposant un langage de requête proche du SQL ; Pig, une plate-forme haut-niveau qui permet de définir des programmes MapReduce à l aide d un langage spécifique similaire à SQL (Pig Latin) ; etc. 4

Architecture distribuée Cluster de machines ou Grappe de serveurs Idée : faire coopérer des machines simples est aussi puissant que développer un gros serveur Intérêt : réduction des coûts, meilleure tolérance aux pannes (résilience), scalabilité (montée en charge) Clients Switch Nœud 3 Gère les ressources et la distribution des tâches Nœud maître Cluster (grappe) de serveurs Les nœuds sont groupés sous un même nom = nom du cluster qui permet de le désigner et le manipuler. Ordinateur 1 = Serveur 1 = Nœud 1 Nœud 2 Nœud 4 Nœud 5 Nœuds esclaves Si le nœud maître plante, il est remplacé par un esclave 5

Hadoop HDFS (Hadoop Distributed File System) Chaque fichier à stocker est subdivisé en blocs Chaque bloc est répliqué sur 3 nœuds Si un des nœuds «tombe», les données sont automatiquement répliquées B. Hedlund, «Understanding Hadoop Clusters and the Network» http://bradhedlund.com/2011/09/10/understanding-hadoop-clusters-and-the-network/ 6

Modèle de programmation MAPREDUCE 7

Principe MapReduce Idée : Définir un modèle de développement permettant de programmer «simplement» des calculs parallèles et distribués. C. Parageaud, «MapReduce et les grilles de données, ou Hadoop sans Hadoop».http://blog.ippon.fr/2014/0 3/14/mapreduce-et-les-grilles-dedonnees-ou-hadoop-sans-hadoop/ Accès aux données sur HDFS Le système (Hadoop) se charge de splitter les données en blocs. On n a pas prise là-dessus. Sur chaque bloc est appliqué la fonction map() que nous devons programmer. Calculs + extraction des informations qui nous intéressent. Une liste d objets indexés par une clé est produite en sortie. Le système réorganise les données de manière à regrouper les objets qui ont une clé identique. Pour chaque groupe de données possédant la même clé est appelé la fonction reduce(). En sortie, nous avons une liste d éléments calculés. Les éléments sont écrits sur HDFS. Notre travail consiste à programmer au mieux les fonction map() et reduce() 8

MapReduce Un exemple : comptage de lettres Données : (AAABABBABBAAABBBAA) Split en 3 blocs : (AAABAB) (BABBAA) (ABBBAA) La fonction map() est appelée 3 fois. La fonction map() associe à chaque lettre la valeur 1, et définit la lettre comme clé. (AAABAB) (BABBAA) (ABBBAA) (111111) (111111) (111111) Le système répartit les données selon les valeurs de la clé. Nous avons 2 groupes de valeurs ici. (AAAAAAAAAA) (BBBBBBBB) (1111111111) (11111111) A chaque groupe défini par la clé est appelée la fonction reduce() qui effectue la somme des 1. En sortie est fournie la clé et la somme calculée. (A:10) (B:8) Ces informations sont inscrites dans le fichier de sortie 9

Implémentation du principe MapReduce sous R PROGRAMMATION SOUS R 10

Utilisation des packages de RHadoop 11

S initier à la programmation MapReduce sans avoir à installer Hadoop On peut s initier à la programmation MapReduce sous R sans avoir à installer Hadoop (qui requiert d autres compétences). Il faut installer manuellement le package rmr et ses dépendances to.dfs() transforme un objet de R (vecteur, data.frame, etc.) et l écrit dans un fichier temporaire compatible HDFS from.dfs() récupère le contenu d un fichier temporaire HDFS et le transforme en un objet R Ces fonctions ne sont pas nécessaires si nous travaillons réellement dans un environnement Hadoop Tutoriel Tanagra, «MapReduce avec R», février 2015 http://tutoriels-data-mining.blogspot.fr/2015/02/mapreduce-avec-r.html 12

Signature de la fonction MapReduce de rmr (RHadoop) mapreduce( input, map, reduce) mapreduce est une fonction fournie par rmr pour exécuter un job MapReduce input représente les données à manipuler dans le job map est la fonction Map() à programmer reduce est la fonction Reduce() à programmer La fonction renvoie un objet HDFS que l on peut convertir en objet R avec la fonction from.dfs() Remarque 1 : D autres paramètres sont disponibles. Elles prennent des valeurs par défaut, nous ne sommes pas tenus de les modifier explicitement. Remarque 2 : Le système s occupe de la synchronisation. Tant que le dernier map() n est pas fini, on ne passe pas à l étape suivante. Remarque 3 : Si un nœud plante, les traitements associés sont transférés sur un autre nœud. 13

Exemple de comptage de lettres #chargement du package library(rmr2) #fonctionner sans Hadoop rmr.options(backend="local") #vecteur de lettres lettres <- c("a","a","a","b","a","b","b","a","b","b","a","a","a","b","b","b","a","a") #fonction map() mon.map <- function(.,data){ #créer un vecteur de valeur 1 de même longueur que v one <- rep(1,length(data)) #l'associer à v qui joue le rôle de clé cle_valeur <- keyval(data,one) #renvoyer le tout return(cle_valeur) } #fonction reduce mon.reduce <- function(k,v){ #faire la somme de 1 pour une clé donnée somme <- sum(v) #renvoyer en sortie la clé et le résultat return(keyval(k,somme)) } #transformation dfs.lettres <- to.dfs(lettres) #appel de mapreduce res.mr <- mapreduce(input=dfs.lettres,map=mon.map,reduce=mon.reduce) #conversion en R resultat <- from.dfs(res.mr) #affichage print(resultat) 14

Comprendre le programme en ajoutant des affichages de contrôle - Map Les données sont reçues d un seul tenant. Il n y a pas de split quand on travaille en local. Map() n est appelé qu une seule fois. #fonction map() mon.map <- function(.,data){ #affichage des données en entrée print(data) #créer un vecteur de valeur 1 de même longueur que v one <- rep(1,length(data)) #l'associer à v qui joue le rôle de clé cle_valeur <- keyval(data,one) #affichage des clés-valeurs print(cle_valeur) #renvoyer le tout return(cle_valeur) } Le vecteur de lettres va servir à définir les clés. Nous associons la valeur 1 à chaque lettre observée. 15

Comprendre le programme en ajoutant des affichages de contrôle - Reduce Il y a 2 valeurs de clés possibles ( A et B ). La fonction reduce() est appelée 2 fois. 1 er appel pour la valeur de clé A #fonction reduce mon.reduce <- function(k,v){ #affichage de la clé print(k) #affichage des données associées print(v) #faire la somme de 1 pour une clé donnée somme <- sum(v) #clé + résulat cle.res <- keyval(k,somme) print(cle.res) #renvoyer en sortie la clé et le résultat return(cle.res) } A B 2 nd appel pour la valeur de clé B Remarque : Plutôt qu un simple vecteur ($val est un vecteur à 1 valeur ici), on peut associer un objet plus complexe à la clé (ex. une matrice, une liste, etc.). 16

Post-traitement des résultats de MapReduce L objet obtenu à la sortie est une liste avec deux champs $key et $val. Ils sont constitués de 2 vecteurs dans cet exemple, mais on peut aussi avoir des structures plus complexes. Tout dépend de ce que renvoie keyval() dans reduce(). Il est tout à fait possible de réaliser un posttraitement sur cet objet. Ex. détecter la lettre la plus fréquente. #la lettre la plus fréquente most.freq <- resultat$key[which.max(resultat$val)] print(most.freq) 17

Travailler dans un environnement Hadoop Pour pouvoir programmer en R sous Hadoop, il faut d abord installer l environnement. Dans le tutoriel «Programmation R sous Hadoop» (avril 2015), ont été installés successivement via la distribution CLOUDERA (un cluster simple nœud) : 1. Un logiciel de virtualisation permettant d accueillir un système d exploitation 2. Un système d exploitation Linux (CentOS) 3. Hadoop est automatiquement installé, configuré et démarré 4. Le logiciel R 5. RStudio version serveur 6. Installer les packages nécessaires à RHadoop VirtualBox a été utilisé CentOS = version gratuite de Red Hat On peut installer directement Apache Hadoop sans passer par ce dispositif (1) R va interpréter notre code Pour accéder à l éditeur de manière distante via un navigateur La liste est connue et identifiée (ouf!) 7. Installer les packages de RHadoop 8. On peut enfin programmer et traiter des fichiers qui sont réellement sur HDFS Les affichages de contrôle ne sont plus possibles. 18

QUELQUES EXEMPLES 19

Construire une clé à partir de données : comptage des valeurs paires et impaires #vecteur de valeurs entières x <- c(2,6,67,85,7,9,4,21,78,45) #map selon la parité de la valeur map_valeurs <- function(., v){ #calcul de la clé à partir des données cle <- ifelse (v %% 2 == 0, 1, 2) #retour des vecteurs clés et valeurs return(keyval(cle,v)) } La clé $key a été générée à partir des données $val #reduce sur chaque sous-vecteur reduce_valeurs <- function(k, v){ #longueur du vecteur à traiter nb <- length(v) #renvoyer la clé et le résultat associé return(keyval(k, nb)) } #transformation en type compatible rmr2 x.dfs <- to.dfs(x) #fonction mapreduce de rmr2 calcul <- mapreduce(input = x.dfs, map = map_valeurs, reduce = reduce_valeurs) #transformation en un type R usuel resultat <- from.dfs(calcul) #affichage print(resultat) 2 valeurs de clés 2 appels de la fonction reduce() avec les vecteurs v suivants Clé = 1 Clé = 2 20

Traiter un data.frame : moyennes conditionnelles des rangs #vecteur indicateur de groupe y <- factor(c(1,1,2,1,2,3,1,2,3,2,1,1,2,3,3)) #vecteur de valeurs x <- c(0.2,0.65,0.8,0.7,0.85,0.78,1.6,0.7,1.2,1.1,0.4,0.7,0.6,1.7,0.15) #construire un data frame don <- data.frame(cbind(y,x)) # **** map data est un data.frame ici *** map.rank <- function(., data){ #calculer les rangs des valeurs rang <- rank(data$x,ties.method="average") #la colonne y est la clé cle <- data$y #renvoyer la clé et le vecteur de rang return(keyval(cle,rang)) } #*** reduce calcul v est un vecteur ici *** reduce.mean <- function(k,v){ #moyenne m <- mean(v) #renvoyer la clé et le résultat return(keyval(k,m)) } #format rmr2 don.dfs <- to.dfs(don) #mapreduce calcul <- mapreduce(input=don.dfs,map=map.rank,reduce=reduce.mean) #récupération resultat <- from.dfs(calcul) print(resultat) Le data.frame n est pas renvoyé en sortie (il est possible de le faire). La colonne x n est plus utilisée par la suite. Clé = 1 Clé = 2 Clé = 3 3 valeurs de clé 3 appels de reduce() avec 3 vecteurs différents 21

Conclusion - R est magique De la documentation à profusion sur le net (n achetez jamais des livres sur R) Site du cours http://eric.univ-lyon2.fr/~ricco/cours/cours_programmation_r.html Principe MapReduce M. Dumoulin, «Introduction aux algorithmes MapReduce», février 2014. Programmation MapReduce sous R Hugh Devlin, "Mapreduce in R", janvier 2014. Tutoriel Tanagra, "MapReduce avec R", février 2015. Tutoriel Tanagra, "Programmation R sous Hadoop", avril 2015. POLLS (Kdnuggets) Data Mining / Analytics Tools Used? (May 2015) (R, 2 nd ou 1 er depuis 2010) What languages you used for data mining / data analysis? (July 2015) (Langage R en 1 ère position) 22