Vous êtes sur la page 1sur 19

COURS

INTRODUCTION AU BIG DATA


Chapitre 1: Emergence de Big data

I. L’historique de la gestion de données


1. Définitions des concepts liés aux données

-
- Une donnée est l’enregistrement d’une observation, d’un objet ou d’un
fait destiné à être interprété, traité par l’homme. Généralement, la
donnée est objective.
- Une information est le signifiant attaché à la donnée ou à un ensemble
de données. L’information est généralement subjective, définie selon un
contexte.
- Une connaissance est une information nouvelle, apprise par association
d’informations de base, de règles, de raisonnement, d’expérience ou
d’expertise

2. Les phases de la gestion des données

La gestion des données a passé par les phases schématisées par la figure 1, et qui sont
:

- Phase 1 : période préhistorique 96-69


- Phase 2 : période phare 70- 2000
- Phase 3 : période nouvelle 2000-maintenant
Figure 1 : Phases de gestion des données.

a. Bases de données et systèmes de gestion de bases de données durant la période de


préhistorique

Avant 1960, il n’y a pas des bases de données, il n’y a que des applications manipulant
des fichiers gérés par de système de gestion de fichiers. À partir du milieu des années
1960, les BD hiérarchique et celles réseau sont apparues. Ces systèmes sont
caractérisés par :

 Plusieurs applications partagent des données


 Séparation des données et des traitements sur les données
 Données gérées par un serveur central
 Minimisation de la redondance et de l’inconsistance
 Amélioration du contrôle des données
 Accès par langage standardisé (COBOL)

b. Bases de données et systèmes de gestion de bases de données durant la période phare

C’est la période du modèle relationnel des bases de données. Ce modèle est


inventé par Edgar Franck Codd en 1970. Il est fondé sur les principes suivants :

- Algèbre relationnelle, logique de prédicat de 1er ordre


- Indépendance des données
- Langages : SQL, QUEL, QBE
- Dépendances fonctionnelles, formes normales

Durant cette période, les bases de données transactionnelles OLTP sont conçues
pour la gestion des systèmes d’information des entreprises.
Définition de l’OLTP ou On-Line Transanctional Processing. OLTP désigne toutes
les bases de données destinées à gérer le traitement des données de manière
transactionnelle et fiable, à des fins de gestion d’une manière générale. On cite par
exemple les données comptables ou encore les données de ventes des supermarchés.

Ces BD se basent principalement sur le modèle relationnel permettant la gestion des


transactions. En effet, une transaction est définie comme étant une unité logique de
travail sur la base de données. Ce modèle respecte les propriétés ACID suivantes

- Atomicité : une transaction forme une unité indivisible, soit s’exécute


dans sa totalité, soit annulée dans sa totalité. ´
- Cohérence : Une transaction transforme la base de données d’un état
cohérent à un autre état cohérent
- Isolation : les transactions s’exécutent de manière indépendante les
unes des autres.
- Durabilité : les effets d’une transaction complètement achevée sont
inscrits de manière durable dans la base de données et ne peuvent subir
de perte à la suite d’une défaillance subséquente.

Les bases de données relationnelles sont gérées par des systèmes de gestion de bases
de données (SGBD). Un SGBD est un logiciel système servant à stocker, à manipuler
ou gérer, et à partager des informations dans une base de données, en garantissant la
qualité, la pérennité et la confidentialité des informations, tout en cachant la complexité
des opérations.

Exemples de SGBD

- Oracle
- SQL SERVER
- DB2
- INFORMIX

c. Bases de données et systèmes de gestion de bases de données durant la période nouvelle.

Cette période est celle des bases de données décisionnelles et celles utilisées dans la
gestion des données big data.
 Base de données décisionnelles

Les bases de données décisionnelles se basent sur :


