Cours Big Data
Cours Big Data
Cours Big Data
Exposés
1- Entrepôts de données
2- Méthode ACP
3- Méthode AFC
4- Bases de données NoSQL
5- MongoDB
6- Hadoop & MapReduce
7- Hadoop & Spark
Références
1- Pr. A. Elouardighi, Cours & TD Datawarehouse, High-Tech
2- Pirmin Lemberger et autres, Big Data et Machine Learning – Manuel du datascientist
3- Arnaud Martin, L’analyse de données, Polycopié de cours ENSIETA _ Réf. : 1453,
Septembre 2004
4- Lcsqa, Principe de l’analyse en composantes principales, INERIS DRC-03-45597-LRl-LMa –
LCSQA-n°140_v1, disponible à l’adresse :
https://lcsqa.org/system/files/Etude14.1_guide_Annexe2_ACP.pdf
5- Wikipédia, Analyse factorielle des correspondances, disponible à l’adresse :
https://fr.wikipedia.org/wiki/Analyse_factorielle_des_correspondances
Table des matières
Chapitre 1 : Entrepôts de Données ......................................................................................................... 5
Notions et Architecture d’un DWH .................................................................................................... 5
Systèmes transactionnels vs Systèmes décisionnels ....................................................................... 5
Systèmes décisionnels.................................................................................................................... 5
Des données aux décisions .............................................................................................................. 6
Applications transactionnelles v.s Applications décisionnelles ................................................. 6
Incompatibilités des deux activités .............................................................................................. 6
Naissance du Datawarehouse .......................................................................................................... 7
Exemple: un DW dans les télécoms.................................................................................................... 9
Architecture centralisée................................................................................................................. 10
Architecture fédérée ...................................................................................................................... 10
OLAP et Analyse multidimensionnelles ........................................................................................... 10
OLAP ............................................................................................................................................ 10
Modèle conceptuel ........................................................................................................................ 11
Vue multidimensionnelle .................................................................................................................. 11
Agrégation des données .................................................................................................................... 11
Granularité des dimensions ............................................................................................................... 12
Opérations OLAP.............................................................................................................................. 12
Opérations sur la structure des cubes ............................................................................................ 12
Opérations sur le contenu des cubes ............................................................................................. 12
Opérations entre cubes .................................................................................................................. 13
Exemple d’outils OLAP .................................................................................................................... 14
Modélisation et Conception d’un DWH ........................................................................................... 14
Construction d’un Datawarehouse ................................................................................................ 14
Modélisation ................................................................................................................................. 15
Alimentation ................................................................................................................................. 16
Outils ETL .................................................................................................................................... 17
Chapitre 2 : Analyse de données .......................................................................................................... 18
Les données ...................................................................................................................................... 18
Objectifs ............................................................................................................................................ 19
Méthodes .......................................................................................................................................... 20
Analyse en Composantes Principales............................................................................................ 21
Analyse Factorielle de Correspondances ...................................................................................... 23
Les logiciels ....................................................................................................................................... 25
Domaine d’applications .................................................................................................................... 26
Chapitre 3 : Le big data dans les organisations..................................................................................... 27
La recherche de l’innovation............................................................................................................. 27
L'entreprise dans un écosystème ................................................................................................. 27
Une volonté de maîtrise................................................................................................................ 28
Des besoins forts ........................................................................................................................... 28
L’avancé par le cloud ........................................................................................................................ 28
La création de la valeur ..................................................................................................................... 29
Les « 3V » du Big Data ....................................................................................................................... 29
Le volume ...................................................................................................................................... 30
La vélocité ..................................................................................................................................... 30
La variété ....................................................................................................................................... 30
Un champ immense d’application .................................................................................................... 31
Exemples de compétences à acquérir .............................................................................................. 32
Chapitre 4 : Les bases de données NoSQL ............................................................................................ 34
Bases de données relationnelles ...................................................................................................... 34
Le Mouvement NoSQL ...................................................................................................................... 37
Les contraintes des applications web à très grande échelle......................................................... 37
Le « théorème » CAP..................................................................................................................... 38
Sacrifier la flexibilité pour la vélocité ............................................................................................ 39
Une définition pour une base de données NoSQL ? ..................................................................... 40
Les solutions NoSQL .......................................................................................................................... 41
Les entrepôts clé-valeur ................................................................................................................ 42
Les bases orientées documents .................................................................................................... 44
Les bases orientées colonnes........................................................................................................ 46
Les bases de données orientées graphes ..................................................................................... 50
Résumé ............................................................................................................................................. 51
Chapitre 5 : L’algorithme MapReduce et le framwork Hadoop............................................................ 53
Automatiser le calcul parallèle.......................................................................................................... 53
Le pattern MapReduce ..................................................................................................................... 54
Le Framework Hadoop ...................................................................................................................... 56
Planning des exécutions................................................................................................................ 56
Tolérance aux pannes ................................................................................................................... 57
Découpage des données en lots ................................................................................................... 58
Monitoring des processus ............................................................................................................. 60
Au-delà de MapReduce................................................................................................................. 60
Résumé ............................................................................................................................................. 61
Chapitre 1 : Entrepôts de Données
Notions et Architecture d’un DWH
Systèmes transactionnels
Les outils traditionnels de gestion et d’exploitation des données sont du type
transactionnel ou OLTP (On-Line Transaction Processing). L’exploitation de données
tourné vers la saisie, le stockage, la mise à jour, la sécurité et l’intégrité des données. Le
système transactionnel est développé pour gérer les transactions quotidiennes. Ces bases de
données supportent habituellement des applications particulières telles que les inventaires
de magasins, les réservations d’hôtel, etc. Le contenu est fait de données actuelles, pas
d’archives. Les données sont très détaillées (détails de chacune des transactions). La mise
à jour s’effectue par de nouvelles transactions. Très souvent plusieurs de ces systèmes
existent indépendamment les uns des autres
Systèmes décisionnels
Le terme décisionnel « Business Intelligence » couvre l'ensemble des technologies
permettant en bout de chaîne d'apporter une aide à la décision.
Le système décisionnel est un Système d’Information (SI) capable d'agréger les données
internes ou externes et de les transformer en information servant à une prise de décision
rapide.
Ce SI est capable de répondre à certains types de questions:
- Quelles sont les ventes du produit X pendant le trimestre A de l'année B dans la région
C?
- Comment se comporte le produit X par rapport au produit Y? o Quel type de client peut
acheter le produit X?
- Est-ce qu'une baisse de prix de 10% par rapport à la concurrence ferait redémarrer les
ventes du produit X ?
Ces exemples mettent en évidence les faits suivants:
- Les questions doivent pouvoir être formulées dans le langage de l’utilisateur en fonction
de son secteur d’activité:
◼ Service marketing, Service économique, service relation clients… o La prévision
des interrogations est difficile car elles sont du ressort de l’utilisateur.
- Les questions vont varier selon les réponses obtenues:
◼ Si le produit X s’est vendu moins bien que l’année précédente, il va être utile de
comprendre les raisons: Détailler les ventes par région par type de magasin,…
- Des questions ouvertes vont nécessiter la mise en place de méthodes d’extraction
d’informations
Des données aux décisions
- Données : Points de ventes, géographiques, démographiques,
- Informations : I vit dans R, I est âgé de A, …
- Connaissances : o Dans X%, le produit Y est vendu en même temps que le produit Z, …
- Décisions : Lancer la promotion de Y & Z dans R auprès des clients plus âgés que A,
...
Applications transactionnelles v.s Applications décisionnelles
Les applications transactionnelles sont constituées de traitements factuels de type OLTP (On
Line Transaction Processing) Les applications d'aide à la décision sont constituées de
traitements ensembliste de type OLAP: On Line Analytical Processing
Datawarehouse : Définition
- « Collection de données orientées sujets, intégrées, non volatiles et historisées,
organisées pour le support du processus d’aide à la décision »
- Base de données dans laquelle sont déposées après nettoyage et homogénéisation les
informations en provenance des différents systèmes de production de l’entreprise OLTP
Notion de Datamart
Définition: « C'est un sous-ensemble de données dérivées du DW ciblé sur un sujet
unique».
Caractéristiques:
- Orienté vers un sujet unique. Ex: comportement de la clientèle
- Données fortement agrégées : Le DW joue le rôle de source et d'historique pour le
Datamart
- Organisation multidimensionnelle (cubique)
• Dont l'une des dimensions indique souvent le temps o Lien dynamique avec le
DW
• Association entre valeur agrégée et valeur détaillée
- Interfaces simples et conviviales
Il s’agit de la version intégrée d’un entrepôt où les données sont introduites dans les
marchés de données orientés selon les différentes fonctions de l’entreprise
OLAP :
• « Il s’agit d’une catégorie de logiciels axés sur l’exploration et l’analyse rapide des
données selon une approche multidimensionnelle à plusieurs niveaux d’agrégation ».
• OLAP vise à assister l’usager dans son analyse en lui facilitant l’exploration de ses
données et en lui donnant la possibilité de le faire rapidement.
o L’usager n’a pas à maîtriser des langages d’interrogation et des interfaces
complexes o L’usager interroge directement les données, en interagissant avec
celles-ci
Modèle conceptuel
Approche multidimensionnelle o Souvent représentés par une
structure à plusieurs dimensions o Une dimension est un attribut ou
un ensemble d’attributs:
▪ Temps
▪ Géographie
▪ Produits
▪ Clients
o Les cellules contiennent des données agrégées appelées Faits ou Indicateurs:
▪ Nombre d’unités vendues
▪ Chiffre d’Affaire
▪ Coût
o Représentations:
▪ Relations,
▪ Cube de données,
▪ hyper cube de données
Vue multidimensionnelle
Opérations OLAP
Opérations sur la structure des cubes
• Pivot (Rotation)
• Switch (Permutation)
• Split (Décomposition
• Dice (Projection)
• Union
Exemple d’outils OLAP
• BusinessObjects, BusinessObjects : http://www.businessobjects.fr/
• SAS:
http://www.sas.com/offices/europe/france/software/technologies/olap/index.html
• HarrySoftware , HarryPilot, HarryCube :
http://www.harrysoftware.com/jahia/Jahia/pid/61
Caractéristiques:
• Le Datawarehouse est différent des bases de données de production:
o Les besoins pour lesquels on veut le construire sont différents
o Il contient des informations historisées, organisées selon les métiers de
l’entreprise pour le processus d’aide à décision
• Le Datawarehouse n’est pas un produit ou un logiciel mais un environnement, qui se
bâtit et ne s’achète pas.
Phases de construction d’un DW:
• Il y’a trois parties interdépendante qui relève la construction d’un Datawarehouse:
o L’étude préalable qui va définir les objectifs, la démarche à suivre, le retour sur
investissement,…
o L’étude du modèle de données qui représente le DW conceptuellement et
logiquement o L’étude de l’alimentation du Datawarehouse
Etude préalable
Alimentation
• L’alimentation est la procédure qui permet de transférer des données du
système opérationnel vers le DWH
• La conception de cette opération est une tâche complexe o 60 à 90 % de la
charge totale d’un projet DWH
• Elle doit être faite en collaboration avec l’administrateur des bases de
productions Il est nécessaire de déterminer:
o Quelles données seront chargées o Les transformations
et les vérifications nécessaires
o La périodicité et le moment de transferts des données
Alimentation d’un DWH (ETL)
• Extraction (Extract)
• Transformation (Transform) :
Filtrer, Homogénéiser, Nettoyer, Etc
…
• Chargement (Loading)
Extraction:
• Depuis les bases sources
• Périodique et Répétée
• Dater ou marquer les données envoyées Difficulté:
o Ne pas perturber les applications OLTP Différentes
techniques d’extraction:
o Méthode Push: Le système opérationnel qui au fil des
transactions alimente le DWH o Méthode Pull : Le système
décisionnel cherche périodiquement les données dans les bases de
production
Transformation
C’est une suite d’opérations qui a pour but de rendre les données cibles homogènes et puissent
être traitées de façon cohérente.
- Unification des modèles
- Convertir / uniformiser les noms des attributs
- Uniformiser les valeurs d ’attributs
- Nettoyer ( Valeurs manquantes, aberrantes…)
Chargement
• C’est l’opération qui consiste à charger les données nettoyées et préparées dans le DW.
• C’est une opération qui peut être longue :
o Mettre en place des stratégies pour assurer de bonnes conditions à sa
réalisation o Définir la politique de rafraîchissement.
• C’est une phase plutôt mécanique et la moins complexe
Outils ETL
• BusinessObjects, Data Integrator,
• Talend Open Studio
• Oracle Corporation, Warehouse builder,
http://www.oracle.com/technology/products/warehouse/index.html/
• IBM, Websphere Datastage , http://www.ascential.com/products/datastage.html
Chapitre 2 : Analyse de données
Les statistiques peuvent être vues en fonction de l'objectif fixé ; classiquement les
méthodes statistiques sont employées soit pour explorer les données (nommée statistique
exploratoire) soit pour prédire un comportement (nommée statistique prédictive ou
décisionnelle ou encore inférentielle). La statistique exploratoire s'appuie sur des techniques
descriptives et graphiques. Elle est généralement décrite par la statistique descriptive qui
regroupe des méthodes exploratoires simples, uni- ou bidimensionnelle (moyenne, moments,
quantiles, variance, corrélation, ...) et la statistique exploratoire multidimensionnelle. L'analyse
de données s'inscrit dans ce cadre de la statistique exploratoire multidimensionnelle. Nous
verrons que des méthodes issues de l'analyse de données peuvent également servir la statistique
prédictive.
L'Analyse de Données est un ensemble de méthodes mathématiques qui permettent
de traiter des "items" dans un tableau. Ces items sont décrit par un ensemble de variables.
L'objectif de l'Analyse de Données est de traiter des informations du type : quels sont les items
identiques ou dissemblables, quelles sont les relations entre les items et les variables associées.
Le plus souvent les résultats de ces analyses permettent d'ajuster et d'optimiser les
politiques ou stratégies commerciales des entreprises.
L'analyse de données fait toujours l'objet de recherche pour s'adapter à tout type de
données et faire face à des considérations de traitements en temps réel en dépit de la quantité
de données toujours plus importante. Les méthodes développées (et l'analyse de données) sont
maintenant souvent intégrées avec des méthodes issues de l'informatique et de l'intelligence
artifcielle (apprentissage numérique et symbolique) dans le data mining traduit en français par
« fouille de données » ou encore extraction de connaissance à partir de données.
Les données
Nous considérons tout d'abord que la population peut être décrite par des données de
deux types de caractères : qualitatif ou quantitatif. Les caractères qualitatifs peuvent être purs
(variables nominales) i.e. que les modalités ne possèdent pas de structure d'ordre ou ordonnés
(variables ordinales) i.e. que les modalités qualitatives sont ordonnées. Il est aisé de
comprendre que les données à caractère qualitatif doivent être adaptées pour les méthodes
numériques. Les méthodes d'analyse de données supposent souvent une organisation des
données particulière, naturelle, mais parfois difficile à réaliser selon l'application et les
données. Le choix d'un tableau permet une organisation dans le plan de toutes les données et
ainsi de traiter simultanément toute l'information. Ainsi la plupart des méthodes nécessitent
une organisation des données présentée par le suivant. Nous verrons plus tard que selon les
données ce tableau est quelque peu modifié, mais l'idée de tableau reste présente dans toutes
les méthodes d'analyse de données.
Tableau : Représentation des données
Objectifs
Les objectifs que se sont fixés les chercheurs en analyse de données sont donc de
répondre aux problèmes posés par des tableaux de grandes dimensions. Les objectifs sont
souvent présentés en fonction du type de méthodes, ainsi deux objectifs ressortent : la
visualisation des données dans le meilleur espace réduit et le regroupement dans tout l'espace.
Les méthodes de l'analyse de données doivent donc permettre de représenter
synthétiquement de vastes ensembles numériques pour faciliter l'opérateur dans ses décisions.
En fait d'ensembles numériques, les méthodes d'analyse de données se proposent également de
traiter des données qualitatives, ce qui en fait des méthodes capables de considérer un grand
nombre de problèmes. Les représentations recherchées sont bien souvent des représentations
graphiques, comme il est difficile de visualiser des points dans des espaces de dimensions
supérieures à deux, nous chercherons à représenter ces points dans des plans. Ces méthodes ne
se limitent pas à une représentation des données, ou du moins pour la rendre plus aisée, elles
cherchent les ressemblances entre les individus et les liaisons entre les variables. Ces
proximités entre individus et variables vont permettre à l'opérateur de déterminer une typologie
des individus et des variables, et ainsi il pourra interpréter ses données et fournir une synthèse
des résultats des analyses. Nous voyons donc que les deux objectifs précédemment cités sont
très liés voir indissociables, ce qui entraîne souvent l'utilisation conjointe de plusieurs
méthodes d'analyse de données.
Méthodes
L'analyse de données regroupe deux familles de méthodes suivant les deux objectifs
cités précédemment :
- Une partie des méthodes cherche à représenter de grands ensembles de données par peu
de variables i.e. recherche les dimensions pertinentes de ces données. Les variables
ainsi déterminées permettent une représentation synthétique recherchée. Parmi ces
méthodes de nombreuses analyses sont issues de l'analyse factorielle, telles que
l'analyse en composantes principales (ACP), l'analyse factorielle des
correspondances (AFC), l'analyse factorielle des correspondances multiples, ou
encore l'analyse canonique.
L'analyse en composantes principales est l'une des méthodes les plus employées. Elle
est particulièrement adaptée aux variables quantitatives, continues, a priori corrélées
entre elles. Une fois les données projetées dans différents plans, les proximités entre
variables s'interprètent en termes de corrélations, tandis que les proximités entre
individus s'interprètent en termes de similitudes globales des valeurs observées.
L'analyse factorielle des correspondances (ou analyse des correspondances binaires) a
été conçue pour l'étude des tableaux de contingence obtenus par croisement de variables
qualitatives. Cette analyse permet donc de traiter des variables qualitatives et est surtout
adaptée à ce type de variables. Dans cette approche, les lignes et les colonnes ont un
rôle symétrique et s'interprètent de la même façon. L'analyse factorielle des
correspondances multiples est une extension de l'analyse factorielle des
correspondances qui ne permet que le croisement de deux variables qualitatives. Elle
est donc adaptée à la description de grands tableaux de variables qualitatives par
exemple pour le traitement d'enquêtes. L'analyse canonique est très peu utilisée en
pratique, son intérêt porte sur son aspect théorique. Elle cherche à analyser les relations
entre deux groupes de variables de nature différente. De ce fait l'analyse factorielle des
correspondances peut être vu comme analyse canonique particulière.
- Une autre partie des méthodes cherche à classer les données de manière automatique.
Ces méthodes sont complémentaires avec les précédentes pour synthétiser et analyser
les données et répondre plus particulièrement à l'objectif fixé de caractériser les
proximités entre individus et celles entre variables. Ces méthodes de classification sont
soit à apprentissage supervisé (i.e. qui nécessitent une base de données d'apprentissage
ces méthodes sont appelées en statistique les analyses discriminantes) soit à
apprentissage non-supervisée (i.e. qui ne nécessitent aucune donnée préalable).
- Parmi les méthodes issues de l'analyse discriminante et directement rattachées à
l'analyse de données il y a l'analyse linéaire discriminante, la régression logistique,
les k plus proches voisins ou encore les arbres de décision. D'autres méthodes issues
de l'intelligence artificielle et du monde de la reconnaissance des formes peuvent être
rattachées à l'analyse discriminante telles que le perceptron multicouche (et les autres
réseaux de neurones) et les chaînes de Markov ou encore issues de la théorie de
l'apprentissage statistique telle que les machines à vecteurs de supports. Si ces
dernières ne sont pas toujours considérées comme faisant partie de l'analyse de données,
elles sont parfaitement intégrées dans le data mining.
L'analyse linéaire discriminante est aussi appelée analyse factorielle discriminante car
elle est en fait une analyse en composantes principales supervisée. Elle décrit les
individus en classes (celles-ci sont données par une variable issue de l'apprentissage) et
ensuite affecte de nouveaux individus dans ces classes. C'est donc une méthode à la fois
descriptive et prédictive. Elle permet de traiter aussi bien des variables quantitatives
que qualitatives.
La régression logistique consiste à exprimer les probabilités a posteriori d'appartenance
à une classe p(C=x) comme une fonction de l'observation.
L'approche des k plus proches voisins repose sur l'idée simple d'attribuer un nouvel
individu à la classe majoritaire parmi ses k plus proches voisins (individus de la base
d'apprentissage les plus proches au sens d'une certaine distance).
Les arbres de décision nécessitent souvent une construction délicate et difficilement
généralisable si les données d'apprentissage sont peu représentatives de la réalité. La
méthode CART (Classification And Regression Tree) possède une construction d'arbre
aux propriétés intéressantes pour la segmentation.
- Les méthodes de classification automatique ne nécessitant pas d'apprentissage offrent
un intérêt important lorsque les données sont complètement inconnues. Elles permettent
ainsi de dégager des classes qui ne sont pas évidentes a priori. Les deux principales
méthodes développées sont la méthode des centres mobiles (apparentée à la méthode
des k-means ou des nuées dynamiques (comme un cas particulier)) et la classification
hiérarchique ascendante ou descendante. Nous pouvons également citer les approches
fondées sur les graphes et hypergraphes.
La méthode des centres mobiles consiste à associer les individus à des centres de classes
choisis aléatoirement, puis à recalculer ces centres jusqu'à obtenir une convergence. La
difficulté consiste dans un choix astucieux des centres au départ pour une convergence
plus rapide et dans le choix d'une distance appropriée. La classification hiérarchique
ascendante (resp. descendante) consiste à regrouper les individus selon leur
ressemblance (resp. dissemblance). Toute la difficulté est dans la définition d'une
mesure de ressemblance et de la distance associée.
Ci-dessous nous donnons le principe général de deux des méthodes d’analyse de données les
plus populaires.
Principe de l’ACP
L’ACP consiste à remplacer une famille de variables par de nouvelles variables de
variance maximale, non corrélées deux à deux et qui sont des combinaisons linéaires des
variables d’origine. Ces nouvelles variables, appelées composantes principales, définissent des
plans factoriels qui servent de base à une représentation graphique plane des variables initiales.
L’interprétation des résultats se restreint généralement aux deux premiers plans factoriels, sous
réserve que ceux-ci expliquent la majeure partie de la variance du nuage des variables initiales.
L'Analyse Factorielle des Correspondances (ou analyse des correspondances binaires) a été
conçue pour l'étude des tableaux de contingence obtenus par croisement de variables qualitatives.
Cette analyse permet donc de traiter des variables qualitatives et est surtout adaptée à ce type de
variables. Dans cette approche, les lignes et les colonnes ont un rôle symétrique et s'interprètent de
la même façon. L'Analyse Factorielle des Correspondances Multiples est une extension de l'analyse
factorielle des correspondances qui ne permet que le croisement de deux variables qualitatives. Elle
est donc adaptée à la description de grands tableaux de variables qualitatives par exemple pour le
traitement d'enquêtes.
Principe de l’AFC
Le principe de ces méthodes est de partir sans a priori sur les données et de les décrire
en analysant la hiérarchisation de l'information présente dans les données. Pour ce faire, les
analyses factorielles étudient l'inertie du nuage de points ayant pour coordonnées les valeurs
présentes sur les lignes du tableau de données.
La « morphologie du nuage » et la répartition des points sur chacun de ces axes d'inertie
permettent alors de rendre lisible et hiérarchisée l'information contenue dans le tableau.
Mathématiquement, après avoir centré et réduit le tableau de données que l'on a affecté d'un
système de masse (par exemple, les sommes marginales de chaque ligne), on calcule la matrice
d'inertie associée et on la diagonalise (la répartition de l'information selon les différents axes
est représentée par l'histogramme des valeurs propres). On effectue alors un changement de
base selon ses vecteurs propres, c'est-à-dire selon les axes principaux d'inertie du nuage de
points. On projette alors les points figurant chaque ligne sur les nouveaux axes. L'ensemble de
l'information est conservée, mais celle-ci est maintenant hiérarchisée, axe d'inertie par axe
d'inertie. L'histogramme des valeurs propres permet de voir le type de répartition de
l'information entre les différents axes et l'étendue en dimension de celle-ci.
Le premier axe d'inertie oppose les points, c'est-à-dire les lignes du tableau ayant les
plus grandes distances ou « différences ». La première valeur propre d'inertie, (associée à ce
premier axe) mesure la quantité d'information présente le long de cet axe, c'est-à-dire dans cette
opposition. On analyse ainsi les différents axes, en reconstituant progressivement la totalité des
données.
Plusieurs méthodes d'analyse des correspondances existent, qui diffèrent par le type de
représentation de l'information, c'est-à-dire de métrique, ou de système de masse qu'elles
utilisent.
L'analyse factorielle des correspondances AFC développée par Jean-Paul Benzecri et
ses collaborateurs emploie la métrique du chi-deux : chaque ligne est affectée d'une masse qui
est sa somme marginale, le tableau étudié est le tableau des profils des lignes, ce qui permet de
représenter dans le même espace à la fois les deux nuages de points associés aux lignes et aux
colonnes du tableau de données ; elle est par ailleurs très agréablement complétée par des outils
de classification ascendante hiérarchique (CAH) qui permettent d'apporter des visions
complémentaires, en particulier en construisant des arbres de classification des lignes ou des
colonnes.
Pour chaque point représentatif des lignes ou des colonnes du tableau de données,
nouvel axe par nouvel axe, on s'intéresse à ses nouvelles coordonnées, au cosinus carré de
l'angle avec l'axe (ce qui est équivalent à un coefficient de corrélation), ainsi qu'à sa
contribution à l'inertie expliquée par l'axe (c'est-à-dire à sa contribution à la création de l'axe).
Deux contraintes particulières sur les données sont à signaler : d'une part, les tableaux
ne peuvent comporter de cases vides et d'autre part, seules des valeurs positives sont permises.
De plus, compte tenu de la métrique du chi-deux employée par l'AFC, cette méthode accorde
une importance plus grande aux lignes de somme marginale élevée. Si nous utilisons des
tableaux quantitatifs et souhaitons équilibrer la contribution de chaque ligne au calcul de
l'inertie, nous devons transformer le tableau pour assurer à chaque ligne une somme marginale
égale. Pour ce faire, on peut dédoubler chaque ligne, en lui adjoignant un tableau de
complément. À chaque valeur fij, on fait correspondre une valeur dédoublée k-fij, avec k ⩾
max(fij).
Par l'AFC, il est tout autant possible d'analyser des tableaux contenant des mesures
quantitatives que des indications qualitatives, (par exemple une donnée « couleur »), ces deux
types ne pouvant être mélangés. Un cas particulier de la deuxième catégorie de tableau est
constituée par les tableaux « disjonctifs » ; plusieurs variables constituent les colonnes : elles
sont toutes découpées en plusieurs modalités, dont une et une seule est vraie par individu. Lors
d'une analyse factorielle, on peut rajouter des données « supplémentaires », c'est-à-dire que l'on
ne fait pas intervenir dans le calcul de l'inertie, mais que l'on projette sur les axes.
Les logiciels
Domaine d’applications
Aujourd'hui les méthodes d'analyse de données sont employées dans un grand nombre
de domaines qu'il est impossible d'énumérer. Actuellement ces méthodes sont beaucoup
utilisées en marketing par exemple pour la gestion de la clientèle (pour proposer de nouvelles
o res ciblées par exemple). Elles permettent également l'analyse d'enquêtes par exemple par
l'interprétation de sondages (où de nombreuses données qualitatives doivent être prises en
compte). Nous pouvons également citer la recherche documentaire qui est de plus en plus utile
notamment avec internet (la di-culté porte ici sur le type de données textuelles ou autres). Le
grand nombre de données en météorologie a été une des première motivation pour le
développement des méthodes d'analyse de données. En fait, tout domaine scienti que qui doit
gérer de grande quantité de données de type varié ont recours à ces approches (écologie,
linguistique, économie, etc) ainsi que tout domaine industriel (assurance, banque, téléphonie,
etc). Ces approches ont également été mis à profit en traitement du signal et des images, où
elles sont souvent employées comme prétraitements (qui peuvent être vus comme des filtres).
En ingénierie mécanique, elles peuvent aussi permettre d'extraire des informations
intéressantes sans avoir recours à des modèles parfois alourdis pour tenir compte de toutes les
données.
La recherche de l’innovation
La création de la valeur
Deux manières de créer de la valeur grâce au Big Data sont :
- La conception de nouveaux produits. Les grands acteurs du Web aujourd'hui sont des
exemples suivis par des centaines de startups en Europe et aux USA. Les domaines
touchés sont immenses et même dans des métiers connus, ces produits peuvent apporter
une étendue de vision et de justesse très appréciée, comme dans le domaine bancaire
ou celui de l'assurance en fournissant le produit réellement attendu par le public.
- L'angle analytique en élargissant le champ d'investigation à des données qui n'étaient
pas accessibles sur d'autres outils. Par exemple, la mise en relation de données
disponibles sur des réseaux plus personnels (réseaux sociaux) pour déterminer
l'écosystème autour du client, son réseau, ses influences et celui des ventes potentielles
en le reliant avec le contexte géographique et la proximité du réseau des magasins.
C'est-à-dire construire les conditions favorables pour assurer le meilleur accueil du
produit auprès du client.
Le déploiement de tels outils ne peut se faire sans effort. L'émergence du Big Data en
entreprise doit impérativement bénéficier de changements culturels profonds afin qu'il soit un
succès (la section 2.7 reviendra sur le sujet).
La promotion des valeurs telles que celles de l'agilité et la flexibilité est indispensable,
alors que souvent elles sont opposées aux modes d'organisations pyramidales actuels.
L'innovation portée par ces approches Big Data doit reposer sur l'ambition et la confiance des
structures managériales.
Les cycles courts de test doivent stimuler la créativité dans les équipes et de nombreux
efforts doivent être maintenus pour sortir de la culture de l'échec trop souvent présente dans les
entreprises françaises. C'est à ce prix que de nouvelles opportunités s'offriront aux équipes
s'attelant aux défis du Big Data.
Afin de mieux cerner les caractéristiques du Big Data des spécialistes d'IBM ont
proposé trois propriétés qui les caractérisent à des degrés divers, il s'agit du volume, de la
vélocité et de la variété. On les appelle communément les 3V. D'autres dimensions sont
fréquemment rajoutées, mais on ciblera ici la présentation sur ces trois propriétés.
Le volume
L'une des technologies aujourd'hui couramment utilisées pour y faire face est le
framework Hadoop. Le sujet sera abordé en détail aux chapitres 4 et 9. Disons simplement ici
que le stockage est assuré par un système de fichiers distribué appelé HDFS et que la
parallélisation des traitements exploite un pattern appelé MapReduce. Tous les problèmes de
parallélisation ne peuvent exploiter l'algorithme MapReduce, mais lorsque c'est le cas, celui-ci
offre un e scalabilité quasi infinie. Hadoop est aujourd'hui un projet de la fon dation Apache.
La version 2.0 de Hadoop réutilise la gestion distribuée des ressources développées pour
exécuter MapReduce pour permettre l'exécution d'autres schémas de calcul, plus généraux.
Hadoop est aujourd'hui disponible dans le cloud, la solution Elastic Map Reduce de Amazon
est un exemple.
La vélocité
La variété
L'une des grandes ambition s du Big Data est de proposer le recoupement
d'informations ou la mise en correspondance de données d'origines très diverses. Ce serait
même l'une des principales sources de valeur. Pourtant, il ne faut pas se leurrer, parmi les 3V
c'est le seul pour lequel il n'existe à l'heure actuelle aucune méthode universelle. C'est sans nul
doute le problème le plus épineux car le traitement et le recoupement de données de sources et
de formats variés demandent une étude adaptée à chaque situation.
Un exemple typique d'utilisation de données hétéroclites est celui d'un croisement entre
des données contenues dans un CRM (gestionnaire de la relation client), des données de
géolocalisation, des données extraites d'un réseau social qui, collectivement, permettront
d'enrichir un profil utilisateur avec des informations à caractère affectif très souvent corrélées
au déclenchement d'un acte d'achat.
Pour faire face à cette diversité de structures, certains systèmes NoSQL (voir le chapitre
3) utilisent des schémas de données qui s'écartent du modèle relationnel classique. Les bases
orientées graphes ou les bases orientées colonnes sont des exemples.
La prise en compte de la diversité des formats de données fera typiquement partie de la
phase de préparation des données.
Voici quelques exemples d'applications du Big Data en entreprise. La liste est loin d'être
exhaustive :
Analyser les données en mouvement
- La surveillance d'un grand nombre de nœuds de données (cloud, hébergement,
traitements répartis).
- La sécurité électronique et la détection de fraude dans un contexte banque assurance.
- Le suivi en temps réel et à forte réactivité de clients (commerce de détail,
téléassistance).
- Le pilotage avancé de systèmes complexes (recherche en astronomie et en physique des
particules, domaine spatial, forces armées).
- L'analyse des logs (voir chapitre 10) et surveillance des processus.
- Le tracking des identifiants, connexions et pistage des transports (avec le RFID par
exemple).
- La logistique avancée avec ou sans contact physique.
Analyser une grande variété de données
- Le décodage et l'analyse des humeurs sur les réseaux sociaux ou dans la blogosphère.
- L'accostage avec la stratégie d'entreprise. Le suivi de phénomènes propagés (santé :
épidémies, intrusions, ingénierie sociale, terrorisme).
- L'analyse multimédia à partir de formats vidéo, audio, texte, photos (sécurité,
traductions, médiamétrie).
Traiter un volume conséquent de données
- Rapprochement d'objets métiers : produits, clients, déploiement, stocks, ventes,
fournisseurs, lieux promotionnels.
- Détection de fraudes, repérage de clients indélicats ou manipulateurs.
- Toxicité, défense des intérêts d'un groupe, feedback de crise.
- Management du risque, prise de décision sensible appuyée de modèles prévisionnels.
- Analyse de contexte, d'environnement.
Découvrir et expérimenter
- Approcher la notion de désir ou de sentiment déclencheur d'action.
- Cerner l'entourage social d'un client, les conditions favorables.
- Expérimenter l'impact d'un nouveau produit, son ressenti.
- Mesurer l'efficacité d'une stratégie de conquête, mesurer des écarts ou des erreurs de
positionnement d'image.
- Profilage de nouveaux comportements.
- Identification de nouveaux indicateurs d'influence.
Apparus dans le sillage du mouvement Big Data, les systèmes NoSQL sont des
systèmes stockage d'un genre nouveau. Ce chapitre décrit le contexte historique dans lequel
ils sont apparus, comment et dans quelle mesure ils parviennent à résoudre les problèmes
spécifiques au Big Data. Leurs caractéristiques seront comparées à celles des SGBDR
classiques. Nous décrirons ensuite quatre catégories de systèmes NoSQL : les entrepôts
clé,valeur, les bases orientées documents, les bases de données orientées colonnes et enfin les
bases de données orientées graphes. L'accent est mis sur la compréhension des différents
modèles de données et sur les compromis qu'ils impliquent en termes de disponibilité, de
performance et de tolérance aux pannes. Des exemples d'usages seront proposés à chaque fois.
Une structure : plus précisément la structure logique selon laquelle les données sont enregistrées
sur disque. Dans le cas des SGBDR par exemple, il s'agit de tables constituées de lignes et de
colonnes. Pour une base de données de type document il s'agit d'une collection de documents aux
formats JSON ou XML indexés par une clé. Pour une base de données objet la structure est celle
d'une collection de grappes et des hiérarchies d'objets, etc.
Des contraintes : elles définissent les données que l'on considère valides. À titre d'exemple, une
contrainte pour un SGBDR est que tous les enregistrements possèdent impérativement les mêmes
colonnes. Le schéma d'un SGBDR contient la description de toutes les contraintes, qu'il s'agisse de
limites sur des valeurs numériques, de la syntaxe admise pour des chaînes de caractères ou
d'intégrité des références.
Des opérations : elles définissent comment on lit les données, com ment on les met à jour et
comment les supprime. Dans le cas d'un SGBRD et à un haut niveau d'abstraction, elles sont
définies par le langage de requêtes SQL. Au niveau de l'implémentation, il s'agira plutôt des
opérations de l'algèbre relationnelle. Pour une base de données orientée graphe, une opération
pourra consister à récupérer, par exemple, tous les parents d'un certain nœud.
Les règles de l'algèbre usuelle, celles qui permettent par exemple de transformer une
formule faisant appel à quatre opérations élémentaires, sont utiles car elles permettent de
simplifier une expression a priori complexe comme x - (y/y) - x + 1 en une autre beaucoup,
plus simple, 0 en l'occurrence. De manière similaire, l'étude de l'algèbre des relations effectuées
par Codd a démontré qu'il est possible de transformer une succession d'opérations en une autre,
équivalente, non pour la simplifier, mais pour optimiser les ressources utilisées comme le temps
de calcul et la quantité de mémoire utilisée. Les SGBDR prennent en charge cette tâche
d'optimisation du plan d'exécution. Le problème est complexe et des années de R&D ont été
investies par les éditeurs pour parvenir à des solutions à la fois robustes et performantes.
La valeur ajoutée d'un SGBDR ne se limite pas cependant à ce travail d'optimisation
puisqu'un développeur n'a nullement à se soucier d'écrire des relations algébriques. Plus
simplement, il utilise un langage déclaratif qui lui permet de spécifier la réponse qu'il cherche
plutôt que la manière d'effectuer cette recherche. C'est le rôle du langage SQL devenu depuis
lors un quasi standard dans l'industrie informatique.
Les SGBDR, enfin, gèrent les transactions. Une transaction correspond par exemple à
un transfert d'argent entre deux comptes bancaires ou à la réservation d'un billet d'avion et d'une
chambre d'hôtel. Réalisée comme une succession d'opérations sur une ou plusieurs bases de
données, son rôle est de garantir que, soit toutes les opérations qu'elle englobe sont effectuées
avec succès, soit qu'aucune opération n'est effectuée. Les transactions, tout comme les
contraintes d'intégrité imposées par le schéma du SGBDR, contribuent ainsi à garantir la
cohérence des données hébergées.
Les exigences qui caractérisent une transaction SGBDR sont définies par le célèbre
acronyme ACID. Rappelons-en brièvement la signification :
- Atomicité : désigne le caractère indivisible d'une transaction évoqué plus haut.
- Cohérence : désigne l'objectif même des transactions, à savoir laisser les données dans
un état cohérent.
- Isolation : deux transactions simultanées A et B n'interfèrent jamais. La transaction B
ne peut ni voir ni modifier les données sur lesquelles A opère tant que A n'a pas été
validé.
- Durabilité : une fois une transaction validée, les données doivent être permanentes.
Ces facteurs à eux seuls ne suffisent pas cependant à expliquer le demi-siècle d'hégémonie
des SGBDR. Des facteurs de politique interne aux DSI entrent aussi en considération. Le fait
que les SGBDR soient progressivement devenus un mécanisme d'intégration pour une majorité
de DSI est l'un de ces facteurs. Remplacer un système comme un SGBDR auquel de lourds
investissements ont été consentis est dès lors devenu de plus en plus problématique. De ce point
de vue, il n'est pas exagéré d'affirmer que la domination des SGBDR a probablement entravé
l'avènement d'autres solutions parfois plus rationnelles et plus performantes.
Donnons un exemple. Les SGBDR sont notoirement mal adaptés lorsqu'il s'agit de
sauvegarder et de récupérer des grappes d'objets tels que celles qui sont manipulées par des
langages objet comme Java ou C#. C'est le célèbre problème du « mismatch d'impédance ».
Alors que les bases de données objets apparues au milieu des années 1990 promettaient
d'éradiquer ce genre de misères, l'industrie IT a préféré développer des frameworks d'un
maniement souvent complexe, comme Hibemate, pour pallier ces inconvénients. Sans même
parler du coût de l'inélégance de ces solutions bâtardes, leur coût en complexité et en
abstraction a finalement été jugé moins élevé que la migration complète d'un SGBDR.
Les SGBDR, assurément, ont la peau dure ! Ni les bases de données objets, plus
performantes, ni les sommes astronomiques englouties dans des projets d'intégration sans fin
n'ont eu raison d'elles. Le coup de boutoir viendra d'ailleurs. Au début des années 2 000, les
applications web à très grande échelle et l'émergence des réseaux sociaux ont fini par changer
la donne.
Le Mouvement NoSQL
Avec ces nouveaux systèmes, sont apparus de nouveaux besoins métiers et de nouvelles
exigences techniques. Via l'isolation des transactions et l'application de contraintes d'intégrité
les SGBDR garantissent des données avec un haut niveau de cohérence. Dans les applications
e- business à grande échelle comme Amazon ou dans les réseaux sociaux comme Twitter, les
priorités sont cependant très différentes. Pour une entreprise comme Amazon, par exemple,
une plateforme indisponible, ne serait-ce que quelques minutes, est inenvisageable car elle
causerait la perte de dizaine de milliers de commandes. Priorité absolue est donc donnée aux
performances et à la disponibilité. Celles- ci sont assurées aujourd'hui par la mise en œuvre
d'architectures distribuées sur des centaines voire des milliers de machines. Dans un tel
contexte, parvenir à parfaite intégrité des données et une stricte isolation des transactions est
extrêmement difficile et coûteux. Le volume des échanges d'information nécessaires pour
parvenir à une synchronisation parfaite des nœuds d'un SGBDR distribué limite en effet le
nombre de serveurs à quelques dizaines, tout au plus. De manière encore plus significative
encore, l'ancienne exigence de cohérence des données ne correspond souvent plus aux priorités
du business. Qui se soucie vraiment que la liste des commentaires d'un post sur un réseau social
soit vue de la même manière au même instant par tous les utilisateurs ?
Naturellement l'inconsistance des données pourra avoir des conséquences qu'il faudra
traiter le moment venu. Une même chambre a-t-elle été réservée par deux clients sur Booking.
com ? U n même article a-t- il été commandé sur Amazon par plusieurs clients à qui l'on a
indiqué qu'il était disponible alors qu'il ne restait plus qu’un exemplaire ? Dans chacune de ces
situations la solution est d'ordinaire humaine et pragmatique. Dans le cas d'Amazon par
exemple, les clients lésés se verront contactés par le service client qui, pour atténuer leur
courroux, leur présentera un mot d'excuse assorti d'un chèque à h auteur du préjudice subi.
Quant au surbooking pour des billets d'avion ou des chambres d'hôtel, on peut imaginer des
partenariats avec d'autres compagnies aériennes ou un quota de chambres réservé pour des
situations d'urgence. Quoi qu'il en soit, la solution dans ce genre de situations n'est pas
technique. C'est aux métiers de prendre une décision éclairée basée sur une analyse
comparative entre les c oûts des inconsistances qu'il faudra inévitablement gé re r avec les c
oûts d'une indisponibilité chronique d'un système pénalisé par l'exigence d'une cohérence de
tous les instants. On retrouve ici la distinction usuelle entre l'approche pessimiste de la gestion
des conflits, qui cherche à les éviter au moyen de verrous, et l'approche optimiste, qui cherche
à détecter les conflits et à les traiter au moment où ils surviennent, le cas échéant manuellement.
Les remarques qui précèdent n'impliquent pas pour autant que toute notion de cohérence soit
désormais caduque. Dans les faits, l'exigence de cohérence est le plus souvent remplacée par
une contrainte plus faible dite de cohérence à terme ( ou eventual consistency en anglais).
Par cohérence à terme (eventual consistency) on entend le fait qu'un système distribué converge
à longue échéance vers un état où tout utilisateur verra chaque donnée dans l'état où l'a laissée
la dernière mise à jour. Une propriété qui contraste avec la consistance permanente prônée par
les systèmes qui vérifient les propriétés ACID de manière stricte.
Un nouvel acronyme, sous forme de jeu de mot un peu alambiqué, a été forgé pour caractériser
ces systèmes : BASE pour Bosicolly Avo!loble Soft Stote Eventuol Consistency.
Le « théorème » CAP
Même si les termes de disponibilité et de cohérence n'ont pas été définis avec une
grande rigueur, la discussion qui précède suggère qu'il est possible de choisir, selon les
circonstances, entre ces deux caractéristiques. Lorsqu' un système est distribué il convient de
prendre en compte une troisième caractéristique : la tolérance aux partitions accidentelles.
Sur un plan intuitif, une base de données distribuée devrait idéalement posséder les trois
caractéristiques suivantes :
- Cohérence (consistency) : chaque donnée est présente dans la même version sur
tous les nœuds du réseau. Il n'y a pas de retard dans la propagation des mises à jour.
- Disponibilité (availability) : l'application est accessible à tout instant et chaque
requête reçoit une réponse qui confirme si elle a été traitée avec succès ou non.
- Résistance au morcellement (partition toleronce) : le système doit pouvoir
continuer à fonctionner lorsque différents nœuds sont isolés consécutivement à
une rupture du réseau.
En 2000, lors d'un symposium consacré au calcul distribué à l'université de Berkeley,
l'un des participants, Eric Brewer, proposa une conjecture qui stipulait que parmi les trois
caractéristiques précédentes, seules deux pouvaient être réalisées simultanément. Bien
qu'aucun des trois termes invoqués dans cette conjecture n'ait été défi ni avec la précision
qu'exigerait une formulation mathématique, l'expression « théorème CAP » est restée. Des
tentatives de formulations plus précises et des démonstrations partielles ont bien été proposées
mais aucune ne répond aux critères d'un authentique théorème. Le « théorème » CAP est donc
à considérer comme une intuition utile, en partie folklorique, concernant les systèmes
distribués.
L'intuition qui se cache derrière cette affirmation est en réalité assez simple à saisir.
Imaginons pour cela un processus de réservation d'un billet d'avion qui implique simultanément
deux clients. Imaginons par ailleurs que le système de réservation soit distribué sur plusieurs
nœuds et que les nœuds qui traitent les deux requêtes soient distants. En cas de rupture de
connexion entre les deux serveurs l’alternative est alors la suivante :
- soit l'on exige une stricte cohérence des donnée s auquel cas il faudra attendre le
rétablissement de la connexion ;
- soit l'on exige une disponibilité du système à tout instant et dans ce cas il faudra
réconcilier les donnée s incohérentes ultérieurement et assumer les risques de cet
ajustement différé.
Dans la réalité le compromis est plus subtil que ne le laisse croire l’affirmation
strictement binaire du « théorème CAP ». La cohérence et la disponibilité, ou plus précisément
le temps de latence, sont toutes deux des variables continues que l'on peut ajuster selon les
besoins. En fonction des priorités, ce choix pourra d'ailleurs être adapté au type d'opération
effectuée. Cependant, quoi qu'il en soit, disposer d'un haut niveau de cohérence parmi les
donnée s répliquées implique forcément un échange d'information important entre ces nœuds,
ce qui occasionnera un temps de latence accru.
Dans une approche plus fine de la notion de cohérence des données il faudrait aussi
spécifie r le niveau de granularité des donnée s sur lesquelles opèrent les transactions. Là encore
il ne s'agit pas d'une variable binaire. En effet, pour prémunir un système des modifications
intempestives de deux transactions concurrentes qui risqueraient de le laisser dans un état
incohérent, la première transaction peut poser un des verrous sur les données qu'elle manipule.
Selon le degré d'isolation souhaité, ces verrous pourront affecter soit toutes les tables
concernées par une trans action, soit tous les enregistrements d'une t able en particulier ou
seulement certains agrégats dont on souhaite à tout prix préserver la cohérence. Dans la section
suivante, lorsque nous d écrirons les différents types de systèmes NoSQL, nous indiquerons à
chaque fois en quoi consiste, lors qu'il existe, l'agrégat atomique. Au-delà, la cohérence devra
être assurée par l'application cliente ou, comme on l'a vu, par une intervention humaine.
Jusque-là nous n'avons proposé aucune définition des bases de données NoSQL, et pour
cause, car celle-ci s'avère particulièrement délicate. Aucun concept clair en effet ne les
caractérise vraiment et le sigle NoSQL suggère tout au plus, ce qu'elles ne sont pas. Apparues
ces dernières années dans le contexte d'application e-commerce à grande échelle, les priorités
auxquelles elles répondent sont les suivantes :
- Distribuer les traitements et le stockage sur des centaines voire des milliers de nœuds
constitués de serveurs banalisés.
- Donner la priorité aux performances et à la disponibilité sur l'intégrité des données.
- Traiter efficacement les données non structurées ou seulement partiellement
structurées.
Bien qu'une définition honnête soit impossible à notre avis il est possible néanmoins
d'identifier un certain nombre de points communs à ces systèmes :
1. Ces systèmes sont le plus souvent clusterisables et permettent une montée en charge
approximativement linéaire. En d'autres termes, un doublement du nombre de serveurs
permet, grosso modo, de traiter deux fois plus de requêtes dans un même laps de temps.
2. Ils sont en règle générale dépourvus de schémas, inadaptés aux données non structurées.
Cette caractéristique leur confère d'ailleurs un a tout significatif vis-à-vis des SGBDR
: ils permettent une grande rapidité de développement précisément à cause de cette
simplicité. De ce fait ils sont particulièrement adaptés aux méthodes de développement
agiles.
3. Ils sont souvent dépourvus de transactions au sens habituel du terme, ou alors proposent
des transactions qui garantissent seulement l'intégrité de certains agrégats de données
naturels. Nous y reviendrons dans la prochaine section consacrée à une classification
de ces systèmes.
4. I ls sont non relationnels dans le sens où ils n'offrent pas de jointures.
5. Beaucoup de ces systèmes sont aujourd'hui proposés en open source.
Que dire alors du sigle « NoSQL » ? Le moins que l'on puisse dire est que cette
dénomination est malheureuse. D'une part, aux dires de certains, le « No » ne voudrait pas
forcément dire « no », il pourrait signifier aussi « not only ». La partie « SQL » est plus
trompeuse encore puisque ce n'est pas tant l'absence du langage SQL qui est significative pour
beaucoup de ces systèmes, mais plutôt l'absence de transactions au sens usuel du terme. En
réalité ce sigle n'a pas été choisi suite à de profondes réflexions conceptuelles. Il s'agit d'un
simple hashtag utilisé en 2009 pour notifier sur Twitter l'organisation d'un débat à San
Fransisco sur ces bases de données d'un nouveau genre.
Figure : Parmi toute la panoplie des systèmes NoSQL, l'entrepôt clé-valeur est le système le
plus rudimentaire. Il s'agit d'une simple collection de couples clé-valeur enregistrée sur le
disque.
Les opérations que l'on peut effectuer sur un tel entrepôt sont : la récupération de la
valeur pour une clé donnée, la mise à jour, la création ou la suppression d'une valeur pour une
certaine clé. La base ne « connaît » pas la structure des données, charge étant à l'application
cliente d'interpréter le contenu des valeurs. La contrepartie d'une telle rusticité qui n'autorise
l'accès aux données que par le biais d'une clé primaire est la performance de ces systèmes.
Dans un tel contexte, stocker toutes les données dans un seul espace est générale, ment
considéré comme une mauvaise pratique car, chaque agrégat ayant potentielle, ment une
structure différente, les risques de conflits entre clés augmentent. Un usage typique d'un ECV
est celui du stockage des sessions de multiples utilisateurs.
Figure : Un identifiant de session fonctionne comme une clé primaire pour désigner la
grappe d'objets associée à une session utilisateur, en l'occurrence un profil utilisateur, de
données de session ainsi qu'une liste d'articles.
Certains entrepôts clé-valeur proposent pour cette raison de partitionner l'espace des
clés en différentes zones dédiées chacune à un type de données spécifique, facilitant ainsi la
sérialisation et la désérialisation par le client de l'ECV. Le modèle de cohérence à terme
(eventual consistance) est celui qui est retenu par une majorité des implémentations d'ECV. Le
paramétrage fin de la consistance peut alors se faire au moyen de trois paramètres :
- Le facteur de réplication qui définit le nombre N de nœuds sur lesquels doivent être
répliquées les données.
- Le quorum d'écriture W qui spécifie le nombre de nœuds dont on exige qu'ils notifient
que les données ont été écrites avec succès pour considérer une opération d'écriture
comme valide.
- Le quorum de lecture R enfin, qui spécifie le nombre de nœuds minimal qu'il convient
d'interroger pour être sûr d'obtenir la dernière version d'une donnée.
On parle deconsistance forte lorsque R + W > N. La montée en charge des ECV est
généralement assurée par un mécanisme dit de sharding (ou de partition horizontale). Alors
que la réplication consiste à enregistrer des copies d'une donnée sur plusieurs nœuds, le
sharding consiste à répartir des données différentes sur des nœuds différents. Dans le contexte
d'un ECV, c'est la valeur de la clé qui déterminera sur quel serveur est hébergée la valeur
associée. Les implémentations les plus répandues des entrepôts clé-valeur sont Riak, Redis,
MemcacheDB et DynamoDB chez Amazon.
Usages
Le stockage de données de session utilisateur est le cas typique d'utilisation d'un
entrepôt clé-valeur. De manière similaire, le stockage des préférences ou des profils des
utilisateurs ou encore les associations entre clients et paniers d'achat des sites d'e-commerce
conviennent bien aux ECV. La structure des données en table de hachage les rend cependant
inadaptés pour retrouver des données à partir d'une valeur plutôt que d'une clé.
Concepts
Sur un plan conceptuel, les bases de données orientées document (BDOD) diffèrent peu
des ECV. Une BDOD peut schématiquement se décrire comme un ECV dont les valeurs sont
des documents semi-structurés. Par ce terme on entend des documents autodescriptifs
généralement écrits avec un format de type XML, J SON ou similaire. Par contraste avec les
SGBDR qui exigent que chaque enregistrement d'une table ait les mêmes colonnes, spécifiées
par un schéma, rien n'exige que les documents stockés dans une BDOD aient tous le même
format.
De ce point de vue, une BDOD est donc beaucoup plus flexible qu'un SGBDR dans la
mesure où il est possible de modifier au coup par coup la structure d'un document sans avoir à
respecter un schéma préétabli. Alors qu'une valeur non définie d'une colonne d'un
enregistrement d'un SGBDR est représentée par la valeur NULL, un document d'une BDOD
ne fera tout simplement pas figurer l'attribut en question.
Pour clarifier la relation entre SGBDR (Oracle) et BDOD (MongoDB).
Les BDOD offrent par ailleurs la possibilité d'examiner le contenu d'un document sans
qu'il soit nécessaire pour autant de le récupérer en intégralité, en quoi elles se distinguent des
ECV. Rappelons que c'est à l'application cliente d'un ECV d'interpréter le contenu d'une valeur.
Dans une BDOD chaque document constitue un élément atomique qui délimite une
frontière transactionnelle naturelle. En règle générale il n'est pas possible d'impliquer plusieurs
documents comme le ferait un SGBDR sur différents enregistrements.
Figure : Une base orientée document. Les documents peuvent chacun avoir leur propre
structure.
Tableau : Equivalences entre SGBDR et BDOD
Figure : Lorsque les super-colonnes et les colonnes sont statiques la structure de la famille de
colonnes est celle d'une table de SGBDR classique.
Figure : Lorsque les super-colonnes sont statiques et les colonnes dynamiques, ces dernières
permettent de représenter une hashmap associée à chaque clé.
Comme pour les BDOD, il est généralement possible de paramétrer le niveau de cohérence
souhaité, en lecture ou en écriture. En écriture par exemple, Cassandra propose les niveaux
suivants :
- ONE : permet d'optimiser la performance. Il se peut que certaines opé rations d'écriture
soient perdues si le nœud auquel on envoie la requête tombe.
- QUORUM : on exige qu'une opération d'écriture se propage à une majorité de nœuds
du cluster avant d'être validée.
- ALL : on exige que tous les nœuds aient répondu positivement pour qu'une opé ration
d'écriture (ou de lecture) soit validée.
Le nombre de répliques peut être choisi lors de la création du keyspace.
S'agissant des transactions, c'est l'enregistrement qui fait figure de frontière naturelle.
Autrement dit une opération d'insertion ou de mise à jour est atomique au niveau d'un
enregistrement mais pas au-delà.
La disponibilité est assurée par un mécanisme de réplication dans un mode pair-à- pair
sans nœud maître.
Les BDOC les plus populaires à l'heure actuelle sont : Cassandra (dont nous avons
repris les concepts et le vocabulaire), HBase, Hypertable (une implémentation open source
inspirée du système propriétaire BigTable de Google), Amazon SimpleDB.
Usages
La flexibilité des BDOC en fait un choix idéal, par exemple, pour stocker des rapports
d'erreur issus de plusieurs applications dont chacune pourra utiliser le groupe de colonnes qui
lui convient. Les blogs avec leurs publications, leurs liens, les rétro-liens ainsi que les
commentaires associés sont particulièrement bien adaptés à l'utilisation d'une BDOC. Les
systèmes de comptage de nombre de visites, comme nous l'avons vu dans le dernier exemple,
peuvent tirer profit de la classification à deux niveaux, par site et par page, que permet le
modèle des colonnes dynamiques.
Usages
A priori tous les domaines métiers qui s'expriment naturellement à l'aide de graphes
sont éligibles à l'utilisation d'une BDOG. I ls sont particulièrement utiles dans les situations où
différentes catégories de liens expriment des appartenances à certains groupes sociaux ou
géographiques. Dans ce dernier cas, l'un des attributs des liens sera la distance qui sépare les
nœuds qu'ils connectent. Tous les systèmes de recommandation ou de détection de fraude qui
ont à tenir compte d'une certaine proximité, géographique, sociale ou autre pourront tirer profit
d'un BDOG.
Résumé
La force du modèle relationnel classique réside avant tout dans la flexibilité de l'usage
de données qu'il permet, et dans les garanties offertes par le caractère ACID des transactions.
Dans le contexte des applications web à grande échelle, ce modèle universel est
désormais remis en question. Les exigences de performance et de disponibilité demandent de
l'abandonner au profit des systèmes dont les modèles de données sont spécifiquement adaptés
aux applications qui les exploitent tout en étant simultanément moins flexible.
Les applications métiers devront par ailleurs prendre en charge tout ou partie de la
gestion de la cohérence des données. Les bases de données NoSQL coexisteront encore pendant
de nombreuses années avec les SGBDR. Le recours à l'option NoSQL se fera avant tout sur la
base d'un examen lucide et chiffré des compromis acceptables entre consistance des données
et disponibilité des systèmes. Il s'agit donc au moins autant d'un choix commercial que d'un
choix technologique.
Chapitre 5 : L’algorithme MapReduce et le
framwork Hadoop
Ce chapitre présente MapReduce, un modèle de programmation, qui a permis
d'automatiser le déploiement de traitements massivement parallèles sur des clusters de
centaines ou de milliers de serveurs peu coûteux. Nous examinerons les atouts et les contraintes
qu'impose ce paradigme de programmation ainsi que ses limitations. Pour nous forger une
intuition sur ses possibilités, nous illustrerons son fonctionnement au moyen de trois exemples
simples. Dans un contexte Big Data, l'algorithme MapReduce à lui seul ne serait pas d'une
grande utilité sans une infrastructure logicielle dédiée, raison pour laquelle nous présenterons
les grandes lignes du fonctionnement de Hadoop, qui est à ce jour la principale implémentation
open source d'une telle infrastructure.
Au chapitre précédent nous avons décrit comment les contraintes propres au Big Data,
notamment celles liées au volume de données et aux performances, ont contribué à faire
émerger une nouvelle classe de systèmes de stockage, les bases NoSQL. Ce chapitre examine
maintenant l'impact de ces contraintes sur les traitements de ces grands volumes de données.
Une des voies praticables pour passer à l'échelle consiste à les paralléliser sur un cluster de
plusieurs centaines ou milliers de machines. Hélas, cette mise en parallèle est en règle générale
une tâche excessivement ardue qui nécessite un savoir faire spécialisé et une longue phase de
conception. De plus, dans les situations où un code non parallélisé existe déjà, un important
travail de réécriture est le plus souvent nécessaire.
Un des progrès les plus significatifs dans l'automatisation de la parallélisation est venu
de travaux de recherches effectués par Google pour les besoins de son moteur de recherche.
Au début des années 2000, des centaines de processus parallèles avaient été conçus par les
ingénieurs de Mountain View pour traiter les quantités pharamineuses d'information récoltées
par les web crawlers du moteur de recherche : création d'annuaires inversés (liste de documents
contenant certains mots clés), analyse des graphes de liens entre documents, identification des
requêtes les plus fréquentes, etc. Bien que tous ces processus aient été conçus à l'origine par
des équipes différentes, les ingénieurs se sont aperçus a posteriori que nombre de ces
programmes mettaient en œuvre une stratégie similaire pour paralléliser les traitements.
C'est ce pattern de répartition des tâches que nous allons décrire dans ce chapitre et que
l'on appelle MapReduce. Après l'avoir défini formellement, nous décrirons trois exemples
d'utilisation élémentaires qui donneront une idée du mode de pensée qu'implique la conception
d'un tel algorithme. La seule logique des traitements, telle qu'elle est prescrite par MapReduce,
ne serait cependant pas d'une grande utilité, du moins dans un contexte Big Data, sans une
infrastructure logicielle qui prend en charge la complexité liée à la distribution des traitements,
à la réplication des données et à la tolérance aux pannes. Nous présenterons pour cette raison
les grandes lignes du fonctionnement de Hadoop, à ce jour l'implémentation open source de
référence d'un tel framework d'exécution distribuée du pattern MapReduce. Le chapitre 9 sera
consacré à une description des principaux éléments de l'écosystème Hadoop.
Ajoutons encore pour être précis, que la définition des abstractions MapReduce a été
inspirée non seulement par une synthèse d'expériences chez Google mais aussi par des travaux
antérieurs dans le domaine de la programmation fonctionnelle.
Le pattern MapReduce
Figure : Les données initiales sont scindées en lots. Chaque lot, aussi appelé splits, est confié
à un mapper qui évalue la fonction map sur chaque enregistrement. Les listes obtenues en
sortie des mappers sont concaténées, classées par valeur de la clé intermédiaire et scindées en
lots par le Framework. C'est la phase dite du shuffle. Les reducers évaluent la fonction reduce
sur des listes de valeurs associées à une même valeur de clé intermédiaire.
Remarque : l'indépendance des traitements map est absolument cruciale puisque c'est elle qui
autorise la mise en parallèle de leur exécution, soit sur des machines différentes, soit au sein
de processus distincts.
Dans une seconde phase, une fois que tous les mappers ont tous achevé leur tâche, les
fonctions « reduce», exécutées par des reducers, agrègent systématiquement toutes les valeurs
intermédiaires associées à une même clé intermédiaire. Pour cela le framework fusionne au
préalable les listes intermédiaires en sortie des mappers, les trie selon la valeur des clés, les
répartit en lots puis enfin les achemine vers les reducers. Chaque lot sera assigné à un seul
reducer et les lots sont constitués de telle manière que les toutes les valeurs associées à une
même clé figurent dans le même lot.
L'opération « reduce » peut donc être envisagée comme une opération de recombinaison
ou d' agrégation des résultats partiels obtenus par les mappers lors de la première phase. Pour
rendre les choses plus concrètes, envisageons le calcul de données agrégées à partir d'un
historique de vente sur plusieurs années, voir la figure suivante. Chaque enregistrement de la
liste correspond à une vente de plusieurs articles. Les seules données qui nous intéressent en
l'occurrence sont les noms des articles, leur prix ainsi que la quantité vendue. Notre objectif est
d'utiliser MapReduce pour calculer le prix de vente total et le nombre de ventes par produit.
Conceptuellement, le calcul se réduit à une longue liste d'additions. La difficulté pratique, n'est
donc pas de nature conceptuelle mais tient au fait qu'en pratique il faut généralement réunir des
données réparties sur un grand nombre de serveurs. La tâche de la fonction map consiste alors
à extraire pour chaque vente, la liste des produits associés à leur prix et au nombre de ventes.
Après un regroupement par nom de produit, pris en charge par le framework, les fonctions
reduce calculeront les deux sommes qui nous intéressent.
Figure : Un exemple de fonctions map et reduce adaptées au calcul d'un prix total et d'une
quantité totale par ventes à partir d'un historique de ventes.
Remarque : l'écriture d'algorithmes MapReduce est une tâche délicate qui ne peut être confiée
qu'à des développeurs spécialisés qui se seront forgé au préalable des intuitions propres à ce
nouveau modèle de programmation. Le plus souvent les tâches complexes à paralléliser sont
converties non pas en un seul job MapReduce mais en une succession de petits jobs plus faciles
à concevoir.
Nous retrouvons au niveau des traitements MapReduce une situation que nous avions
déj à décrite à propos des bases NoSQL. Dans un cas comme l'autre le prix à payer pour la
performance se traduit par un surcroît de complexité du code (celui des fonctions Map et
Reduce en l'occurrence) qui devra être spécifiquement adapté au jeu de données utilisé. La
situation est donc en contraste marqué avec celle des SGBDR où la connaissance du langage
SQL suffisait dans la plupart des cas de figure.
Considérant, d'une part, la disponibilité des compétences SQL et, d'autre part, les
subtilités de la programmation MapReduce, on comprend vite l'intérêt de disposer d'un
mécanisme qui convertirait des scripts écrits dans un langage de haut niveau, dans l'idéal proche
de SQL, en jobs MapReduce. De tels mécanismes de compilation existent. Les plus connus se
nomment Pig et Hive et seront décrits dans d’autres chapitres.
Le Framework Hadoop
Notre présentation de l'algorithme MapReduce s'est limitée jusque-là à ses seuls aspects
logiques, en particulier aux éléments principaux que sont les deux abstractions « map » et «
reduce ». Si la maîtrise de ces API et l'aptitude à les utiliser pour reformuler un problème de
parallélisation sont des compétences indispensables pour quiconque souhaite utiliser
MapReduce, elles ne suffisent pas cependant pour construire un système performant.
En effet, aussi élégantes soient-elles, les abstractions « map » et « reduce » ne masquent
pas, hélas, toute la complexité de la parallélisation d'un calcul. Une connaissance élémentaire
de ce qui se trame dans les coulisses du framework reste in dispensable. En d'autres termes, si
un framework comme Hadoop prend effectivement en charge un grand nombre de tâches de
bas niveau, encore faut-il savoir lesquelles, dans quel ordre celles-ci sont invoquées et quelles
ressources elles consomment. Nous retrouvons, une fois encore, le phénomène de non-
découplage entre les abstractions et leur implémentation lorsqu'il s'agit d'optimiser les
performances.
L'implémentation de l'algorithme MapReduce dépend de l'environnement dans lequel
on souhaite l'exécuter. Dans un contexte Big Data, c'est une implémentation sur un cluster de
serveurs qui nous intéresse. Les deux paragraphes qui suivent présentent les grandes lignes du
fonctionnement de Hadoop, le framework MapReduce le plus populaire à l'heure actuelle
Hadoop est un framework open source écrit en Java et développé sous l'égide de la fondation
Apache depuis 2005. La version 1.0 a vu le jour fin 2011. Actuellement nous sommes à la
version 3.3.
L'unité de travail qu'une application cliente peut exécuter dans Hadoop s'appelle un job
MapReduce. Chaque job est découpé en tâches qui peuvent appartenir à deux catégories : les
tâches map ou les tâches reduce.
L'ensemble des jobs en cours d'exécution par le framework est coordonné et supervisé
par un processus maître appelé le jobtracker. Son rôle est de planifier l'exécution des tâches
qu'il attribue à des processus esclaves, appelés tasktrackers. Pour isoler les exécutions des
tâches map et reduce et éviter que celles-ci ne fassent tomber le serveur qui les exécute en cas
de plantage, le tasktracker démarre chaque tâche map ou reduce dans une JVM séparée. Voilà
qui nous amène naturellement au sujet de la tolérance aux pannes.
Figure : Les relations entre un client d'un job MapReduce, le jobtracker et un tasktracker. Un
processus de notification régulier informe le jobtracker (maître) de l'état d'avancement des
tâches exécutées par chaque tasktracker (esclave). Par sécurité, chaque tâche map ou reduce
s'exécute au sein d'une JVM séparée du processus du tasktracker.
Jobtrackers et tasktrackers
Le système Hadoop, comme le système propriétaire de Google dont il s'inspire, est
conçu pour exécuter MapReduce sur un cluster homogène de plusieurs milliers de serveurs bon
marché. De ce fait, la tolérance aux pannes est au cœur même de sa conception. Imaginons à
titre d'exemple une fréquence d'une panne par machine et par an. La fréquence des pannes pour
un cluster de10000 machines sera dès lors d'environ une par heure. La responsabilité du
framework est donc de faire en sorte qu'en dépit de ces pannes inévitables le résultat de
l'exécution de MapReduce soit le même que celui que produirait une machine parfaite.
Le cœur du mécanisme qui assure la tolérance aux pannes est un mécanisme de
notification. Chaque tasktracker est censé envoyer à intervalles réguliers au jobtracker un
rapport d'avancement des tâches qui lui ont été confiées. Ce signal s'appelle le heartbeat call.
E n c as de besoin, le jobtracker ordonnera la réexécution de toutes les tâches dont on sait
explicitement qu'elles ont échoué ou des tâches exécutées par des tasktrackers qui n'ont pas
donné de nouvelles après un certain délai.
Les causes possibles d'une panne sont évidemment nombreuses : un bug dans
l'implémentation d'une des tâches map ou reduce, un plantage du tasktracker lui-même ou la
panne d'une machine physique, etc. Les causes d'erreur les plus communes sont toutefois des
erreurs d'implémentation dans le code des fonctions map ou reduce. En cas d'erreur, le code
utilisateur lève une exception d'exécution que la JVM répercute au tasktracker avant que celle-
ci ne s'arrête. L'erreur est historisée dans un log utilisateur et la tâche qui a échoué est notée
comme telle par le tasktracker qui libère alors les ressources utilisées par la tâche fautive pour
les allouer à une autre tâche. Le jobtracker sera notifié de l'échec au prochain heartbeat call et
c'est à lui que revient la responsabilité de planifier une nouvelle tentative d'exécution en évitant
autant que possible de réallouer la tâche à un tasktracker où celle-ci aurait déjà échoué
précédemment. Le nombre de tentatives de réexécution d'une tâche est paramétrable.
Exécutions spéculatives
Mis à part les plantages, il peut également arriver aussi qu'une tâche s'exécute plus
lentement que prévu lorsque l'on compare son temps d'exécution à la moyenne des autres
tâches. Statistiquement, ce phénomène est en réalité tout aussi inévitable que les plantages.
Remarquons qu'un tel ralentissement est particulièrement préjudiciable à la performance
globale d'un job lorsqu'il se produit dans une tâche map. En effet, rappelons que la totalité des
processus map doit être achevée avant de pouvoir passer à la phase reduce. C'est donc la tâche
map la plus lente qui est déterminante pour la performance globale d'un job.
Plutôt que de diagnostiquer les raisons d'un éventuel ralentissement, Hadoop lancera
alors une ou plusieurs nouvelles exécution s de la même tâche, les mettant ainsi en concurrence.
Sitôt qu'un des processus en compétition s'achève avec succès, les autres tâches devenues
redondantes sont stoppées. Ce mécanisme de mise en compétition est appelé l'exécution
spéculative.
Au-delà de MapReduce
Depuis quelques années le modèle de programmation MapReduce et le framework
d'exécution Hadoop offrent une solution pragmatique à la parallélisation massive des
traitements pour des volumes de données qui, désormais, peuvent se chiffrer en pétaoctets.
Pour autant ce modèle comporte aussi des faiblesses dont il faut être conscient. Rappelons à ce
titre quelques-unes des contraintes qu'impose le paradigme MapReduce :
a- Seuls les traitements que l'on peut reformuler à l'aide d'un couple de fonctions map et
reduce sont éligibles à ce type de parallélisme.
b- Même lorsque la chose est possible, le temps nécessaire pour écrire un job MapReduce
et le tester se chiffre souvent en jours.
c- Le framework Hadoop reste un outil complexe dont le paramétrage et l'optimisation
requièrent un niveau de compétence élevé.
d- Bien que l'architecture en cluster garantisse une scalabilité linéaire, les temps de latence
sont caractéristiques d'un traitement batch. Ils s'échelonnent entre quelques dizaines de
secondes, au mieux, à plusieurs heures.
Résumé
MapReduce est un pattern logiciel qui permet de paralléliser le traitement de très grands
volumes de données à condition que le calcul puisse se formuler à l'aide de deux fonctions,
map et reduce, qui opèrent sur des listes de clé-valeur.
Hadoop est aujourd'hui le standard de fait en tant que plateforme d'exécution de
MapReduce. Conçu pour fonctionner sur des clusters homogènes de machines peu coûteuses,
il prend en charge l'essentiel des problématiques de bas niveau lié à la planification des tâches,
à la répartition de charge et à la réplication des données. Hadoop est particulièrement bien
adapté pour le traitement batch de très grands volumes de données comme le nettoyage ou la
préparation d'un jeu de donnée en amont d'une analyse de type machine learning.
MapReduce en tant que tel n'est cependant pas adapté aux traitements interactifs en
temps réel.