Académique Documents
Professionnel Documents
Culture Documents
- L’évolution de la technologie
- Internet des objets
- Les médias sociaux
C’est une collection des ensembles de données larges, complexes qu’elle est devenue impossible de traiter par les
outils de système de base de données existant ou les applications traditionnelles de traitements des données
Variétés différentes formes de base de données : traditionnelles, image, vidéo Structurés ; semi structurés, non
structurés
Vélocités vitesse
*Disque dur en 1956 : c’est le premiere disque dur d’une apacitée = 50MegaOctée premiere stockage numerique
*Clés USB répandent avec les capacitées 8 , 16 ,24 MO leur atout majiur est : resistances , leur tailles
*Cloud 2007 :
Chapitre 2 : hadoop
C’est quoi HADOOP !
-Hadoop est écrit en java et conçu pour traiter en distribuer une énorme quantité de données structurées et non structurées terabytes,
petabytes
-Hadoop stocke et traite les données comme un grappe hadoop ( cluster ensembles de nœuds/serveurs)
-Les serveurs peuvent être ajoutés ou retirés du cluster d’une manière logique puisque haddop conçu pour être autonome
-Hadoop est capable de détecter les changements, incluant les échecs, et d’être ajustés à ces changements =>continue à fonctionner sans
interruption
tolérant de
Historique pannes , évolutif (scalable) قابل للتطوير
auxHADOOP
Nutch (2002) : moteur de recherche distribué (gratuit,Doug cutting ,Mike Kafarella le calcul se fait sur quelques machines + quelques
limites et problèmes
GFS et map and reduce (2003-2004) : GFS système fichier distribués, calculs distribués map-reduce développés par Google
Plateforme pour Nutch (2004) : en se basant sur GFS et map-reduce Doug Cutting développe une plateforme pour Nutch
Hadoop (2006) : Doug cutting reprendre les concepts représentés par Google pour résoudre les problèmes rencontrés dans le projet
apache Nutch et crée une nouvelle version appelées hadoop
HDFS (Hadoop distributed file system): HDFS! = FS classique mais il existe des bases communes entre les deux
-HDSF permet de récupérer des fichiers en un temps performant
-HDFS reprend de nombreux concept proposées par les systèmes de fichiers classique comme ext2de linux et FAT de Windows
Chaque nœud du cluster correspond à un sous ensemble de volume donc pour augmenter le volume il faut ajouter de nœud au cluster alors que le
stockage maximale d’un système classique est la taille globale du disque
-HDFS utilise des tailles de blocs largement supérieurs à ceux des systèmes classiques.
-La taille du bloc sous HDFS est 64 MB, peut-être configurable a 128 MB ou 256 MB
-pour éviter la perte des données HDFS réplique les blocs sur plusieurs nœuds
-l’architecture de machine HDFS repose sur des grappes (cluster) chaque cluster inclut un Name nœud et plusieurs data nœuds.
Name noeud
-nœud du nom gère tous les accès au fichier lire écriture création effacement et aussi la réplication des blocs de données sur les data nœuds
-le nœud du nom doit savoir sur quels nœuds de données construisent le fichier complet
-le nœud de nom est le seul point unique de défaillance. Si ce service est arrêté il n’y pas aucun moyen pour extraire les blocs de ce fichier
-hadoop 2.0 a ajoutés un nœud de nom en veille standbay qui recevra les métadonnées de Name nœud actif a travers le nœuds d journal, en cas de
défaillance le nœud standbay prend le relais
Data nœud
-nœud de données fournissent continuellement des messages au nœud de nom
-heartbeat (battement de Cœur) pour d’assurer du fonctionnement correct du nœud de données (quand un heartbeat n’est plus présent, le nœud de nom
fait sortir le nœud de données de cluster et continue à fonctionner comme si rien ne s’est passé )
-il fournissent de blocs ‘Block Report’ contenant la liste des blocs présents
MapReduce permet la programmation distribué (Google 2004 )k des application gourmandes en données d’une façon
simplifiés pour le programmeur qui ne s’intéresse qu’a la partie algorithmique , il transmet alors son programme MapReduce
au plateforme hadoop pou l’exécution
Les données qui sont divisées en blocs et reparties sur plusieurs nœuds de données seront traitées avec deux taches map et
redue seront exécutée sur les nœuds de noms (en parallèle ) , une fois que toutes les instances ont terminée l’exécution les
résultats seront enregistrer localement puis seront
k
Job : MapReduce concerne le travail souhaité par le client, ce travail est constitué de données en entrée (contenues dans
HDFS) d’un programme MapReduce, paramètre d’exécution
Etape intermédiaire : shuffle and sort ces couplés clés valeur par clés
Reduce : réduire les résultats partiels de mapper pour avoir le résultat final avec le traitement de reduce
Langage de programmation
-le programmation mapReduce peut être effectuée avec plusieurs langage tels que java, python, R …
-sur Windows l’exécution en local était permise avec Mr job qui as permis le mapper et le reducer dans un seul fichier , pour
l’exécution sous l’Unix ou sur Hadoop sans utiliser Mr job , il faut avoir un fichier pour le mapper , et un fichier pour le reducer
k
Chapitre 3 : NOSQL
Les documents structurés :
-Nos documents sont caractérisés par l’existence d’une structure d’où en parlera d’un document structuré
-Ces documents structurés sont représentés par les format XML and JSON
-Un document traités avec ces deux formats peut être transférer par réseau entre deux machine sans la perte de l’information
-les document structurés sont à la base des systèmes distribués visant a des traitements de très grande échelle c’est-à-dire le
NOSQL
Valeur atomique : instance de l’un des types de base usuelles, non décomposables en sous entités (! la date n’est pas une
valeur atomique car elle peut être décomposé en jour /date/ année
Paire clés valeur : est une paire [i, V] tels que i est le clés et v est la valeur
Valeur structuré : toute valeur atomique, liste de valeur structuré, liste de pair de clés valeur
Modèle relationnelle :
-Basé sur les modèles mathématiques pour présenter les données dans des systèmes informatiques
-Basé sur la notion des entités qui sont des tables relationnelles, il y’ a une séparation entre l’organisation logique des données
qui sont bien structurés et fortement typés et l’implémentation physique du moteur
-métadonnées sont stockées dans l’en tête de la table, et la donnée est une valeur atomique, pour accéder à une donnée il
faut indiquer le nom de la colonne et la clé de la ligne
+ avantage de ce système : possibilités d’appliquer des opérations algébriques et logique sur ces données
Le NOSQL
NOSQL VS SQL :
Le problème de l’extensibilités du SQL est reconnu par les grande entreprise comme Facebook, Amazon qui ont besoin de
matière en données et d’infrastructures d’où l’apparition du SGBD NOSQL
Les caractéristiques : sans schéma, système distribué, utilisations des langages et des interfaces qui ne sont pas uniquement
SQL
La différence entre les bases de données NOSQL et les bases de données relationnelle c’est que le NOSQL c’est le fait que
NOsql est une forme de stockage non structurée
Les types de stockage NOSQL
-Les moteur clés valeur : l’utilisation des tableaux de hachage dans l’accès se fait par clés, il s’agit de moteur en mémoire
comme Redis ou système distribuer comme dynamo DB
-les clés peuvent être organisés par groupe clés logique ou la clé est unique dans son groupe, peut être dupliqué dans un autre
groupe
La base de données NOSQL la plus connue qui est construite dans l’entrepôt de valeur est Dynamo DB de Amazon
++ simplifier l’accès aux données (accéder a une donnée complexe(json, blob) par une simple clé (valeur atomique )
Tableau associatif ou dictionnaires = si une valeur elle-même constitué de tableau qui admet de simples clés et des valeur
complexes ou simples
Pas de schéma
-Les moteurs orientés documents : une base de données orientés documents stocke les données sous forme d’agrégat
-l’agrégat permet de créer une unités d’information complexe qui est traités et stocké d’une façon atomique, l’agrégat ne peut
pas être référencier que par sa racine
-l’entrepôt de document est presque similaire a l’entrepôt de clés valeur puisque les deux n’admettent pas un schéma
-La base de données NOSQL la plus connue qui est construite dans l’entrepôt de documents est Mongo DB
-La base de données orientées document peut être comparable a la table relationnelle, les documents rassemblent aux lignes
de la table
-la format de sérialisation et d’échanges de données est le json contre le XML, il est idéal pour représenter les données semi
structurées et structurées
-Les moteurs orientés colonnes : inspirées de Google BigTable , et proche de la hachage distribué, les données sont
représenter par lignes(identifiées par une clé unique) et séparées par des colonnes Niveau de structuration plus fort que
les moteur clés valeurs et les moteur documents orientées
Les base de données NOSQL les plus connues qui sont construitent dans l’entrepôt de colonnes sont BigTable , cassandra,
Hbase
Le stockage sur le disque est organisé par la famille de colonnes, qui sont considérées comme des sous tables
-index inversés : c’est une correspondance entre un terme, ou contenue et sa position dans un ensemble de données
Exemple Google utilise l’index inversé pour répondre aux recherche de son moteur
-moteur orientés graphes : c’est une base de données réseau qui utilise des nœuds pour présenter et stocker les données
Exemple de base de données orientées graphe : flock DB, info grid
Sérialisation des documents structurées
La sérialisation désigne la capacité à coder un document sous forme d’une séquence d’octets qui peut voyager sans
dégradation sur le réseau, d’une propriété essentielle dans le cadre d’un système distribué
La représentation arborescente est très puissante plus puissante que la représentation offerte par la présentation tabulaire du
relationnelle
Dans un nuplet relationnelle les valeurs sont dites atomique et ne peuvent pas être décomposable sinon il faut faire le
processus de normalisation
Il est également facile de représenter une table par une collection du document structurées
Il est possible d’encoder une table relationnelle sous la forme du document structurées et chaque document pourrait être plus
complexe qu’une ligne simple relationnelle Pour les données régulier cette représentation n’est pas efficace
Une représentation arborescente XML /JSON est donc plus appropriée pour des données de structure complexe et surtout
flexible
Définition
L’analytique de big data consiste à examiner des ensembles de données volumineux contenant des types de données
hétérogène pour découvrir :
Un gain des efficacités gratuite, un meilleur service client, nouvelles opportunités de recettes
-Pour les systèmes relationnels il existe une séparation entre le moteur relationnelle et le moteur de stockage cette séparation
permet d’isoler de tache :
-La plateforme hadoop est basé sur map et reduce a travers ces deux taches on peut faire tous ce qu’on veut avec ses données
et accéder a tous les types de fichier et les bases de données
Le problème de stockage avec HDFS
Un fichier écrit en HDFS est immutable, HDFS ne supporte pas l’ajout a l’intérieur de fichier mais il est possible et d’écrire un
fichier et le supprimer
HDF est conçu en premier lieu pour stocker des données analytiques :
Ecrire le fichier
Distribué le fichier sur cluster
Lire le fichier a l’infini
Les dernières versions de hdfs permet d’ajouter de données a la fin de fichier mais il existe toujours des problèmes a résoudre
exemple d’assurer la cohérence entre des fichier répliqués aussi le retour en arrière au cas de mal d’écriture
L’append est maintenant implémenter mais il existe toujours des limitation il n’est pas possibles de réealiser des modification
a l’interieur de fichier (il est possible d’ecrire des fichier log )
Ecosystème Hadoop
Hadoop n’est pas capable a lui seule de répondre à toutes les problématiques reliés au big data
Et par suite L’écosystème Hadoop fournit une collection d’outils et de technologies spécialement concus pour faciliter le
développement, le déploiement et le support des solution BigData
Yarn
Yet another resource Il est ajouté dans la deuxième version de Hadoop
negotiator - Il permet à Hadoop de ne plus reposer uniquement sur le modèle de programmation MapReduce
- Apporte a hadoop une nouvelle architecture NameNode : hadoop a ajouté un nœud de nom en
veille pour chaque cluster en cas de défaillance du nœud du nom , il prendra le relais
Pig -Il est constitué de deux partie : le langage Pig latin et un environnement d’exécution
Traitement les données -Le compilateur converti pig latin a Map Reduce
a l’aide des requêtes -Pig charge les données puis fait plusieurs fonctions tels que grouper, filtrer, enfin les données à l’écran ou
les enregistrer sur hdfs
Pig latin : un langage de haut niveau, type SQL exécuté en MapReduce, une requête pig latin prend en
entrée une table et produit une autre table en sortie
Pig appliques des opérateurs a des flots de données semi structurées
Il faut structurées le modèle en entrée selon le modèle Pig
Hive Il est un logiciel de Data Warehouse initialement créé par Facebook, il permet d’effectuer facilement des
Service de traitement données en provenance d’Apache hadoop
des données a l’aide des -Apache hive traduit les programmes rédigés en langage HiveQl en une ou plusieurs tache java mapReduce
requêtes , Taz ou Sparks (trois moteurs d’exécution pouvant être lancées sur hadoop yarn)
-Les tableau apache hive sont similaire à ceux d’une base de données relationnelles
HBASE -Apache Hbase est une base de données non relationnelle (Nosql ) , reprenant le concept et les
fonctionnalités de google BigTable , open source
-Cette base de données d’exécute generalement sur HDFS
-Elle permet de combiner des sources de données reposant sur différentes strucutres et
différents schémas
-Nativement elle est integrée avec hadoop ,elle fonctionne avec d’autre moteurs d’acces aux
données par le niais de Yarn , son language de programmation est JAva
Mahout Fournit un environnement pour la création des application distribuées d’apprentissage automatique
Machine Learning -if effectue un filtrage, regroupement et classification collaboratifs
-fournit une ligne de commande pour invoquer des algorithmes
-il a un ensemble de libraires contenant diffèrent algorithme incorporés pour de différents cas d’utilisation
Ecrit en java , l(apprentissage automatique est un domaine vaste il existe plusieurs technique les plus
utilisés sont l’apprentissage supervisé et non supervisé
Oozie
Organisateur de travail
Apache Flume
Sqoop
Apache ambari
Zookeeper
Apache Giraph Il est un système de traitement des graphes itératif conçu pour une évolutivité élevée
Apache Hive
Principe : l’utilisateur envoie ses requêtes Hive. Ces derniers seront convertis en des taches MapReduce
Avantage de hive :
- Il peut utiliser comme un ETL (Extraction, transform, Load) processus d’extraction des données des système
sources et de leur transfert dans l’entrepôt de données
- Peut manipuler des analyses et des requêtes
- Peut manipuler des ensembles de données larges
- SQL(filters , joins n group by) –
Hive ne doit pas être utilisé
- Quand la base de données est déjà petite
- S’il n’est pas possible d’avoir un schéma pour la base de données
- Si l’application nécessite un temps de réponse rapide
- Si les bases de données relationnelles peuvent résoudre un problème
Autres écosystèmes utilisant SQL
Version de HIVE
HIVE Version originale de Hive , c’est juste un client qui permet d’interroger une base de données avec un Shell interactif
HiveServer 1 Permet des connections JDBC /OBDC a partir un clients SQL réguliers. Mais il n’y a pas de concurrence. il n’est pas possible
d’avoir plusieurs sessions de Hive
HiveServer 2 Permet des connexions JDBC/ODBC qui permet la concurrence. un nouveau outil ligne de commande client appelé Beeline
+ Beeline peut être installé comme un client SQL a côté du CLI initial , Hive peut être installé a l’intérieur ou a l’extérieur de cluster
Metastore intégré : par défaut Hive utilise un métastore intégré Apache derby. Il enregistre les méta donnés sans la
base de données Apache derby
Rq : Derby n’autorise qu’un seul utilisateur pour y accéder
Rq : le stockage est distribué, qui est HDFS
Les dernières versions de Hive permettent les modifications de la base de données
L’interaction Hive /Hadoop s’effectue selon les 3 étapes suivantes :
1- Envoi de la requête HiveQl : en utilisant un client (client Shell, un client JDBC /ODBC ou une interface web) la
requête est envoyée au serveur Hive
2- Planification de la requête : la requête est reçue par le driver (pilote) .elle est compilée , optimisé n et planifiée
comme un job
3- Exécution du job : le job est exécuté sur le cluster Hadoop
1 Partie client
Le client Hive Permet d’entrer des commandes directement depuis le Shell hive ou d’exécuter un ensemble de
CLI commandes hives ecrite dans un fichier Txt, ce client n’est pas compatible avec la nouvelle version de hive
et a été remplacer par Beeline qui est le nouveau client en mode ligne de commande
Le client
JDBC/ODBC
Interface web
2 Partie serveur
Hive server 2 Succède HiveServer, il s’agit d’un conteneur du moteur d’exécution de hive et appelé
couramment pilote il se compose par un compilateur un exécuteur et de metastore
Il assure deux nouvelles fonctionnalités par rapport à Hive server 1 :
- La gestion de l’authentification client
- La gestion des requêtes concurrentes
-
Service thrift : permet de communiquer les client avec l’interface RPC et exécuter leurs requêtes
Modélisation de données dans Hive :
Bases de données : espace de nom qui sépare les tables et les autres unités de données
Tables : les tables dans Hive sont créées da la même manière que dans RDBMS
Partitions : Ici, les tables sont organisées en partition pour regrouper des types de données similaires en fonction de
la clé de la partition
Buckets (clusters) les données présentes dans les partitions peuvent être divisées en compartiments pour une
interrogation efficace