dimanche 15 février 2015

MapReduce avec R

« Big Data » (« mégadonnées » ou « données massives » en français), en veux-tu en voilà. Tout le monde en parle, c’est le sujet à la mode. Il suffit de voir l’évolution des requêtes associées sur Google Trends pour s’en rendre compte. Leur valorisation est un enjeu fort, on parle de « big data analytics ». Dans les faits, il s’agit d’étendre le champ d’application des techniques de statistique exploratoire et de data mining à de nouvelles sources de données dont les principales caractéristiques sont la volumétrie, la variété et la vélocité.

L’informatique distribuée est un pilier essentiel du big data. Il est illusoire de vouloir augmenter à l’infini la puissance des serveurs pour suivre la croissance exponentielle des informations à traiter. La solution passe par une coopération efficace d’une myriade de machines connectées en réseau, assurant à la fois la gestion de la volumétrie et une puissance de calcul décuplée. « Hadoop » s’inscrit dans ce contexte. Il s’agit d’un framework Java libre de la fondation Apache destiné à faciliter la création d’applications distribuées et échelonnables . « Distribuées » signifie que le stockage et les calculs sont réalisés à distance sur un cluster (groupe) de nœuds (de machines). « Echelonnables » dans le sens où si l’on a besoin d’une puissance supplémentaire, il suffit d’augmenter le nombre de nœuds sans avoir à remettre en cause les programmes et les architectures. Dans cette optique, MapReduce  de Hadoop joue un rôle important. C’est un modèle de programmation qui permet de distribuer les opérations sur des nœuds d’un cluster. L’idée maîtresse est la subdivision des tâches que l’on peut dispatcher sur des machines distantes, ouvrant ainsi la porte au traitement de très grosses volumétries. Une série de dispositifs sont mis en place pour assurer la fiabilité du système (ex. en cas de panne d’un des nœuds).

Dans ce tutoriel, nous nous intéressons à la programmation MapReduce sous R. Nous nous appuierons sur la technologie RHadoop  de la société Revolution Analytics. Le package « rmr2 » en particulier permet de s’initier à la programmation MapReduce sans avoir à installer tout l’environnement, tâche qui, en soi, est déjà suffisamment compliquée comme cela. Il existe des tutoriels consacrés à ce thème sur le net. Celui Hugh Devlin (janvier 2014) en est une illustration . Mais il s’adresse à un public connaisseur des statistiques et de la programmation R, en commençant notamment par faire le parallèle (c’est de circonstance) avec la fonction lapply() que les apprentis du langage R ont souvent bien du mal à appréhender. Au final, il m’a fallu beaucoup de temps pour réellement saisir la teneur des fonctions étudiées. J’ai donc décidé de reprendre les choses à zéro en commençant par des exemples très simples dans un premier temps, avant de progresser jusqu’à la programmation d’algorithmes de data mining, la régression linéaire multiple en l’occurrence.

Mots-clés :  big data, big data analytics, mapreduce, package rmr2, anova, régression linéaire, hadoop, rhadoop, logiciel R, langage R
Didacticiel : fr_Tanagra_MapReduce.pdf
Fichiersfr_mapreduce_with_r.zip
Références :
Hugh Devlin, "Mapreduce in R", Jan. 2014.
Tutoriel Tanagra, "Programmation parallèle sous R", juin 2013.
Tutoriel Tanagra, "Programmation R sous Hadoop", avril 2015.