- les entrepôts de données, Data Warehouse, sont des bases de données dédiées au
stockage de l'ensemble des données utilisées dans le cadre de la prise de
décision et de l'analyse décisionnelle. Le Data Warehouse est exclusivement
réservé à cet usage. Il est alimenté en données depuis les bases
transactionnelle de production grâce notamment aux outils d'ETL (Extract
Transform Load). Ensuite, les utilisateurs, analystes et décideurs, accèdent
aux données collectées et mises en forme pour étudier des cas précis de
réflexion. Ils construisent des modèles d'étude et de prospective pour limiter
la part d'incertitude lors du processus de prise de décision.
- Les bases de données multidimensionnelles : ces bases servent à stocker des
données , OLAP d’analyses, sous forme des cubes. L’OLAP (OnLine Analysis
Processing) est une technologie permettant d’effectuer des analyses de
données multidimensionnelles au sein de bases de données créées à cet effet.

II. Le BIG DATA

Le big data, « grosses données » ou mégadonnées , parfois appelées données


massives , désigne des ensembles de données devenus si volumineux qu'ils dépassent
l'intuition et les capacités humaines d'analyse et même celles des outils informatiques
classiques de gestion de base de données ou de l'information

1. Caractéristiques de Big data

Le big data est caractérisé par les 5 V suivants :


 Le volume
Le volume correspond à la masse d’informations produite chaque seconde. Selon des
études, pour avoir une idée de l’accroissement exponentiel de la masse de données, on
considère que 90 % des données ont été engendrées durant les années où l’usage
d’internet et des réseaux sociaux a connu une forte croissance. L’ensemble de toutes
les données produites depuis le début des temps jusqu’à la fin de l’année 2008,
conviendrait maintenant à la masse de celles qui sont générées chaque minute. Dans le
monde des affaires, le volume de données collecté chaque jour est d’une importance
vitale.
La vélocité
La vélocité équivaut à la rapidité de l’élaboration et du déploiement des nouvelles
données. Par exemple, si on diffuse des messages sur les réseaux sociaux, ils peuvent
devenir « viraux » et se répandre en un rien de temps. Il s’agit d’analyser les données
au décours de leur lignée (appelé parfois analyse en mémoire) sans qu’il soit
indispensable que ces informations soient entreposées dans une base de données.
La variété
Seulement 20% des données sont structurées puis stockées dans des tables de bases
de données relationnelles similaire à celles utilisées en gestion comptabilisée. Les 80%
qui restent sont non-structurées. Cela peut être des images, des vidéos, des textes,
des voix, et bien d’autres encore… La technologie Big Data, permet de faire l’analyse,
la comparaison, la reconnaissance, le classement des données de différents types
comme des conversations ou messages sur les réseaux sociaux, des photos sur
différents sites etc. Ce sont les différents éléments qui constituent la variété offerte
par le Big Data.

La véracité
La véracité concerne la fiabilité et la crédibilité des informations collectées. Comme
le Big Data permet de collecter un nombre indéfini et plusieurs formes de données, il
est difficile de justifier l’authenticité des contenus, si l’on considère les post Twitter
avec les abréviations, le langage familier, les hashTag, les coquilles etc. Toutefois, les
génies de l’informatique sont en train de développer de nouvelles techniques qui
devront permettre de faciliter la gestion de ce type de données notamment par le
W3C.
La valeur
La notion de valeur correspond au profit qu’on puisse tirer de l’usage du Big Data. Ce
sont généralement les entreprises qui commencent à obtenir des avantages incroyables
de leurs Big Data. Selon les gestionnaires et les économistes, les entreprises qui ne
s’intéressent pas sérieusement au Big Data risquent d’être pénalisées et écartées.
Puisque l’outil existe, ne pas s’en servir conduirait à perdre un privilège concurrentiel.

2. Sources de données
Les sources de données sont :

Le volume de données numériques ne cesse d’augmenter. Cette prolifération des


données est due à la numérisation croissante de tous les domaines du web et de
l’économie. C’est dans ce contexte que le big data est né, au moyen de la fusion de
diverses sources de données, structurées ou non structurées, telles que :

- L’utilisation d’internet sur les mobiles


