BIGDATA Stella Kemgang Samuel Quettier Dzung Nguyen Cyrille Meli Encadré par : Julie Josse 1 1
Sommaire Introduction générale Les solutions dans R A. Retour sur la Présentation générale B. Limites de R C. Des solutions Les solutions dans R A. Big memory B. Ff Conclusions et ouvertures 1 2 3
Introduction générale Solutions dans R Conclusions et ouvertures 1 Introduction générale
Retour sur la Présentation générale Introduction Solutions dans R Conclusions et ouvertures Retour sur la Présentation générale • Possibilité de combiner programmation, utilisation de fonctions pré-définies (code source accessible) et/ou clique boutons Rcmdr. • Plus de 2800 librairies (packages) ! Collaboratif. • Évolution rapide du logiciel, disponibilité immédiate de nouvelles méthodes ou méthodologies. • Disponible sous Mac, Windows, Linux. • Diffusion : congrès. Source : Introduction à R, Marine Cadoret & Julie Josse
Introduction Solutions dans R Conclusions et ouvertures Limites de R Deux limites importantes : R n’utilise par défaut qu’un seul CPU. read.table enregistre par défaut les données dans la RAM. Facile d’épuiser la RAM en stockant des données inutiles. Le système d'exploitation limité à 4 Go de mémoire. R limité à 2Go. Problématique, lorsque l’heure est de plus en plus aux gros jeux de données ! (amazon, gouv, aéronautique, marchés financiers…) Plusieurs Go ! Téraoctets ?!
BIGDATA Solutions Il existe plusieurs solutions : Acheter plus de RAM. Introduction Solutions dans R Conclusions et ouvertures Solutions Il existe plusieurs solutions : Acheter plus de RAM. Utiliser un Système de Gestion de Bases de Données. Echantillonner, ré-échantillonner, ou utiliser la méthode de Monte Carlo. Ce dont nous allons vous parler … BIGDATA
BIGDATA Présentation sur le parallel computing !!! Introduction Solutions dans R Conclusions et ouvertures BIGDATA « BigData » = jeu de données qui ne rentre pas dans la RAM. Packages de R pour les prendre en charge : Bigmemory. Ff. Il existe également des packages permettant de pratiquer le parallel computing pour atteindre un objectif similaire : HadoopStreaming. Rhipe. Présentation sur le parallel computing !!!
Les solutions dans R 2 Introduction Solutions dans R Conclusions et ouvertures 2 Les solutions dans R
Schéma du projet « bigmemory » Introduction Solutions dans R Conclusions et ouvertures Le package Bigmemory « The bigmemory Project » Michael J. Kane and John W. Emerson, Yale University http://www.bigmemory.org « Sister » packages: Bigalgebra Bigtabulate Biganalytics Synchronicity Date de publication: 12/09/2012 Schéma du projet « bigmemory »
Introduction Solutions dans R Conclusions et ouvertures Le package Bigmemory Stocker des objets massifs (matrices) dans la RAM en utilisant des pointeurs extérieurs pour les référer. Le jeu de données peut être « file-backed » pour le gérer et l’analyser facilement lorsque sa taille est plus élevée que celle de la RAM. Certains processus dans le même ordinateur peuvent partager ces objets issus de « bigmemory ».
Le package Bigmemory Création Accession Manipulation Importation Introduction Solutions dans R Conclusions et ouvertures Le package Bigmemory Création big.matrix as.big.matrix filebacked.big.matrix shared.big.matrix Accession describe attach.big.matrix attach.resource Manipulation mwhich morder mpermute deepcopy flush write.big.matrix Importation read.big.matrix
(filename, sep = ’,’, header = FALSE, skip = 0, Introduction Solutions dans R Conclusions et ouvertures Le package Bigmemory read.big.matrix (filename, sep = ’,’, header = FALSE, skip = 0, col.names = NULL, row.names = NULL, has.row.names=FALSE, ignore.row.names=FALSE, extraCols = NULL, type = NA, separated = FALSE, backingfile = NULL, backingpath = NULL, descriptorfile = NULL, shared=TRUE)
Le package Bigmemory separated Introduction Solutions dans R Conclusions et ouvertures Le package Bigmemory separated TRUE : la mémoire est allouée dans des vecteurs distincts pour chaque colonne. FAUX : la matrice est stockée dans le format traditionnel, comme dans R standard.
Le package Bigmemory backingfile descriptorfile Introduction Solutions dans R Conclusions et ouvertures Le package Bigmemory backingfile Une « file-backed » matrice peut dépasser la RAM disponible en utilisant l'espace du disque dur, et peut également être partagée entre plusieurs processus. Une « file-backed » matrice peut dépasser la RAM disponible en taille à l'aide d'un cache de fichier (ou des caches de fichiers multiples, si separated = TRUE). descriptorfile Donner le nom du fichier pour contenir la description « file-backed », pour une utilisation ultérieure avec attach.big.matrix
Un peu d’applications ??
Big.matrix matrix Exemple de création et Manipulation de données Introduction Solutions dans R Conclusions et ouvertures Exemple de création et Manipulation de données objet qui pointe vers l'emplacement mémoire de la structure des données Demande de Permission pour modification !!! Big.matrix matrix
Usage des fonctions morder et mpermute Introduction Solutions dans R Conclusions et ouvertures Exemple de création et Manipulation de données Usage des fonctions morder et mpermute
Exemple: importation des données Introduction Solutions dans R Conclusions et ouvertures Exemple: importation des données Library ("bigmemory") ozone<-read.big.matrix ("ozone.txt", header=TRUE, sep=" ", type = "double", has.row.names=TRUE, backingfile = "ozone.bin", backingpath = "E:/documents/Rennes/MASTER 2 Stat/Cours R/TD2" descriptorfile = "ozone.desc") parallel computing Summary (ozone) Library ("biganalytics") Summary (ozone) dim (ozone) attributes (ozone)
Nouvelle session de R sur le même ordinateur ou sur plusieurs autres Introduction Solutions dans R Conclusions et ouvertures Exemple: importation des données Nouvelle session de R sur le même ordinateur ou sur plusieurs autres Parallel computing plusieurs processus de R peuvent partager des objets de mémoire via l’appel par référence
Un petit test !! importation de 2 fichiers. Introduction Solutions dans R Conclusions et ouvertures Un petit test !! Samsung Electronics Celeron (R) Dual -Core CPU T3500@ 2.10GHz, 3 GoRAM. importation de 2 fichiers. fonction fichier Temps (sec) read.big.matrix (Bigmemory) (.csv) 167 Mo ~ 1,37 min read.table ~ 4,33 min 1,62 Go ~ 46,17 min ??? Avec bigmemory gain important de vitesse d’importation des fichiers. Après 4h d’attente …
Stocker une matrice dans la mémoire par référence. Introduction Solutions dans R Conclusions et ouvertures Avantages: Stocker une matrice dans la mémoire par référence. L’accès à la RAM est rapide grâce à C + +. Inconvénients: Disparaît au redémarrage, à moins d'utiliser filebacked.big.matrix. Limite du processus filebacked sur les systèmes 32 bits.
Il n’existe pas que Bigmemory!!
Le package ff ff= fast access files Introduction Solutions dans R Conclusions et ouvertures Le package ff ff= fast access files Support externe mémoire CHUNKS Facilite l’accès des données de grande dimension; bigdata=objets ff, on y a accès comme à des objets R ordinaires. Les données sont stockées dans le disque dur mais se comportent comme si elles étaient dans la RAM. Les objets ff sont transformés en fichiers binaires très légers pour la mémoire!!
Le package ff Il comprend 2 parties: - « low level » écrite en C Introduction Solutions dans R Conclusions et ouvertures Le package ff Il comprend 2 parties: - « low level » écrite en C « high level» écrite en R
La partie en R comprend les sections suivantes: Introduction Solutions dans R Conclusions et ouvertures Le package ff La partie en R comprend les sections suivantes: Ouverture/création de fichiers: Contrôlé par 2 principales fonctions, ff et ffm. Si les arguments length et dim sont spécifiés alors création, sinon ouverture. Les opérations Entrés/Sorties (I/O): Contrôlé par les opérateurs ‘[ ]’ , ‘<-’ Utilisation de fichiers binaires!!!! Fonctions et méthodes pour les objets ff et ffm: Plusieurs fonctions qui optimisent l’utilisation du package sont mises à disposition.
Le package ff ff( initdata = NULL , length = NULL , levels = NULL Introduction Solutions dans R Conclusions et ouvertures Le package ff Quelques fonctions utiles: Valeurs qui Initialisent l’objet à construire ff( initdata = NULL , length = NULL , levels = NULL , dim = NULL , filename = NULL , overwrite = FALSE , vmode = NULL ) Var qualitatives Donne un nom au fichier dans lequel est créé l’objet Mode de stockage virtuel 27 arguments à elle seule!!! Si True, ecrase des fichiers contenant déjà des objets
Quelques fonctions utiles: Introduction Solutions dans R Conclusions et ouvertures Quelques fonctions utiles: As.ffdf conversion d’une matrice en dataframe. ffm.data.frame Biglm ajuste un modèle linéaire à des ff bigdata. Bigglm read.table.ffdf importe un jeu de données en le transformant en ff dataframe.
Ne cesse d’être optimisé. Introduction Solutions dans R Conclusions et ouvertures Avantages: Permet à R de travailler avec plusieurs jeux de données énormes simultanément; Nettoie le système; Ne cesse d’être optimisé. Inconvénients: Difficile à mettre en œuvre et à comprendre car peu d’exemples; La mise sur pieds d’analyses performantes requiert beaucoup de réflexion.
Conclusions et ouvertures Introduction Solutions dans R Conclusions et ouvertures 3 Conclusions et ouvertures
Conclusions Quel package utiliser ? C’est une question de goût ! Introduction Solutions dans R Conclusions et ouvertures Conclusions Quel package utiliser ? C’est une question de goût ! Bigmemory est plus confortable à l’utilisation. Mais ff produit des data frames, type utilisé par beaucoup de fonctions sous R standard.
Conférence BIG DATA PARIS, Introduction Solutions dans R Conclusions et ouvertures Pour en savoir plus … Conférence BIG DATA PARIS, 2ème édition, 03-04 avril 2013, CNIT Paris La Défence. www.bigdataparis.com
Introduction Solutions dans R Conclusions et ouvertures Sources : Bigmemory.pdf ; Michael J. Kane & and John W. Emerson ; 17 Septembre 2012. Ff.Pdf ; Daniel Adler & all ; 8 Mai 2012. Working with Large Datasets ; Ryan R. Rosario ; 17 Aout 2010. Big_Memory V0.pdf ; Gstat ; 24 Mars 2012.
BIGDATA C’était Stella Kemgang Samuel Quettier Dzung Nguyen Cyrille Meli Encadré par : Julie Josse 33 33