Le traitement de grandes masses de données impose une parallélisation des calculs pour obtenir des résultats en temps raisonnable et ce, d’autant plus, lors du traitement en temps réel d’un flux (streaming) de données. Les acteurs majeurs que sont Google, Amazon, Yahoo, Twitter... développent dans des centres de données (data centers) des architectures spécifiques pour stocker à moindre coût de grande masses de données (pages web, listes de requêtes, clients, articles à vendre, messages...) sous forme brute, sans format ni structure relationnelle. Ils alignent, dans de grands hangars, des empilements (conteneurs ou baies) de cartes mère standards de PC “bon marché” , reliées par une connexion réseau.
Hadoop est une des solutions les plus populaires pour gérer des données et des applications sur des milliers de nœuds en utilisant des approches distribuées. Hadoop est composé de son propre gestionnaire de fichiers (HDFS : Hadoop Distributed File System) qui gère des données sur plusieurs nœuds simultanément en permettant l’abstraction de l’architecture physique de stockage (c’est-à-dire que l’utilisateur n’a l’impression de travailler que sur un seul ordinateur alors qu’il manipule des données réparties sur plusieurs nœuds). Hadoop dispose aussi d’algorithmes permettant de manipuler et d’analyser ces données de manière parallèle, en tenant compte des contraintes spécifiques de cette infrastructure, comme par exemple MapReduce (Dean et Ghemawat ; 2004), HBase, ZooKeeper, Hive et Pig.
Initié par Google, Hadoop est maintenant développé en version libre dans le cadre de la fondation Apache. Le stockage intègre également des propriétés de duplication des données afin d’assurer une tolérance aux pannes. Lorsqu’un traitement se distribue en étapes Map et Reduce, celui-ci devient “échelonnable” ou scalable, c’est-à-dire que son temps de calcul est, en principe, divisé par le nombre de nœuds ou serveurs qui effectuent la tâche. Hadoop est diffusé comme logiciel libre et bien qu’écrit en java, tout langage de programmation peut l’interroger et exécuter les étapes MapReduce prédéterminées.
Comparativement à d’autres solutions de stockage plus sophistiquées : cube, SGBDR (systèmes de gestion de base de données relationnelles), disposant d’un langage (SQL) complexe de requêtes, et comparativement à d’autres architectures informatiques parallèles dans lesquelles les divers ordinateurs ou processeurs par tagent des zones mémoires communes (mémoire partagée), Hadoop est perçu, sur le plan académique, comme une régression. Cette architecture et les fonctionnalités très restreintes de MapReduce ne peuvent rivaliser avec des programmes utilisant des langages et librairies spécifiques aux machines massivement parallèles connectant des centaines, voire milliers, de cœurs sur le même bus. Néanmoins, le poids des acteurs qui utilisent Hadoop et le bon compromis qu’il semble réaliser entre coûts matériels et performances en font un système dominant pour les applications commerciales qui en découlent : les internautes sont des prospects à qui sont présentés des espaces publicitaires ciblés et vendus en temps réel aux annonceurs dans un système d’enchères automatiques.
Hormis les applications du e-commerce qui dépendent du choix préalable, souvent Hadoop, MongoDB..., de l’architecture choisie pour gérer les données, il est légitime de s’interroger sur le bon choix d’architecture (SGBD classique ou non) de stockage et de manipulation des données en fonction des objectifs à réaliser. Ce sera notamment le cas dans bien d’autres secteurs : industrie (maintenance préventive en aéronautique, prospection pétrolière, usages de pneumatiques...), transports, santé (épidémiologie), climat, énergie (EDF, CEA...)... concernés par le stockage et le traitement de données massives.
Référence
Statistique et Big Data Analytics
Philippe Besse∗ Nathalie Villa-Vialaneix†
Philippe Besse∗ Nathalie Villa-Vialaneix†


