35 1 1MB
Big Data Cours 1 Architecture Big Data Fondements de BIG DATA Changements de la BI traditionnelle au BIG Data : ● Changement de nature des données ● Changement de volumétrie ● Changement de référentiels de données, du Data Warehouse au Data Lake ● Changement de processus de production ● Changement d’architecture ● Changement de compétences Gartner Inc. est une entreprise américaine de conseil et de recherche dans le domaine des techniques avancées dont le siège social est situé à Stamford au Connecticut. Solution non big -data: un stockage “non-distribué” (un seul serveur pour stocker et analyser les données) : (SGBRD) non-distribuées Solution Big Data: un stockage “distribué” (plusieurs serveurs pour stocker et analyser les données) : ● Bases relationnelles distribuées (MPP) ● Distributions Hadoop (stockage fichiers) ● Bases NewSQL pour le in-memory ● Bases NoSQL (Not Only SQL): clé/valeur ● Bases NoSQL: orientées colonnes ● Bases NoSQL: orientées documents ● Bases NoSQL: orientées graphes Solutions de stockage de DATA : ● Key-value : redis - riak ● Graph database : Neo4j - Hyper Graph DB ● Document-oriented : MongoDb - CouchDB relax ● Column family: Cassandra - Hbase Utilité des ETL en des ELT en Big Data ● Il s'agit d'une technologie informatique permettant d’effectuer des synchronisations (Extraction Transformation Chargement : ETL) d’une source de données vers une autre (entrepôts de données) ● Pour la récupération des données plusieurs outils présents ETL ou ELT ● Les ETL peuvent générer du code qui sera traité par la plateforme Big Data, afin d’exploiter la puissance de cette dernière. ● Syncsort ou Hurence sont des environnements distribués : 2 solutions ETL ● Récupération des données :Kafka ou Flink ● L’analytics en temps réel : Spark et Storm. Solutions d’analyse de données : ● Les outils d’analyse permettant l’interaction avec le Big Data : SAS, R et SPSS ● Les outils facilitant la phase de préparation de données : Dataiku. Visualisation de DATA
Différents outils pour: ● Reporting de masse: Business Object ou OBIEE. ● Mise en place des tableaux de bords : Qlikview et MicroStrategy. ● consultation et analyse :Tableau Software ou TIBCO Spotfire ● la visualisation : Des librairies Javascript BIG DATA: (ACM Association for Computing Machinery 1997) Big data ou mégadonnées : l'ensemble des données numériques produites par l'utilisation des nouvelles technologies à des fins personnelles ou professionnelles. Gartner décrivait les 4 V: ● Volume : Data Size ● Variété : Different forms of Data sources ● Vélocité:Speed of change ● Véracité : uncertainty of data ● Valeur Qu’est ce qu’il offre(solutions)? ● Stockage + Sécurisé les grande quantité de data ● Tolérance de panne ● Haute disponibilité ● Traitement et analyse des données d’une manière distribuée en vue d’extraire la connaissance (la valeur) ● Traitement en Streaming Écosystème Hadoop : Framework (java) open source permettant le stockage et le traitement des données massifs d’une manière parallèle et distribuée Hadoop = HDFS (Stockage) + Mapreduce (Traitement) Hadoop permet : ● Haute disponibilité ● Scalabilité ● Tolérance aux pannes ● Reprise après l'échec ● Sécurité Pour Hadoop 1.0 => HDFS + Mapreduce Pour Hadoop 2.0 => HDFS + Mapreduce + YARN Batch processing (min / hours): Traitement de données déjà stockées sur une période donnée. ➔ Caractéristiques - Données en entrée : fichiers, résultat d’une requête (HDFS, Sqoop,...). - Résultats : les résultats ne seront disponibles qu’à la fin des traitements. - Latence : souvent de l’ordre de la minute ou de l’heure. Exemple d’implémentation : MapReduce, Flink, Tez, Spark ➔ Fonctionnement 1. Les données sont sélectionnées par un traitement principal et souvent unique. 2. Les données sont distribuées entre les nœuds afin d’être traitées. 3. Un traitement réalise les opérations globales: tri + agrégation,
Batch Incrémental: Le traitement des nouvelles données sans faire le retraitement de l’ensemble des données déjà traité. Stream processing (seconds): Permet le traitement en temps réel => obtenir des résultats d’analyse instantanée. 1. Micro-Batch: Les enregistrements mis en lot et traite en un seul mini-lot => le résultat est produit toutes les n secondes —> Spark Streaming, Storm-Trident 2. Native Streaming (real time): Chaque entrée est traitée immédiatement sans attendre les autres et produit un résultat —> Storm - Flink- Kafka streams- apache samza Écosystème Big data Stream Processing: ● Apache storm: Framework de calcul et de traitement distribué de flux de données. ● Apache flink: Framework de calcul et de traitement distribué de flux distribué. ● Apache spark: Framework de traitement distribué de flux de données Big Data (Alternative de MapReduce). ● Apache Kafka Streams: Plateforme de streaming de données en temps réel entre les applications distribuées et système de messagerie applicative. Apache Zookeeper: Configuration des systèmes distribués pour assurer la coordination entre les nœuds. SGBD Nosql: ● Apache Hbase: SGBD NoSQL distribué ● MongoDb - Cassandra: SGBD NoSQL, le stockage d’une manière distribuée dans des nœuds sous forme de documents au format json. ● ElasticSearch: Moteur de recherche distribué en multi-entités à travers une interface REST. Hazelcast: Cache mémoire distribué,SGBD NoSQL en mémoire, Système de messagerie applicative. Apache Pig : Plateforme de haut niveau de création d’applications Map Reduce(Langage Pig Latin qui ressemble à SQL) au lieu du code Java. Apache Hive : Infrastructure d'entrepôt de données pour l’analyse et le requêtage avec un langage proche de SQL. Apache Phoenix : Moteur de base de données relationnel qui repose sur Hbase. Apache Impala : Moteur de requêtes SQL de cloud pour un système basé sur HDFS & Hbase. Apache Flume : Système de collecte et d’analyse des fichiers logs. Apache Sqoop : Outils sur ligne de commandes pour transférer les données entre les SGBD relationnels et hadoop. Apache Oozie : outil d’ordonnancement des flux de Hadoop.
Cours 2: Architecture Big Data Hadoop HDFS Part 1: Hadoop Les enjeux l'écosystème HAdoop Big data
Grand volume de données
Différents sources de données
Science, industrie, Système
Stockage
Stockage et Analyse de données
Distribué
fonctionne sur plusieurs machines
Scalable
possibilité d’augmenter le nombre des machines
tolérance en panne
une machine tombe en panne => pas de problème
Commodity hardware
Utilisation des machines ordinaires en nombre important
Réplication de données
protège la perte de données
Architecture:
➔ Des outils qui se trouvent au dessus de la couche Yarn/MR: - Pig: Langage de script - Hive: Langage proche de SQL - R Connectors: permet l’accès à HDFS et l’exécution de requêtes Map/Reduce à partir du langage R. - Mahout: bibliothèque de machine learning et mathématiques - Oozie: permet d’ordonnancer les jobs Map Reduce, en définissant des workflows ➔ Des outils sont directement au dessus de HDFS:
-
Hbase : Base de données NoSQL orientée colonnes Impala: le requêtage de données directement à partir de HDFS (ou de Hbase) en utilisant des requêtes Hive SQL ➔ Des outils permettent de connecter HDFS aux sources externes: - Sqoop: Lecture et écriture des données à partir de bases de données externes - Flume: Collecte de logs et le stockage ➔ Des outils qui permettent la gestion et l’administration de Hadoop: - Ambari: outil pour le provisionnement, gestion et monitoring des clusters - Zookeeper: fournit un service centralisé pour maintenir les informations de configuration, de nommage et de synchronisation distribuée Fonctionnement 1. Diviser les données 2. Les sauvegarder sur une collection de machines: cluster 3. Traiter les données directement là où elles sont stockées LIMITATIONS de HADOOP
● ●
Nombreux accès à HDFS → traitements très longs. Inefficace pour les algorithmes itératifs et datamining interactif.
Solutions: ● Une seule lecture des données puis traitement en mémoire. ● Remplacer les disques par les SSD. -Qlq Clients de l’architecture HADOOP: the Yahoo ,Google ,Facebook, IBM ,twitter,Amazon.
Part 2: HDFS Définition: HDFS est un système de fichiers distribué, extensible et portable, écrit en Java, basé sur une topologie maître esclave. ● Possibilité de stocker des péta-octets de données. ● Pas sécurisé par défaut, un utilisateur peut accéder au système sans authentification ● Permet des traitements parallèles et distribués ● Tolérances aux erreurs avec la réplication de données Architecture: ● Hadoop est composé d’un certain nombre de nœuds(machine physique ou virtuelle) , ● Name Node : maître qui va gérer la distribution de données sur l’ensemble de Data Node + savoir l’emplacement de chaque partie de fichier source Cluster = Name Node (Master) + Data Nodes (Esclaves) ● Chaque fichier enregistré dans HDFS est décomposé en grands blocs (64 Mo ou 128 Mo), chaque bloc ayant un nom unique et enregistrer dans un nœud différent du cluster
● ●
DataNode : démon sur chaque nœud du cluster NameNode : Démon s’exécutant sur une machine séparée + Contient des métadonnées + Permet de retrouver les nœuds qui exécutent les blocs d’un fichier. Perte de donnée: Solution 1. Hadoop réplique le bloc 3 fois (par défaut) sur 3 nœuds au hasard 2. place une copie du bloc dans chacun d’eux 3. Si un nœud tombe en panne, le Namenode le détecte, et s’occupe de répliquer encore les blocs qui y étaient hébergés pour avoir toujours 3 copies stockées NameNode tombe en panne: ●
Si c’est un problème d’accès (réseau), les données sont temporairement inaccessibles ● Si le disque du NN est défaillant, les données seront perdues Solution ●
Duplication de le NameNode sera dupliqué sur son propre disque + le système de fichiers du réseau. Caractéristiques ● nœud = CPU + disques ● Les nœuds peuvent être combinés en graphes ● Évolutif : ajouter des nouveaux noeud sans changer: Formats de données + Comment les données sont chargées + Comment les emplois sont écrits ● Abordable :Calcul massivement parallèle sur des serveurs de grande consommation ● Flexible : Hadoop est sans schéma et peut absorber n'importe quel type de données ● Tolérance de panne :Grâce au cadre logiciel MapReduce
Les cas non adéquats 33 !!!!!!!! Fonctionnement /Algorithme ➔ Ecriture Le client consulte le NameNode Pour bloc allant de 1 à N Le client écrit le bloc de données directement dans DataNode Le DataNode réplique le bloc next bloc ➔ Lecture Le client récupère de NameNode la liste des DataNodes pour chaque bloc Pour bloc allant de 1 à N chercher le premier DataNode qui contient le bloc dans la liste des DataNode lire le bloc next bloc Plateformes Hadoop/HDFS Cloudera - MapR Technologie - Hortonworks
Cours 3: Hadoop Map Reduce version1 : Map/Reduce = API + Framework + Resource Management API : permet l’écriture d’applications MapReduce Framework : Services permettant l’exécution des: Jobs MapReduce, Shuffle/Sort... Resource Management :Infrastructure pour gérer les nœuds du cluster, allouer des ressources et ordonnancer les jobs Démons
●
JobTracker : Divise le travail sur les Mappers et Reducers sur les nœuds, se charge à la fois d’allouer les ressources (mémoire, CPU...) aux différentes tâches + coordonner l’exécution des jobs Map-Reduce ● TaskTracker: S’exécute sur chacun des nœuds pour exécuter les vraies tâches de MapReduce. Limitation ● Le Job Tracker gère ressources du cluster et les jobs : Allouer les tâches et les ordonnancer Monitorer l’exécution des tâches ● le Job Tracker tombe en panne => redémarrage de tous les jobs ● Le Job Tracker est fortement intégré à Map Reduce : impossible d’exécuter des App non MR sur HDFS Solution : YARN : Yet-Another-Resource-Negotiator (MR v2.0) Il résoudre le problème de : ● La scalabilité : ~4000 noeuds ● L’allocation des ressources Il offre: ● séparation de la gestion des ressources de celle des tâches MR ● les nœuds ont des ressources (CPU, mémoire..) allouées aux applications à la demande Les nouveaux démons: ● Resource Manager = le JobTracker + ne gère que les ressources du cluster ● Application Master (déployée sur les esclaves) : gérer les tâches Avantage Support les applications MR et non-MR SPLITS ● Les fichiers dans MapReduce sont sauvés en Blocs ● MapReduce divise les données en fragments ou splits. ● 1 map task est exécuté sur chaque split. ● "split points" définit le caractère de fin de ligne qui détermine un enregistrement (Record) de fichiers ● "InputSplitter" classe qui importe les fichiers et les transforme en splits ● L'objectif est de traiter autant de données que possible localement.
Classes (SPLITS) InputFormat - Effectue un split logique des fichiers d'entrée pour le Job. - Chaque InputSplit est ensuite assigné à un Mappeur individuel pour traitement. - Créer un record reader pour un split de donnée, - transforme le records en .
InputSplitter -
Divise le fichier en Splits pour les jobs Obtient la taille du split, Obtient la liste des nœuds (par nom) où les données seraient locales.
RecordReader -
-
Lit les Splits en format de Records (LineRecordReader) Appelé une fois à l'initialisation, Lit la clé suivante, paire de valeurs, Obtenir la clé actuelle Obtenir la valeur actuelle Progression du record reader vers le nouveau record,
Ordonnancement (Scheduling) Chaque job utilise le cluster entier, les jobs attendent donc leur tour dans une file d’attente. Tolérance aux fautes La communication se fait à partir de Task Tracker via le Heartbeat pour informer le JobTracker qui réaffecter la tâche à un autre nœud Combiner Pour assurer la performance un agrégat local se situe dans la Map Task qui va réduire la quantité de données à copier sur le réseau => Réduire l'effort de fusion Après la tâche de mappage et avant le shuffle -
L’architecture Mapreduce permet le traitement parallèle et distribuée de données Hadoop Streaming permet l’utilisation de langage python Les fichiers sont divisés en morceaux qui sont parcourus en parallèle. Fonctionnement 1. Découper les données d'entrée en plusieurs fragments = >split 2. Mapper : un petit programme qui traite une petite partie des données résultat = couples 3. Grouper (shuffle) ces couples par clé. 4. Réduire les groupes indexés par clé en une forme finale, avec une valeur pour chacune des clés distinctes.
Exemple: WordCount