- Les réseaux sociaux
- La géolocalisation
- Le cloud
- les données collectées des capteurs d’IOT
- Le streaming des médias

3. Utilités de Big Data

L’analyse de données de big data permet :

- de comprendre les besoins des individus et les contraintes des usagers


- d’adapter les infrastructures, réseaux et services (notamment services publics)
en fonction de leur utilisation
- d’assister la prise de décision des différents acteurs économiques (entreprises,
administration) ;
- d’anticiper les comportements des consommateurs (analyse prédictive) ;
- de faciliter l’évaluation des services ;
- d’améliorer l’utilisation des machines et appareils (amélioration des
performances, prévention des pannes, maintenance).

3. Domaines d’application de Big data


Le big data est appliquée dans plusieurs domaines tels que :
- Domaine de la santé, par exemple, le Big Data favorise une médecine
préventive et personnalisée. Ainsi, l’analyse des recherches des internautes sur
un moteur de recherche a déjà permis de détecter plus rapidement l’arrivée d’une
épidémie de grippe. Dans un futur proche, les appareils connectés devraient
permettre l’analyse en continu des données biométriques des patients.
- Domaine des transports, l’analyse des données du Big Data (données
provenant des pass de transport en commun, géolocalisation des personnes et
des voitures, etc.) permet de modéliser les déplacements des populations afin
d’adapter les infrastructures et les services (horaires et fréquence des trains, par
exemple).
- Domaine de la gestion énergétique, l’analyse des données issues du Big Data
intervient dans la gestion de réseaux énergétiques complexes via les réseaux
électriques intelligents (smartgrids) qui utilisent des technologies informatiques
pour optimiser la production, la distribution et la consommation de l’électricité.

De la même manière, l’analyse des données provenant de capteurs sur les avions
(données de vol) associées à des données météo permet de modifier les couloirs
aériens afin de réaliser des économies de carburant et d’améliorer la conception
et la maintenance des avions.
Il existe des utilisations concrètes du Big Data dans de nombreux autres
domaines : recherche scientifique, marketing, développement durable,
commerce, éducation, loisirs, sécurité, etc.
Chapitre 2 : Hadoop et Map-reduce

I. Hadoop
Hadoop est un framework open source développé en java, faisant partie des projets
de la fondation de logiciel Apache depuis 2009. Il est destiné à faciliter le
développement d’applications distribuées et scalables, permettant la gestion de
milliers de nœuds ainsi que des pétaoctets de données.

Doug Cutting, l’un des fondateurs de Hadoop, travaillant à l’époque sur le


développement de Apache Lucene, cherchait une solution quant à la distribution
du traitement. Il décidait donc de s’inspirer de la publication de Google sur leur
système de fichier distribué GFS (Google File System).

Hadoop s’inspire de deux produits, le premier est le « Google File System », un


système de fichiers distribués. Le deuxième est bien évidemment le modèle de
Programmation Map-Reduce, qui, en 2004, qui proposé par MountainView

I.1. Hadoop Distributed File System (HDFS)

Dans Hadoop, les différents types de données, qu’elles soient structurées ou non,
sont stockées à l’aide du HDFS. Le HDFS va prendre les données en entrée et va
ensuite les partitionner en plusieurs blocs de données. Afin de garantir une
disponibilité des données en cas de panne d’un nœud, le système fera un réplica
des données. Par défaut les données sont répliquées sur trois nœuds différents,
deux sur le même support et un sur un support différent. Les différents nœuds de
données peuvent communiquer entre eux pour rééquilibrer les données.
I.2. Typologies d’un cluster Hadoop

Hadoop repose sur un schéma dit « maître-esclave » et peut être décomposé en


cinq éléments.

 Le nom du nœud (Name Node) : Le « Name Node » est la pièce centrale


dans le HDFS, il maintient une arborescence de tous les fichiers du système
et gère l’espace de nommage. Il centralise la localisation des blocs de données
répartis sur le système. Sans le « Name Node » , les données peuvent être
considérées comme perdues car il s’occupe de reconstituer un fichier à partir
des différents blocs répartis dans les différents « Data Node ». Il n’y a qu’un
« Name Node » par cluster HDFS.
 Le gestionnaire de tâches (Job Tracker) : Il s’occupe de la coordination
