Big Data, un nouveau paradigme et de nouveaux challenges
Sebastiao Correia – 21 Novembre 2014
Présentation
●
Sebastiao Correia
●
Talend 2007
●
Directeur du développement du produit Data Quality
●
Background : thèse en Physique Théorique
●
Parcours
● Recherche opérationnelle : Optimisation, planification
● MDM & Business Intelligence
● Qualité des données
Objectifs du jour
Mettre en évidence quelques changements de paradigmes
Souligner l'importance
de la qualité de données
Agenda
●
Présentation de Talend
●
Définition du Big Data
●
Le framework Hadoop
●
L'architecture lambda
●
La qualité de données et le Big data
●
Applications avec Talend
● Qualité de données
● Apprentissage automatique
Présentation de Talend
La plateforme Talend
L'intégration de données (ETL)
●
Studio de développement de
jobs Talend
La gestion de la qualité des données
●
Profilage des données
●
Définir les critères de qualité
●
Correction des données
●
Suivi de la qualité dans le temps
Agenda
●
Présentation de Talend
●
Définition du Big Data
●
Le framework Hadoop
●
L'architecture lambda
●
La qualité de données et le Big data
●
Applications avec Talend
● Qualité de données
● Apprentissage automatique
Définition du Big Data
Définition en cours d'élaboration
en même temps que les techno évoluent http://arxiv.org/abs/1309.5821
●
Gartner : 3 V ou 5 V
●
Intel : 300 TB de données générées par semaine
●
Oracle : extraction de valeur des bases de données augmentées de sources de données non structurées
●
Microsoft : ensembles de données complexes
●
NIST: dépasse les capacités des systèmes actuels.
Croissance exponentielle des données
En 2012, 90% des données ont été générées durant les 2 années précédentes.
Chaque jour de 2012, 2.5 Exaoctets de données sont créés.
http://www.martinhilbert.net/WorldInfoCapacity.html
Quelques chiffres sur le déluge de données
● Par jour
● 144.8 milliards d'Email.
● 340 millions tweets.
● 684 000 bits de contenu partagé sur Facebook.
● Par minute
● 72 heures (259,200 secondes) de video sont partagées sur YouTube.
● 2 millions de recherches sur Google.
● 34 000 “likes” des marques sur Facebook.
● 27 000 nouveaux posts sur Tumblr.
● 3 600 nouvelles photos sur Instagram.
● 571 nouveaux sites web
● 2.5 Petaoctects dans les bases de données Wal-Mart
● 40 To de données générées chaque secondes au LHC
● 25 Po de données stockées et analysées au LHC chaque année.
Une révolution technologique : première étape
En 2004, le stockage de 1Go coûtait moins de 1$.
=> Augmentation des capacités de stockage.
Une révolution technologique : deuxième étape
Développement du Cloud.
● Salesforce 1999
● Amazon Web Services 2002
● Amazon Elastic Compute Cloud (EC2) 2006
● Google Apps 2009
De nouvelles technologies
sont apparues dès les années 2000 pour gérer la volumétrie et la variété des données :
●
Hadoop HDFS
●
Map Reduce
Agenda
●
Présentation de Talend
●
Définition du Big Data
●
Le framework Hadoop
●
L'architecture lambda
●
La qualité de données et le Big data
●
Applications avec Talend
● Qualité de données
● Apprentissage automatique
La naissance d'Hadoop
●
Quelques dates
● 2003 : “The Google File System”, Sanjay Ghemawat, Howard Gobioff, and Shun- Tak Leung http://research.google.com/archive/gfs.html
● 2004 : “MapReduce: Simplified Data Processing on Large Clusters”, Jeffrey Dean et Sanjay Ghemawat http://research.google.com/archive/mapreduce.html
● 2005 : Naissance d'Hadoop chez Yahoo (HDFS et MapReduce), Doug Cutting et Mike Cafarella http://research.yahoo.com/files/cutting.pdf
● 2006 : “Bigtable: A Distributed Storage System for Structured Data”, Fay Chang, Jeffrey Dean, Sanjay Ghemawat, Wilson C. Hsieh, Deborah A. Wallach, Mike Burrows, Tushar Chandra, Andrew Fikes, and Robert E. Gruber
http://research.google.com/archive/bigtable.html
Le framework Hadoop
●
Hadoop
● projet opensource (Fondation Apache) dédié au calcul distribué, fiable et scalable http://hadoop.apache.org/
– Hypothèse de départ : les machines ne sont pas fiables
– Hadoop la haute disponibilité au niveau applicatif (redondance des données entre machines, pertes de connexions, plantages de machines,...)
● Modules
– HDFS : Hadoop Distributed File System (inspiré de GFS)
– MapReduce : système pour le traitement parallèle des gros volumes de données (inspiré de Google MapReduce)
– En version 2 : YARN : système de gestion et planification des ressources du cluster
L'architecture Hadoop version 1
●
2 couches
●
MapReduce
●
HDFS
●
En production depuis plus de 5 ans chez Yahoo, Ebay,
Facebook...
L'architecture HDFS
●
1 Namenode pour l'adressage (Single-point-of-failure)
● Avec éventuellement un backupnode
●
N datanodes pour le stockage
L'architecture MapReduce
●
1 Jobtracker : maître
●
Découpe les jobs en tâches MR et les affecte aux tasktrackers
●
N Tasktrackers : esclaves
●
Exécute les mappers et reducers
Hadoop : un premier changement de paradigme
●
Localité des Données
● Auparavant les données étaient déplacées dans une application pour être manipulées (SGBD, ETL, Applications...)
● Désormais, les applications (sous forme MapReduce) sont déplacées vers les données
Le modèle MapReduce
●
Un programme MapReduce est composé de 2 fonctions
● Map() divise les données pour traiter des sous-problèmes
● Reduce() collecte et aggrège les résultats des sous-problèmes
●
Fonctionne avec des données sous forme de paires (clé, valeur)
● Map(k1,v1) → list(k2,v2)
● Reduce(k2, list (v2)) → list(v3)
Le modèle MapReduce
●
Exemple avec le décompte de mots
Un second paradigme : le système d'exploitation distribué YARN
L'architecture Hadoop version 2
●
Yarn : Sépare la planification des tâches de la gestion des ressources (jobtracker)
● ResourceManager composé de :
– Scheduler : alloue des ressources aux applications
– ApplicationsManager : accepte les demandes de tâches et les soumet à l'ApplicationMaster
● ApplicationMaster négocie les
ressources ; exécute et suit les tâches dans un container
● NodeManager : suivi de
L'écosystème autour de Hadoop
●
Connexion aux SGBD externes
●
Base de données orientée colonnes
●
Couche SQL
●
Machine learning
●
Coordination du cluster
●
Scripting
Les distributions
●
Rôle d'une distribution
● Fournir un ensemble de composants cohérents fonctionnant ensemble
● Assurer la compatibilités et la mise à jour des composants
● Même principe que les distributions Linux
●
D'autant plus important que les projets évoluent très rapidement
● De nouveaux composants sont créés
● D'autres sont améliorés...
L'écosystème Hadoop
●
Contenu d'une
distribution
Exemple de distribution avec Hortonworks
Les distributions
●
3 principales distributions :
●
Hortonworks
● fidèle à la distribution Apache et donc 100% open source.
●
Cloudera
● fidèle en grande partie sauf pour les outils d’administration.
●
MapR
● noyau Hadoop mais repackagé et enrichi de solutions propriétaires.
Agenda
●
Présentation de Talend
●
Définition du Big Data
●
Le framework Hadoop
●
L'architecture lambda
●
La qualité de données et le Big data
●
Applications avec Talend
● Qualité de données
● Apprentissage automatique
Nouveau paradigme architectural : l'architecture Lambda
Nathan Marz de Twitter définit une
architecture générique pour être robuste face aux
●
erreurs humaines
●
problèmes matériels
Batch Layer
●
Gère les données brutes
● Stockage HDFS,
● Immutabilité des données (pas de mise à jour, seulement des ajouts)
●
Calcule les vues Batch
● Ces vues sont calculées sur l'ensemble des données grâce à un algorithme de recalcul Vue batch = fonction (toutes les data)
● Ou algorithme incrémental
Vue batch = fonction(new data + old view)
●
Robustesse (tolérance aux erreurs humaines)
et scalabilité obtenue grâce à
Serving Layer
●
Cette couche
● Indexe les vues calculées par la couche batch
● Fournit un accès rapide aux données
●
Mais les données ne sont pas récentes
● Longueur de calcul sur l'ensemble des données
Speed Layer
●
Se concentre sur les données récentes
●
Compense la forte latence des vues batch
●
2 approches :
● Avec latence
Real time view = fonction(new data)
● Plus rapide car incrémentale Real time view =
fonction(new data+real time view)
Exemple d'implémentation de l'architecture Lambda
Insert or Update : un changement de paradigme
●
Dans cette architecture, les données sont immutables
●
Conséquences :
● Toutes les données doivent avoir un timestamp
● Le suivi de l'évolution des données est plus simple.
●
L'utilisation de langages de programmation fonctionnelle est possible
● La programmation fonctionnelle requiert des données immutables
● Le traitement parallèle des données est simplifié grâce aux langages de
Paradigme du Schéma à la lecture
●
Schéma fixe (schema-on-write) : les données
doivent se conformer au schéma de base prédéfini
● Evolution de la structure des données difficile
●
Schéma à la lecture (schema-on-read) : les
schéma sont créés par des vues sur les données
● Pas de contrainte sur la structure des données ingérées par le système
Agenda
●
Présentation de Talend
●
Définition du Big Data
●
Le framework Hadoop
●
L'architecture lambda
●
La qualité de données et le Big data
●
Applications avec Talend
● Qualité de données
● Apprentissage automatique
Les dimensions de la qualité de données
●
La recherche a conduit à définir des critères concernant les données.
Des Dimensions :
● L'exactitude : dans quelle mesure les données sont-elles correctes ?
● La validité (ou pertinence) : dans quelle mesure les données répondent aux besoins des utilisateurs ?
● La complétude : dans quelle mesure des données sont-elles manquantes ?
● La cohérence : dans quelle mesure les données collectées de diverses manières à différents instants se recoupent-elles ?
● L'actualité : les données sont-elles suffisamment « fraîches » ?
● L'accessibilité (ou facilité d'utilisation) : l'information est-elle facilement
La qualité des données dans le contexte Big Data
Les challenges de la qualité des données dans le contexte Big Data
Le partitionnement des données
●
Le théorème CAP (théorème de Brewer)
● Dans un système partitionné, on peut garantir soit la disponibilité, soit la cohérence des données
● Au bout d'un temps, la cohérence est assurée (eventual consistency)
●
Ce temps peut être suffisamment court pour passer inaperçu
Néanmoins la cohérence est
Challenge : assurer la qualité des données
●
Les dimensions particulièrement importantes
● La provenance (attention au Data Lake, conserver une traçabilité des données)
● La crédibilité (quelle confiance accorder aux données du web ? )
● La fraîcheur (en partie résolue par l'architecture lambda)
● L'obsolescence (doit-on définir un horizon des événements ? )
● L'unicité (Attention à la duplication d'information à des instants différents)
● La cohérence (théorème CAP)
● L'exactitude (certains algorithmes donnent une réponse probabiliste http://en.wikipedia.org/wiki/HyperLogLog )
Challenge : Le couplage des données avec les algorithmes
●
Schéma à la lecture => évolution des données en entrée
●
Etape de création des vues Batch : Nettoyage des données
●
Evolution de la structure des données du Master Dataset
=> adaptation des algorithmes de recalcul
Cleaning
Agenda
●
Présentation de Talend
●
Définition du Big Data
●
Le framework Hadoop
●
L'architecture lambda
●
La qualité de données et le Big data
●
Applications avec Talend
● Qualité de données
● Apprentissage automatique
La qualité de données et le big data à Talend
Profiler 2008
Déduplication Sur Hadoop
2011
Framework Map/Reduce
Nettoyage 2013 Profilage
Sur Hive 2012
●
Quelques grandes étapes
Profilage in situ avec Talend
●
Le profilage est une étape importante de la qualité de données
●
Echantillonner les données pour analyser la qualité ? Qualité de l'échantillon ? Représentativité ?
1. Talend offre un profilage in situ de données sur HDFS en utilisant
1. Hive 2. Impala
2. Le profilage peut être fait au niveau des vues Batch ou Real Time
Exemple avec Hive
●
Hive projet Apache initié par Facebook
●
Langage de requêtage de type SQL
● Traduit les requêtes HiveQL en jobs map/reduce Hadoop.
Application du principe de Schema-on-read avec Hive
●
Exemple de création d'une table Hive à partir d'un fichier csv
●
Exemple de création d'une table Hive à partir d'un fichier de logs.
CREATE EXTERNAL TABLE ACCESS_LOGS ( ip_address string, date_string string, request string, response string ) ROW FORMAT
SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' WITH SERDEPROPERTIES
("input.regex" = "^([\\d.]+) \\S+ \\S+ \\[(.+?)\\] \\\"(.+?)\\\" (\\d{3}) (\\d+)" )
Exemple de profilage pour la détection de fraude
● Loi de Benford
● 208023 lignes
● nb étudiants/commune ou dépt ou pays
OK
Suspect
Exemple : Utilisation de Map Reduce pour le rapprochement de données
●
Processus permettant d'identifier les enregistrements concernant les
mêmes objets
Le rapprochement de données
●
Optimisation en réduisant le nombre de comparaisons
●
Stratégie de “blocking”
partitionnement des données
● Exemple : 1.000 nouveaux clients à comparer aux 10.000 clients référencés
=> 10.000.000 de comparaisons !!
● Blocking :
100 x blocs de 10 enregistrements en entrée à comparer à 100 blocs de 100 enregistrements.
Nb comparaisons : 100 x (10 x 100) = 100 000
Rapprochement avec Hadoop
Rapprochement avec Hadoop
●
Map Splitting Mapping
Rapprochement avec Hadoop
●
Shuffle
Rapprochement avec Hadoop
●
Reduce
Rapprochement avec Talend
●
Cluster 9 noeuds (Cloudera CDH 4.5 avec Yarn)
Outiller les data scientists
●
l'apprentissage automatique
● Composants Mahout pour le clustering
● Composants Spark http://spark.apache.org pour le filtrage collaboratif
●
Implémenter son architecture lambda pour l'analytique
● Spark Streaming (micro-batch)
● Framework pour Storm https://storm.apache.org/
– Traiter des millions de tuples par seconde sur chaque noeud.
– Tolérance à la panne
Clustering
●
Algorithmes disponibles (basés sur Mahout)
● Canopy (souvent utilisé pour initialiser les clusters du k-means)
● K-means
● Fuzzy k-means
● Dirichlet
●
Et plusieurs distances
Les futurs outils de fouille de données sur Hadoop - Spark
●
Spark (projet Apache)
● Tourne sur un cluster Hadoop 2
● 100x plus rapide que Hadoop (en mémoire)
●
Mllib
● K-means
● Régression linéaire
● Régression logistique
● Classification naïve bayesienne Descente de gradient stochastique
Spark
● Application Spark
● Programme principal : le Driver planifie l'exécution des tâches sur le cluster
● Connexion à plusieurs clusters managers (standalone ou Mesos/YARN)
● Le driver envoie des jobs (plusieurs tâches à exécuter)
● Les données peuvent être conservées dans un cache
Recommandation de films avec Spark
●
Apprentissage du modèle
Recommandation de films avec Spark
Conclusion
●
2 révolutions technologiques ont conduit à une explosion des données
● Prix du stockage de l'information, le cloud
●
De nouveaux paradigmes
● Les algorithmes sont déplacés auprès des données
● Naissance d'un OS distribué autour des données avec Yarn/HDFS
● L'architecture lambda pour la robustesse et la scalabilité
● L'immutabilité des données permet une approche plus mathématique des transformations de donnnées
● Le schéma à la lecture (schema-on-read) relaxe les contraintes imposées sur les
Conclusion
●
Les challenges
● La gestion de la qualité des données
● La gestion des algorithmes (complexité)
● Construire les outils pour gérer cette évolution