Panorama Du Big Data
Panorama Du Big Data
Panorama Du Big Data
Cours BACHELOR 3
Présenté par : Mr. Menounga Guy Charly, Ingénieur informatique, DG Big Data Solution SARL
PLAN
Le big data
Les des du Big Data
Principes des infrastructures matérielles et logicielles du Big Data
Actions sur les données dans le Big Data
Quelques exemples
Hadoop
Base de données non-relationnelles
ACID/BASE
Catégories des bases NoSQL
Apache Spark
I. Le big data
Historique
1992 : la National Science Foundation autorise le web commercial, premier site e-commerce "books.com"
1994 : premier paiement en ligne securise realise sur le site NetMarket
1995 : debut de l'e-commerce (Pizza Hut, Amazon, Ebay)
❖ Apparition de nouveaux modeles :
❖ B2C : business-to-consumer
❖ C2C : consumer-to-consumer
❖ B2B2C : business-to-business-to-consumer
Être dans le Big Data, c'est rencontrer une évolution significative dans un seul
ou dans plusieurs des 3V.
Si les bases de données relationnelles avaient pu gérer les 3V, on ne parlerait
pas de Big Data.
I. Le big data
Les défis du big data
❖ Stockage de données : Les données destinées aux opérations de traitement par lots sont généralement stockées
dans un magasin de fichiers distribués, qui peut contenir de vastes volumes de fichiers volumineux dans divers
formats.
❖ Traitement par lots : Étant donné que les jeux de données sont trop lourds, une solution Big Data doit souvent
traiter les fichiers de données à l’aide de traitements par lots à longue durée d’exécution pour filtrer, agréger et
préparer les données en vue de l’analyse
❖ Magasin de données analytique : De nombreuses solutions Big Data préparent les données pour l’analyse, puis
fournissent les données traitées dans un format structuré qui peut être interrogé à l’aide des outils d’analyse
❖ Orchestration : La plupart des solutions Big Data consistent en des opérations de traitement de données
répétées, encapsulées dans des workflows, qui transforment les données source, déplacent les données entre
plusieurs sources et récepteurs, chargent les données traitées dans un magasin de données analytique, ou
envoient les résultats directement à un rapport ou à un tableau de bord
II. ARCHITECTURE BIG DATA
3. Architecture Lambda
Lorsque vous utilisez des jeux de données très volumineux, l'exécution des requêtes des
clients peut prendre beaucoup de temps. Ces requêtes ne peuvent pas être effectuées
en temps réel et nécessitent souvent des algorithmes comme MapReduce, qui
s’exécutent en parallèle sur l’ensemble du jeu de données. Les résultats sont ensuite
stockés séparément des données brutes et utilisés à des fins d’interrogation.
• une couche de traitement par lots (chemin à froid) stocke toutes les données
entrantes dans leur forme brute et effectue un traitement par lots de ces
données. Le résultat de ce traitement est stocké sous forme d’une vue de
traitement par lots.
• Une couche vitesse (chemin réactif) analyse les données en temps réel. Cette
couche est conçue pour une faible latence, au détriment de la précision.
La couche de traitement par lots alimente une couche service qui indexe la vue de
traitement par lots pour améliorer l’interrogation. La couche vitesse met à jour de
la couche service avec les mises à jour incrémentielles basées sur les données les
plus récentes.
II. ARCHITECTURE BIG DATA
3. Architecture Lambda
Les données qui circulent dans le chemin réactif sont limitées par les conditions de latence imposées par la couche
vitesse, afin de garantir un traitement aussi rapide que possible. Souvent, cela nécessite d’accepter une certaine perte
de précision afin d’obtenir les données aussi rapidement que possible. Par exemple, imaginons un scénario IoT où un
grand nombre de capteurs de température transmettent des données de télémétrie. La couche vitesse permet de
traiter les données entrantes dans une fenêtre temporelle coulissante.
En revanche, les données qui transitent par le chemin à froid ne sont pas soumises aux mêmes exigences de faible
latence. Cela permet d’obtenir un calcul plus précis sur plusieurs jeux de données volumineux, une tâche qui peut
prendre beaucoup de temps.
Pour finir, le chemin relatif et le chemin à froid convergent au niveau de l’application cliente analytique. Si le client a
besoin d’afficher en temps opportun des données potentiellement moins précises en temps réel, il obtiendra son
résultat avec le chemin réactif. Sinon, il devra sélectionner les résultats avec le chemin à froid pour obtenir des données
plus précises mais à un moment moins opportun.
II. ARCHITECTURE BIG DATA
4. Architecture Kappa
Un inconvénient de l’architecture lambda est sa complexité. La
logique de traitement apparaît dans deux emplacements
différents, le chemin froid et le chemin chaud, utilisant deux
infrastructures différentes. Cela double la logique de calcul et la
complexité de la gestion de l’architecture pour ces deux chemins.
• HDFS un système de fichier qui répartit les données sur de nombreuses machines,
• YARN un mécanisme d’ordonnancement de programmes de type MapReduce.
III. HADOOP
1. HDFS
a. Présentation
HDFS est un système de fichiers distribué. C’est à dire :
HDFS permet de voir tous les dossiers et fichiers de ces milliers de machines comme un seul
arbre, contenant des Po de données, comme s’ils étaient sur le disque dur local.
III. HADOOP
1. HDFS
b. Organisation des fichiers
Vu de l’utilisateur, HDFS ressemble à un système de fichiers Unix :
il y a une racine, des répertoires et des fichiers. Les fichiers ont un propriétaire, un groupe et des droits
d’accès comme avec ext4.
Sous la racine /, il y a :
❖ des répertoires pour les services Hadoop : /hbase, /tmp, /var
❖ un répertoire pour les fichiers personnels des utilisateurs : /user (attention, ce n’est ni /home, ni /users
comme sur d’autres systèmes Unix). Dans ce répertoire, il y a aussi trois dossiers système : /user/hive,
/user/history et /user/spark.
❖ un répertoire pour déposer des fichiers à partager avec tous les utilisateurs : /share
Les blocs d’un même fichier ne sont pas forcément tous sur la même machine. Ils sont copiés chacun sur
différentes machines afin d’y accéder simultanément par plusieurs processus. Par défaut, chaque bloc est copié
sur 3 machines différentes (c’est configurable).
Cette réplication des blocs sur plusieurs machines permet aussi de se prémunir contre les pannes. Chaque fichier
se trouve donc en plusieurs exemplaires et à différents endroits.
III. HADOOP
1. HDFS
e. Comment fonctionne HDFS ?
Un cluster HDFS est constitué de machines jouant différents rôles exclusifs entre eux :
❖ L’une des machines est le maître HDFS, appelé le namenode. Cette machine contient tous les noms et blocs des
fichiers, comme un gros annuaire téléphonique.
❖ Une autre machine est le secondary namenode, une sorte de namenode de secours, qui enregistre des
sauvegardes de l’annuaire à intervalles réguliers.
❖ Certaines machines sont des clients. Ce sont des points d’accès au cluster pour s’y connecter et travailler.
❖ Toutes les autres machines sont des datanodes. Elles stockent les blocs du contenu des fichiers.
III. HADOOP
1. HDFS
g. Un schéma des nodes HDFS
Les datanodes contiennent des blocs (A, B, C. . . ), le namenode sait où sont les fichiers : quels blocs et sur quels
datanodes.
III. HADOOP
1. HDFS
h. Explications
Les datanodes contiennent des blocs. Les mêmes blocs sont dupliqués (replication) sur différents datanodes, en
général 3 fois. Cela assure :
❖ fiabilité des données en cas de panne d’un datanode,
❖ accès parallèle par différents processus aux mêmes données.
Le namenode sait à la fois :
❖ sur quels blocs sont contenus les fichiers,
❖ sur quels datanodes se trouvent les blocs voulus.
On appelle cela les metadata.
Inconvénient majeur : panne du namenode = mort de HDFS, c’est pour éviter ça qu’il y a le secondary namenode.
Il archive les metadata, par exemple toutes les heures.
III. HADOOP
1. HDFS
j. Mode high availability
Comme le namenode est absolument vital pour HDFS mais unique, Hadoop propose une configuration appelée
high availability dans laquelle il y a 2 autres namenodes en secours, capables de prendre le relais
instantanément en cas de panne du namenode initial.
Les namenodes de secours se comportent comme des clones. Ils sont en état d’attente et mis à jour en
permanence à l’aide de services appelés JournalNodes.
Les namenodes de secours font également le même travail que le secondary namenode, d’archiver
régulièrement l’état des fichiers, donc ils rendent ce dernier inutile.
III. HADOOP
2. Algorithme MapReduce
a. Principes
On veut recueillir une information synthétique à partir d’un jeu de données.
Exemples sur une liste d’articles possédant un prix :
❖ calculer le montant total des ventes d’un article,
❖ trouver l’article le plus cher,
❖ calculer le prix moyen des articles.
Pour chacun de ces exemples, le problème peut s’écrire sous la forme de la composition de deux fonctions :
❖ map : extraction/calcul d’une information sur chaque n-uplet,
❖ reduce : regroupement de ces informations.
III. HADOOP
2. Algorithme MapReduce
Exemple
Soient les 4 n-uplets fictifs suivants :
Calculer le prix maximal, moyen ou total peut s’écrire à l’aide d’algorithmes, étudiés en première année, du type :
Par exemple, FonctionM extrait le prix d’une voiture, FonctionR calcule le max d’un ensemble de valeurs :
tous_les_prix = liste()
pour chaque voiture, faire :
tous_les_prix.ajouter( getPrix(voiture courante) )
retourner max(tous_les_prix)
Pour l’efficacité, les valeurs intermédiaires ne sont pas stockées mais transmises entre les deux fonctions par une
sorte de tube (comme dans Unix). Le programme ne s’écrit donc pas tout à fait comme ça.
III. HADOOP
2. Algorithme MapReduce
Exemple en Python
Voici comment on l’écrit en Python2 :
III. HADOOP
2. Algorithme MapReduce
b. Explications
❖ L’écriture map(fonction, liste) applique la fonction à chaque élément de la liste. Elle effectue la boucle
« pour » de l’algorithme précédent et retourne la liste des prix des voitures. Ce résultat contient
autant de valeurs que dans la liste d’entrée.
❖ La fonction reduce(fonction, liste) agglomère les valeurs de la liste par la fonction et retourne le
résultat final.
Ces deux fonctions constituent un couple « map-reduce » et le but de ce cours est d’apprendre à les comprendre et
les programmer.
Le point clé est la possibilité de paralléliser ces fonctions afin de calculer beaucoup plus vite sur une machine ayant
plusieurs cœurs ou sur un ensemble de machines reliées entre elles.
III. HADOOP
2. Algorithme MapReduce
c. Parallélisation de Map
La fonction map est par nature parallélisable, car les calculs sont indépendants.
Exemple, pour 4 éléments à traiter :
❖ valeur1 = FonctionM(element1)
❖ valeur2 = FonctionM(element2)
❖ valeur3 = FonctionM(element3)
❖ valeur4 = FonctionM(element4)
Les quatre calculs peuvent se faire simultanément, par exemple sur 4 machines différentes, à condition que
les données y soient copiées.
Remarque : il faut que la fonction mappée soit une pure fonction de son paramètre, qu’elle n’ait pas
d’effet de bord tels que modifier une variable globale ou mémoriser ses valeurs précédentes.
III. HADOOP
2. Algorithme MapReduce
d. Parallélisation de Reduce
La fonction reduce se parallélise partiellement, sous une forme hiérarchique, par exemple :
❖ inter1 et 2 = FonctionR(valeur1, valeur2)
❖ inter3 et 4 = FonctionR(valeur3, valeur4)
❖ resultat = FonctionR(inter1 et 2, inter3 et 4)
Seuls les deux premiers calculs peuvent être faits simultanément. Le 3e doit attendre. S’il y avait davantage de
valeurs, on procéderait ainsi :
1. calcul parallèle de la FonctionR sur toutes les paires de valeurs issues du map
2. calcul parallèle de la FonctionR sur toutes les paires de valeurs intermédiaires issues de la phase
précédente.
3. et ainsi de suite, jusqu’à ce qu’il ne reste qu’une seule valeur.
III. HADOOP
2. Algorithme MapReduce
Un schéma
III. HADOOP
3. YARN
a. Qu’est-ce que YARN ?
YARN (Yet Another Resource Negociator) est un mécanisme dans Hadoop permettant de gérer des travaux (jobs) sur
un cluster de machines.
YARN permet aux utilisateurs de lancer des jobs MapReduce sur des données présentes dans HDFS, et de suivre
(monitor) leur avancement, récupérer les messages (logs) affichés par les programmes.
Éventuellement YARN peut déplacer un processus d’une machine à l’autre en cas de défaillance ou d’avancement
jugé trop lent.
En fait, YARN est transparent pour l’utilisateur. On lance l’exécution d’un programme MapReduce et YARN fait en
sorte qu’il soit exécuté le plus rapidement possible.
III. HADOOP
3. YARN
a. Paires clé-valeurs
C’est en fait un peu plus compliqué que ce qui a été expliqué initialement. Les données échangées entre Map
et Reduce, et plus encore, dans la totalité du job sont des paires (clé, valeur) :
C’est cette notion qui rend les programmes assez étranges au début : les deux fonctions Map et Reduce
reçoivent des paires (clé, valeur) et émettent d’autres paires, selon les besoins de l’algorithme.
III. HADOOP
3. YARN
a. Map
La fonction Map reçoit une paire en entrée et peut produire un nombre quelconque de paires en sortie :
aucune, une ou plusieurs, à volonté. Les types des entrées et des sorties sont comme on veut.
Cette spécification très peu contrainte permet de nombreuses choses. En général, les paires que reçoit Map
sont constituées ainsi :
❖ la valeur de type text est l’une des lignes ou l’un des n-uplets du fichier à traiter
❖ la clé de type integer est la position de cette ligne dans le fichier (on l’appelle offset en bon
français)
Il faut comprendre que YARN lance une instance de Map pour chaque ligne de chaque fichier des données à
traiter. Chaque instance traite la ligne qu’on lui a attribuée et produit des paires en sortie.
III. HADOOP
3. YARN
a. Schéma Map
Les tâches MAP traitent chacune une paire et produisent 0..n paires. Il se peut que les mêmes clés et/ou valeurs
soient produites.
III. HADOOP
3. YARN
a. Reduce
La fonction Reduce reçoit une liste de paires en entrée. Ce sont les paires produites par les instances de Map.
Reduce peut produire un nombre quelconque de paires en sortie, mais la plupart du temps, c’est une seule.
Par contre, le point crucial, c’est que les paires d’entrée traitées par une instance de Reduce ont toutes la
même clé.
YARN lance une instance de Reduce pour chaque clé différente que les instances de Map ont produit, et leur
fournit uniquement les paires ayant la même clé. C’est ce qui permet d’agréger les valeurs.
En général, Reduce doit faire un traitement sur les valeurs, comme additionner toutes les valeurs entre elles,
ou déterminer la plus grande des valeurs. . .
Quand on conçoit un traitement MapReduce, on doit réfléchir aux clés et valeurs nécessaires pour que ça
marche.
III. HADOOP
3. YARN
a. Schéma Reduce
Les tâches Reduce reçoivent une liste de paires ayant toutes la même clé et produisent une paire qui
contient le résultat attendu. Cette paire en sortie peut avoir la même clé que celle de l’entrée.
III. HADOOP
3. YARN
Exemple
Une entreprise de téléphonie veut calculer la durée totale des appels téléphoniques d’un abonné à partir
d’un fichier CSV contenant tous les appels de tous les abonnés (n° d’abonné, n° appelé, date, durée
d’appel). Ce problème se traite ainsi :
4. Which of the following Big Data Platform components can cost effectively analyze petabytes of structured and
unstructured data at rest?
A. Stream Computing
B. Systems Management
C. Contextual Discovery
D. Hadoop System
E. Accelerators
Exercices 1:
5. What is Hadoop?
A. An open-source software framework for distributed storage and distributed processing of Big Data on clusters of
commodity hardware.
B. It was conceived for high-end, expensive hardware
C. An environment for on-line transaction processing
D. It consists of 3 sub projects: MapReduce, Hive and Hadoop Common.
E. All of the Above
11. A ________ node acts as the Slave and is responsible for executing a Task assigned to it by the JobTracker.
A. MapReduce
B. Mapper
C. TaskTracker
D. JobTracker
15. __________ maps input key/value pairs to a set of intermediate key/value pairs.
A. Mapper
B. Reducer
C. Both Mapper and Reducer
D. None of the mentioned
18. __________ is a generalization of the facility provided by the MapReduce framework to collect data output by the
Mapper or the Reducer
A. Partitioner
B. OutputCollector
C. Reporter
D. All of the mentioned
19. _________ is the primary interface for a user to describe a MapReduce job to the Hadoop framework for execution.
A. Map Parameters
B. JobConf
C. MemoryConf
D. All of the mentioned
Exercices 1:
20. A ________ serves as the master and there is only one NameNode per cluster
A. Data Node
B. NameNode
C. Data block
D. Replication
22. Which of the following scenario may not be a good fit for HDFS?
A. HDFS is not suitable for scenarios requiring multiple/simultaneous writes to the same file
B. HDFS is suitable for storing data related to applications requiring low latency data access
C. HDFS is suitable for storing data related to applications requiring high latency data access
D. None of the mentioned
Exercices 1:
23. ________ is the slave/worker node and holds the user data in the form of Data Blocks
A. DataNode
B. NameNode
C. Data block
D. Replication
24. HDFS provides a command line interface called __________ used to interact with HDFS.
A. HDFS Shell
B. FS Shell
C. DFSA Shell
D. None
Exercices 2:
Dans une architecture classique de centre de calcul HPC, on trouve des "baies de nœuds de calculs très fiables" qui lisent
leurs données et écrivent leurs résultats finaux dans des "baies de disques également très fiables" accédées à travers un
réseau rapide.
1. A l’opposé, quel type de matériel trouve-t-on dans une architecture distribuée de stockage et de traitement de
données comme Hadoop (cluster Hadoop) ?
2. Quel est l’impact sur la politique de tolérance aux pannes d’Hadoop ?
3. Que se passe-t-il lorsqu’un nœud de données qui n’accueille aucun calcul tombe en panne ?
4. Quels critères sont utilisés pour décider sur quels nœuds exécuter un traitement des données?
IV. APACHE SPARK
1. Présentation de Spark
Spark est une API de programmation parallèle sur des données.
Ce traitement n’est effectué que lorsque cela apparaît nécessaire. On appelle cela
l’évaluation paresseuse. D’autre part, Spark fait en sorte que le traitement soit
distribué sur le cluster, donc calculé rapidement, et n’échoue pas même si des
machines tombent en panne.
IV. APACHE SPARK
2. Avantages de spark
Spark permet d’écrire des traitements complexes composés de plusieurs phases map-reduce. On
peut le faire également avec YARN, mais les données issues de chaque phase doivent être
stockées sur HDFS, pour être réutilisées immédiatement après dans la phase suivante. Cela prend
beaucoup de temps et d’espace.
Les jobs YARN sont assez longs à lancer et exécuter. Il y a des temps de latence considérables.
Au contraire, Spark utilise beaucoup mieux la mémoire centrale des machines du cluster et gère
lui-même l’enchaînement des tâches.
Les traitements peuvent être écrits dans plusieurs langages : Scala, Java et Python. On utilisera ce
dernier pour sa simplicité pédagogique et le fait que vous l’apprenez dans d’autres cours.
IV. APACHE SPARK
3. Architecture Spark
IV. APACHE SPARK
3. Architecture Spark
1.Création
➢Chargement données depuis SGF distribué/local
➢Transformation d’une RDD existante
Note : RDD est une séquence d’enregistrements
2.Transformations
➢map : applique une fonction à chaque élément
➢filter : restreint aux éléments selon condition
➢join : combine deux RDD sur la base des clés
IV. APACHE SPARK
4. Fonctionnement de Spark
3. Actions
➢collect : retourne les éléments
➢count : comptes les éléments
➢save : écrit les données sur le SF
4. Paramétrage du stockage en mémoire
➢persist : force le maintien en mémoire
➢unpersist : force l’écriture sur disque
• Notes :
➢par défaut, les RDD sont persistantes en mémoire
➢Si manque d’espace alors écriture sur disque
➢Possibilité d’attribuer des priorités
IV. APACHE SPARK
4. Fonctionnement de Spark
IV. APACHE SPARK
5. Illustration d’une RDD
On considère une chaîne de traitements classique
1. Chargement depuis stockage (local ou hdfs)
2. Application d’un filtre simple
3. Cardinalité du résultat de 2
4. Paramétrage de la persistance
Lazy evaluation
Construire les RDDs seulement si action (mode pipelined)
Exemple : lines n’est construit qu’à la ligne 3
-> Chargement sélectif de file.txt
TD SPARK