des tâches sur les différents clusters. Il attribue les fonctions de Map-Reduce
aux différents « Task Trackers ». Le « Job Tracker » est un « Daemon »
cohabitant avec le « Name Node » et ne possède donc qu’une instance par
cluster.
 Le moniteur de tâches (Task tracker) : Il permet l’exécution des ordres de
map-Reduce, ainsi que la lecture des blocs de données en accédant aux
différents « Data Nodes ». Par ailleurs, le « Task Tracker » notifie de façon
périodique au « Job Tracker » le niveau de progression des tâches qu’il
exécute, ou alors d’éventuelles erreurs pour que celui-ci puisse reprogrammer
et assigner une nouvelle tâche. Un « Task Tracker »
 Le nœud secondaire (Secondary node) : N’étant initialement pas présent
dans l’architecture Hadoop, celui-ci a été ajouté par la suite afin de répondre
au problème du point individuel de défaillance (SPOF- Single point of failure).
Le « Secondary Node » va donc périodiquement faire une copie des données
du « Name Node » afin de pouvoir prendre la relève en cas de panne de ce
dernier.
 Le nœud de données (Data Node) : Il permet le stockage des blocs de
données. Il communique périodiquement au « Name Node » une liste des
blocs qu’il gère. Un HDFS contient plusieurs nœuds de données ainsi que des
réplications d’entre eux. Ce sont les nœuds esclaves.
,

Architecture d’un cluster Hadoop


Un cluster Hadoop peut-être constitué de machines hétérogènes, que ce soit au
niveau du hardware comme au niveau software (système d’exploitation).
Cependant, il est bien plus simple d’administrer un cluster de type homogène.

II. Map-Reduce

Le traitement de données de façon distribuée soulève certaines questions,


comment distribuer le travail entre les serveurs ? Comment synchroniser les
différents résultats ? Comment gérer une panne d’une unité de traitement ? Map-
Reduce répond à ces problèmes.

Il ne s’agit pas d’un élément de base de données, mais d’un modèle de


programmation s’inspirant des langages fonctionnels et plus précisément du
langage Lisp. Il permet de traiter une grande quantité de données de manière
parallèle, en les distribuant sur divers nœuds d’un cluster. Ce mécanisme a été
mis en avant par Google en 2004 et a connu un très grand succès auprès des
sociétés utilisant des DataCenters telles que Facebook ou Amazon.

1. Principe de Map-Reduce

Le principe de Map-Reduce est simple: il s’agit de découper une tâche manipulant


un gros volume de données en plusieurs tâches traitant chacune un sous-ensemble
de ces données. Map-Reduce est vu en deux étapes. La première étape, appelé «
map » consiste à dispatcher une tâche, ainsi que les données quelle traite en
plusieurs sous-tâches traitant chacune d’elles un sous-ensemble de données. La
deuxième étape se nomme « Reduce ». Dans cette partie il s’agit de récupérer les
résultats des différents serveurs (à savoir les sous-tâches) et de les consolider.
Bien que le principe soit relativement simple, il l’est surtout grâce à l’apport du
modèle Map-Reduce simplifiant au maximum les complexités de l’informatique
distribuée. Il permet ainsi aux développeurs de se focaliser sur le traitement. Le
fait que Map-Reduce soit développé en java permet de s’abstraire de l’architecture
matérielle pour qu’un framework Map-Reduce puisse tourner sur un ensemble de
machines hétérogènes.
2. Fonctionnement de MapReduce

