Big Data est un terme utilisé pour parler de larges ensembles de données trop grand ou complexe pour les traiter de façon logicielle classique. Des données avec beaucoup de lignes offrent de meilleures possibilité d’étude statistiques. Alors que des données avec une plus grande complexité (plus de colonnes) peuvent amener un plus haut taux de faux positifs. Son avènement va continuer de grandir avec la multiplication des objets connectés et l’IoT.
Le concept a gagné en popularité au début des années 2000 quand l’analyste industriel Doug Laney l’a défini via les 3V :
Le Big Data est généralement découpé en plusieurs phases. Premièrement l’acquisition des données depuis les différentes sources. Vient ensuite l’extraction et le nettoyage pour ne garder que ce qui est pertinent. On peut ensuite modéliser ce qu’il reste pour pouvoir interpréter le tout et éventuellement découvrir des tendances.
Malheureusement de par les 3V précités, il est nécessaire d’utiliser des modèles de programmation adaptés. Le premier à en proposer un est Google, le besoin venu de la nécessité de calculer l’index inversé. C’est alors qu’ils ont créé Map/Reduce.
MapReduce est un patron d'architecture de développement informatique, inventé par Google, dans lequel sont effectués des calculs parallèles, et souvent distribués.
On mappe des clefs et des valeurs à partir de fichiers puis on regroupe les clefs et on finit par les réduire.
En utilisant un cluster hadoop on peut répartir les données et les calculs sur HDFS. Les données sont répartie et dupliquée sur plusieurs noeuds. Et lorsqu’un job MapReduce est exécuté c’est les noeuds les plus proches des données qui sont utilisé.
Les fichiers ne sont pas adaptés pour les performances. Traitement Batch avec d'énormes volumes de données, c'est bon. On ne sait de toute façon pas tout garder en mémoire.
Twitter a développé d'autres technos quand le plus important c'est la vitesse.
L’ordre d’exécution :
Spark est une bibliothèque unifié d’analyse pour le traitement de données à grande échelle. Elle a été développée par Apache. Elle permet de traiter des données en batch (pour des grandes quantité), en streaming etc… Et sous des formats très différents: SQL, Graphes, HDFS, NoSQL...
La structure de données de base est la RDD (Resilient Distributed Dataset). Spark offre nous garantit la disponibilité des données, elles permettent d’abstraire le système de stockage sous-jacent sous une interface unifiée. Elles peuvent aussi être stockées en mémoire pour accélérer les accès.
Spark s'appuie sur différentes technologies pour fonctionner. Il est possible d’utiliser différents plug-in selon les besoins. Hadoop pour les opérations Map/Reduce et l’ordonnancement. Mais on peut utiliser aussi Mesos (Ordonnancement), Cassandra (NoSQL: données), OpenStack.
Il existe différentes interface de programmation: Scala, Python ou Java. Un programme se lit comme s’il était séquentiel, c’est Spark qui va optimiser le graphe de calcul afin de répartir son traitement.
Loïc Stevens
Thomas Campistron