Qu'est-ce que le Big Data:
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 :
- Volume : Les organisations collectent des données depuis diverses sources. Transactions, réseaux sociaux, informations depuis des capteurs, données de machines à machines. Dans le passé, le stockage aurait posé problème mais grâce à de nouvelles technologies (Hadoop et HDFS par exemple) ont facilité cette tâche
- Vélocité : Les flux de données se déplacent à une vitesse sans précédent. Et il existe de gros impératifs de temps. Les puces RFID, capteurs et mesures automatiques amène un grand flux de données à être analysées presque en temps-réel.
- Variété : Les données viennent sous de multiples format. Depuis des données structurées numériques ou pas dans des bases de données, aux fichiers de données non-structurées; Email, vidéo, audio, transactions. On a de plus en plus tendance à rompre le paradigme relationnel pour adopter un mode clef-valeur.
On essaye de relever le plus de données possible quitte à les traiter à posteriori.
A lire
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.
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 :
- Lire l’entrée standard
- Une fonction Map
- Une fonction de partitionnement
- Une fonction de comparaison
- Une fonction reduce
- Écrire le résultat
Spark
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