Le modèle MapReduce consiste en deux étapes, représentées toutes deux par des
fonctions. Dans la fonction map on prend en entrée un ensemble de « clé-valeurs
», le nœud fait une analyse du problème et il va le séparer en sous-tâches, pour
pouvoir les redistribuer sur les autres nœuds du cluster. Dans le cas nécessaire,
les nœuds recevant les sous-tâches refont le même processus de manière
récursive. Les sous-tâches des différents nœuds sont traitées chacune d’entre elles
dans leur fonction map respective et vont retourner un résultat intermédiaire. La
deuxième étape nommé « Reduce », consiste à faire remonter tous les résultats à
leur nœud parents respectif. Les résultats se remonte donc du nœud le plus bas
jusqu’à la racine. Avec la fonction Reduce, chaque nœud va calculer un résultat
partiel en associant toutes les valeurs correspondant à la même clé en un unique
couple (clé – valeur). Une fois obtenu ce couple (clé-valeur), le résultat est remonté
au nœud parent, qui va refaire le même processus de manière récursive jusqu’au
nœud racine. Quand un nœud termine le traitement d’une tâche, un nouveau bloc
de données est attribué à une tâche Map. Voici un schéma illustrant tout ça.
Exemple d’utilisation.

Le problème ici sera de compter le nombre d’occurrence de chaque mot. Comme


données en entrée nous allons avoir des fichiers texte. La fonction Map aura pour but
de décomposer le texte en couple de mots clé-valeur. La fonction Reduce va prendre
les couples avec la même clé et compter la totalité des occurrences pour ne faire
qu’une seul paire clé-valeur par mot.
III. L’écosystème de Hadoop

Il y a beaucoup de de solutions qui gravitent autour de hadoop et qui forme son écosystème
complexe. Nous illustrons une liste non-exhaustive des principales solutions.

Les outils logiciels qui peuvent coexister avec hadoop sont :

 HDFS (Hadoop Distributed File System) : C’est le Système de stockage de fichiers


distribué de Hadoop. Il permet de stocker au format natif n’importe quel objets (image,
vidéo, fichiers texte etc…) en faisant porter la charge sur plusieurs serveurs.7

 HBASE : Base NoSQL orientée colonnes. Le stockage à proprement parler reste du HDFS
mais hbase apporte une surcouche de stockage qui permet de bénéficier des avantages des
bases orientées colonnes, à savoir les colonnes dynamiques (deux individus d’une même
table n’ont pas forcément les même colonnes, les valeurs null ne sont pas stockées) et
l’historisation à la valeur et non-plus à la ligne (suppression des doublons, quand une
valeur change seule la valeur concernée est historisée et non toute la ligne).

 Metastore de HIVE : Le metastore de Hive apporte le côté base de données relationnelle


dans Hadoop. Il permet de stocker la structure des tables et des bases de données créées
via hive ou un autre framework SQL (impala, spark etc…..). Les données restent stockées
en hdfs mais le metastore apporte une surcouche qui permet de connaître leurs structures
et de retrouver cette notion de ‘tables’ connu en décisionnel et d’utiliser le SQL.
Gestionnaires de ressources
 Yarn (Yet Another Resource Negotiator) : il s’occupe de la gestion et de l’allocation
des ressources (CPU, Ram etc..) aux différentes applications (mapreduce, spark, impala
etc…) lancées sur le cluster.

 Mesos : Projet Apache plus récent que Yarn, c’est aussi un système de gestion de
ressource de clusters. Il va permettre de gérer et de partager de manière fine, souple et
dynamique des ressources entre différents clusters, pour diverses applications.
Récupération des données

 Apache Flume : C’est un système distribué permettant de récupérer des logs de plusieurs
sources, de les agréger et de les pousser dans HDFS. Il est fiable, flexible, assez intuitif et
porté par toutes les distributions Hadoop.

 Apache Storm : Système distribué qui permet la récupération et le traitement en temps


réel, il ajoute des capacités de traitements de données à Hadoop.

 Spark Streaming : Librairie de spark permettant la récupération et le traitement de


donnée en temps réel. (requiert l’installation de spark, voir plus loin)

 Kafka : Système distribué de messagerie pour l’agrégation de log, le traitement en temps


réel et le monitoring. Développé par linkedin et écrit en scala.
 Flink : Il fournit un framework de traitements distribué en mémoire. Très similaire à
