qui se déclinent en :
– partage des ressources de calcul ou calcul distribué, partagé ou parallèle. Il s’agit ici de répartir un calcul (une analyse de données au sens statistique du terme, par exemple) sur un ensemble d’ententités de calcul indépendantes (cœurs d’un micro-processeur par exemple). Ces entités peuvent être situés sur un même ordinateur ou, dans le cas qui nous préoccupe dans cet article, sur plusieurs ordinateurs fonctionnant ensemble au sein d’un cluster de calcul. Cette dernière solution permet d’augmenter les capacités de calcul à moindre coût comparé à l’investissement que représente l’achat d’un super-calculateur ;
– partage des ressources de stockage des données. Dans le cadre d’un calcul distribué, on distingue deux celui où la mémoire (où sont stockées les données à analyser) est accédée de la même manière par tous les processeurs (mémoire partagée) et celui où tous les processeurs n’accèdent pas de la même manière à toutes les données (mémoire distribuée). Dans les deux cas, des environnements logiciels (c’est-à-dire, des ensemble de programmes) ont été mis en place pour permettre à l’utilisateur de gérer le calcul et la mémoire comme si il n’avait à faire qu’à un seul ordinateur : le programme se charge de répartir les calculs et les données. Hadoop est un de ces environnements : c’est un ensemble de programmes (que nous décrirons plus précisément plus tard dans un prochain article dans ce blog) programmés en java, distribués sous licence libre et destinés à faciliter le déploiement de tâches sur plusieurs milliers de nœuds. En particulier, Hadoop permet de gérer un système de fichiers de données distribués : HDFS (Hadoop Distributed File System) permet de gérer le stockage de très gros volumes de données sur un très grand nombre de machines. Du point de vue de l’utilisateur, la couche d’abstraction fournie par HDFS permet de manipuler les données comme si elles étaient stockées sur un unique ordinateur. Contrairement aux bases de données classiques, HDFS prend en charge des données non structurées, c’est-à-dire, des données qui se présentent sous la forme de textes simples comme des fichiers de log par exemples. L’avantage de HDFS est que le système gère la localisation des données lors de la répartition des tâches : un nœud donné recevra la tâche de traiter les données qu’il contient afin de limiter le temps de transfert de données qui peut être rapidement prohibitif lorsque l’on travaille sur un très grand nombre de nœuds. Pour ce faire, une approche classique est d’utiliser une décomposition des opérations de calcul en étapes « Map » et « Reduce » (les détails de l’approche sont présentés dans un prochain article) qui décomposent les étapes d’un calcul de manière à faire traiter à chaque nœud une petite partie des données indépendamment des traitements effectuées sur les autres nœuds.
Une fois les données stockées, ou leur flux organisé, leur valorisation nécessite une phase d’analyse (Analytics). L’objectif est de tenter de pénétrer cette jungle pour en comprendre les enjeux, y tracer des sentiers suivant les options possibles afin d’aider à y faire les bons choix. Le parti est pris d’utiliser, si possible au mieux, les ressources logicielles (langages, librairies) open source existantes en tentant de minimiser les temps de calcul tout en évitant la programmation, souvent re-programmation, de méthodes au code par ailleurs efficace. Donc minimiser, certes les temps de calcul, mais également les coûts humains de développement
pour réaliser des premiers prototypes d’analyse.
Référence
Statistique et Big Data AnalyticsPhilippe Besse∗ Nathalie Villa-Vialaneix†

0 commentaires:
Enregistrer un commentaire