spark sauf que son coeur est en java (vs scala) et qu’il a été conçu nativement pour le temps
réel.

 Apache Sqoop : Ce projet permet de faire le lien entre un système de gestion de base de
données relationnel (SGBDR) et HDFS. Moteurs d’interrogation et de manipulation des
données

 MapReduce : Framework open source java, permettant la manipulation des données dans
un environnement distribué. Il est composé de deux étapes principales.
 L’étape de map qui va permettre d’effectuer des actions là ou sont stockées les
données et fournir en sortie une liste de clés valeurs.
 L’étape de reduce qui va regrouper les résultats des map en fonctions de clés et
effectuer les actions finales ( les actions sur les valeurs?).
Les étapes de map et de reduce lisent les données et écrivent leurs résultats sur disque ,
cela rend le processus stable mais lent.

 Impala : Moteur SQL distribué mis en place et proposé par Cloudera. Il s’appuie sur le
metastore de hive pour connaître le format des données. Il va 20 fois plus que vite que
MapReduce mais n’est pour l’instant qu’un complément car il n’offre pas encore toutes les
fonctionnalités de mapreduce (sérialisation notamment)

 Apache Drill : Moteur SQL open source développé initialement par MapR et maintenant
porté par la fondation Apache permettant d’explorer les données stockées dans un cluster
Hadoop ou dans des bases NoSQL. Apache Drill permet d’exécuter des requêtes sans avoir
à définir un schéma de données, ce qui offre une grande flexibilité aux utilisateurs.

 Apache Tez : Moteur SQL distribué initié par Hortonworks qui vise à remplacer
mapreduce notamment au niveau de Hive.
 Spark : Projet permettant la manipulation des données dans un environnement distribué.
Il peut aussi bien faire les traitements sur disque ou tout en mémoire. Il va 10 fois plus
vite que mapreduce sur disque et 100 fois plus vite en mémoire. Il est enrichi de librairies
notamment MLiB qui contient des algorithmes parallélisés de machine learning, GraphX
pour les algorithmes de graphes, SparkSQL pour notamment se connecter au metastore
de Hive. Spark peut se plugger sur la majorité des systèmes distribués (NoSQL, Hadoop,
MPP …). Il peut fonctionner en mode standalone ou être géré par un gestionnaire de
ressources tel que Yarn ou Mesos. Il permet nativement de coder en scala, java ou python.

 Hive : Hive est donc composé d’un metastore et d’un driver. Ce dernier va permettre de
prendre en entrée du SQL et de générer du map reduce pour manipuler des données dont
on connaît la structure.

 Pig : Moteur permettant de manipuler tous types de données avec un langage beaucoup
plus intuitif que le java mapreduce. Il est beaucoup utilisé pour tous les process ETL
(extraction transformation de données), il permet d’aller plus loin que le SQL. Une fois
exécuter le code Pig génère du mapreduce.

 Mahout : Librairie java contenant des algorithmes de machine learning déjà codé en map
reduce. Son développement est ralenti au profit de la librairie Mlib de Spark
Ordonnanceurs
 Oozie : Il permet d’ordonnancer et de lancer tous types d’applications (spark, impala, shell,
hive, pig ….) dans l’écosystème Hadoop.

 Airflow : Outil open source développé par airbnb qui permet d’ordonnancer des jobs shell
en intégrant nativement la notion de flux.

 Jenkins : Permet d’ordonnancer et de scheduler des job shell Interfaces et coordinations


 Zookeeper : Zookeeper permet de mettre en œuvre la coordination des services de
l’écosystème et leur synchronisation dans un environnement distribué. Seul les
administrateurs peuvent être amené à interagir avec lui.

 Hue : Interface web qui permet d’accéder directement aux principaux modules (hive, pig,
sqoop, spark, impala, etc……). Nativement on peut accéder aux modules en ligne de
commandes. Hue apporte une interface commune et agréable d’utilisation.

Vous aimerez peut-être aussi