Vous êtes sur la page 1sur 100

Université Virtuelle du Sénégal

Master Big Data & Analytics| Année: M1


Unité d’enseignement: Infrastructures Big data
Module: Virtualisation /Cloud/Plateforme Big Data

Session 05 – Outils de traitement du Big Data

UVS, Dakar, Aout 2023


Master M1 Big Data & Analytics
Papa Mbaye TINE, Ing., MS., MSc.
2

Objectifs de la session

• Une vue des outils principaux pour le traitement du Big Data.


• Présenter quelques outils/Frameworks de chaque catégorie.
• Ce sera aussi une session pour revoir les outils autour de l’écosystème d’Hadoop.
• En fin de session les outils de déploiement et d’automatisation d’infrastructure
seront abordés.
3

Agenda
1. Outils de gestion de « grandes
volumes » de logs
2. Frameworks Big Data
o Hadoop/MapReduce (rappel)
o Apache Spark
o Apache Kafka et autres outils
3. Outils de déploiement et
d’automatisation
4
5

Introduction
• Une explosion des données
Volume of data/information created,
captured, copied, and consumed
worldwide from 2010 to 2024 (in
zettabytes).
Source:
https://www.statista.com/statistics/8
71513/worldwide-data-created/

1 Zetta octet= 𝟏𝟎𝟐𝟏 𝐆𝐢𝐠𝐚 𝐨𝐜𝐭𝐞𝐭𝐬


6

Introduction (suite)

Exploitation des données

Outils de gestion de « grandes volumes » de logs

Des outils et des Frameworks

Frameworks de big data

Objectif: Présenter quelques outils/Frameworks de chaque catégorie


7

Outils de gestion de « grandes volumes » de logs: Introduction (1/3)


Une interface par machine/application ?
Comment surveiller ?

Objectif: Présenter quelques outils/Frameworks de chaque catégorie


8

Outils de gestion de « grandes volumes » de logs: Introduction (2/3)

Une seule interface

Les outils de gestion de « grandes volumes » de logs


9

Outils de gestion de « grandes volumes » de logs: Introduction (3/3)

Plusieurs outils Open source/Payants

Mêmes fonctionnalités Deux outils

ELK Splunk
10

Outils de gestion de « grandes volumes » de logs : ELK, Présentation


ELK est une suite de 3 outils open source:

ElasticSearch Logstash Kibana

Lancé en 2010 +100 contributeurs

Source : https://github.com/elastic
11

Outils de gestion de « grandes volumes » de logs : ELK, Comment ça marche ? (1/2)

Collecter

Logstash Elastic-Search Kibana Chercher

ELK Visualiser

Source : https://www.elastic.co/
12

Outils de gestion de « grandes volumes » de logs : ELK, Comment ça marche ? (2/2)

Architecture simplifiée: mapping des fonctionnalités

Source : https://www.elastic.co/
13

Simplifier l'ingestion de données avec ELK: intégration RDBMS

Architecture simplifiée: Exemple d'intégration Elastic avec une RDBMS

Source : https://www.elastic.co/
14

Simplifier l'ingestion de données avec ELK: intégration avec Hadoop

Architecture simplifiée: Exemple d'intégration Elastic avec Hadoop


Source : https://www.elastic.co/
15

Simplifier l'ingestion de données avec ELK: intégration avec Machine Learning

Architecture simplifiée: Exemple d'intégration Elastic avec Machine Learning

Source : https://www.elastic.co/
16

Elastic: une compagnie crée qui distribue commercialement ELK (1/2)

Source : https://www.elastic.co/
17

Elastic: une compagnie crée qui distribue commercialement ELK (2/2)

Source : https://www.elastic.co/
18

Utilisation Elastic par Orange – Orange Business

Source : https://www.elastic.co/
19

Utilisation Elastic par Orange – France

Source : https://www.elastic.co/
20

Utilisation Elastic par Orange – International

Source : https://www.elastic.co/
21

Utilisation Elastic – Uses cases Télécommunications

Source : https://www.elastic.co/
22

Utilisation Elastic – SIEM pour la cybersécurité

Source : https://www.elastic.co/
23

Outils de gestion de « grandes volumes » de logs : Splunk, Présentation (1/2)

Lancé en 2006 Analyse et collecte de données

Large communauté API REST / SDK

Source : https://community.splunk.com/t5/Community/ct-p/en-us
24

Outils de gestion de « grandes volumes » de logs : Splunk, Présentation (2/2)

Collecter

Splunk Chercher

Visualiser

Source : https://community.splunk.com/t5/Community/ct-p/en-us
25

Outils de gestion de « grandes volumes » de logs : Splunk, Architecture

Architecture simplifiée: mapping des fonctionnalités

Source : https://community.splunk.com/t5/Community/ct-p/en-us
26
27

Frameworks Big Data: Hadoop, Présentation (rappel)

Framework open source Créer par Doug Cutting et Mike


écrit en Java Cafarella en 2006

Fondation Apache
28

Frameworks Big Data: Hadoop, Présentation (rappel)

Traitement : Map Reduce

Stockage Hadoop Distributed


file System (HDFS)
29

Frameworks Big Data: Hadoop, Traitement (rappel)

Hadoop utilise principalement le disque, d’où l’importance du système de fichiers distribués HDFS.
HDFS est un élément central d’Hadoop utilisé comme stockage quelques soit le type d’algorithme utilisé
(MapReduce) ou autre.
30

Frameworks Big Data: Spark, présentation générale


Université de Berkeley (CA)
Framework open source (laboratoire AMPLab,2009)

Fondation apache Framework de calcul distribué

• Apache Spark est un framework utilisé dans les environnements informatiques en cluster pour analyser le Big
Data. Cette plate-forme est devenue très populaire en raison de sa facilité d'utilisation et des vitesses de
traitement des données améliorées par rapport à Hadoop.

• Apache Spark est capable de répartir une charge de travail sur un groupe d'ordinateurs dans un cluster pour
traiter plus efficacement de grands ensembles de données. Ce moteur open source prend en charge un large
éventail de langages de programmation. Cela inclut Java, Scala, Python et R.
31

Frameworks Big Data: Spark, écosystème (1/3)


Apache Spark est un moteur d’analyses unifiées ultra-rapide pour le big data et le machine learning. En d’autres
termes Spark est une suite d’outils permettant d’effectuer différents traitements sur des données. La grande
particularité de Spark est qu’il permet de traiter les données plus rapidement et est facile à utiliser. Spark propose
une grande variété de fonctionnalités allant de l’accès aux données via des requêtes SQL (Spark SQL) au Machine
learning grâce à MLlib.
32

Frameworks Big Data: Spark, écosystème (2/3)


Composant Description
Spark Core est le moteur d'exécution sous-jacent de la plateforme Spark, sur lequel reposent toutes les autres fonctionnalités. Il apporte
API Spark Core des capacités de calcul en mémoire pour plus de rapidité, un modèle d'exécution généralisé capable de prendre en charge une vaste gamme
d'applications, et des API Python, Scala et java pour un développement facilité.
De nombreux data scientists, analystes et plus généralement utilisateurs de business intelligence exploitent les requêtes SQL pour explorer
des données. Spark SQL est un module Spark conçu pour le traitement de données structurées. Il apporte une couche d'abstraction en
Spark SQL +
programmation appelée DataFrames et peut également faire office de moteur de requêtes SQL distribué. Il permet aux requêtes Hadoop
DataFrames Hive de s'exécuter 100 fois plus vite sur les déploiements et données existants, sans modification. Il apporte également un haut niveau
d'intégration avec le reste de l'écosystème Spark (notamment en intégrant le traitement des requêtes SQL au machine learning).
De nombreuses applications ont besoin de pouvoir traiter et analyser non seulement des données en batch, mais aussi des flux de nouvelles
données en temps réel. Fonctionnant sur une base Spark, Spark Streaming permet de puissantes applications analytiques et interactives,
Streaming travaillant à la fois sur des données en flux ou historiques tout en héritant de la simplicité d'utilisation et de la tolérance de panne de Spark.
Il s'intègre parfaitement avec une large gamme de sources de données bien connues, telles que HDFS, Flume, Kafka et Twitter.
Le machine learning est rapidement devenu une pièce maîtresse pour l'extraction d'informations exploitables dans un contexte big data.
Conçu sur une base Spark, MLlib est une bibliothèque de machine learning adaptable à toutes les échelles qui fournit des algorithmes de
Machine learning :
grande qualité (notamment avec plusieurs itérations pour gagner en précision) extrêmement rapides (jusqu'à 100 fois plus rapides que
MLlib MapReduce). Cette bibliothèque est utilisable en java, Scala et Python sous forme d'applications Spark, si bien que vous pouvez l'inclure
dans des workflows complets.
Calculs de graphes GraphX est un moteur de calculs de graphes conçu sur la base de Spark. Il permet aux utilisateurs de concevoir, transformer et raisonner sur
: GraphX des données structurées en graphes, de manière interactive et à toute échelle. Il est livré avec une bibliothèque d'algorithmes communs.
33

Frameworks Big Data: Spark, écosystème (3/3)


Depuis sa sortie, Apache Spark, le moteur d'analyses unifiées, a connu une adoption rapide par les entreprises de
divers secteurs. «Des acteurs essentiels du monde de l'internet tels que Netflix, Yahoo et eBay ont déployé Spark à très
grande échelle, traitant ensemble plusieurs peta-octets de données sur des clusters de plus de 8 000 nœuds. »
34

Frameworks Big Data: Spark, Communauté

Large communauté

14,954 commits +300 entreprises

+1200 développeurs
35

Frameworks Big Data: Spark, Traitement

➔ Spark utilise principalement la RAM


➔ Spark est beaucoup plus rapide que Hadoop puisqu’il utilise la RAM beaucoup plus accessible que le disque
utilisé par Hadoop.
36

Frameworks Big Data: Spark, Librairies

Spark SQL Spark Streaming

MLlib GraphX
Spark par la pratique!
38

Frameworks Big Data: Spark, exemples (1/2)


➔ Calcul des décimales de 𝛑
➔ Un programme Map-Reduce pour estimer la valeur de Pi en utilisant la méthode quasi-Monte Carlo.
➔ Inclus dans le package Spark2, le lancement se fait avec le ressource manager YARN

# spark-submit --class org.apache.spark.examples.SparkPi --master yarn --deploy-mode client /opt/spark/examples/jars/spark-


examples_2.12-3.1.2.jar 10

➔ A titre comparatif avec Hadoop MapReduce, le même calcul avait pris plus de 30 secondes, ce qui montre
par un exemple simple que Spark est beaucoup plus rapide que Hadoop.
39

Frameworks Big Data: Spark, exemples (2/2)


❑ Spark en pratique
➔ Spark est livré avec plusieurs exemples de programmes. Les exemples Scala, Java, Python et R se trouvent dans le
répertoire examples/src/main. Pour exécuter l'un des exemples de programmes Java ou Scala, utilisez bin/run-
example <class> [params] dans le répertoire Spark de niveau supérieur. (Dans les coulisses, cela invoque le script
plus général de soumission d'étincelles pour le lancement d'applications). Par exemple:

./bin/run-example SparkPi 10

➔ L’exécution a pris environ 1.5 secondes pour la détermination de la valeur de Pi ou 10 est le nombre de partitions
à exécuter pour déterminer la valeur approximative de Pi (3.13992713992714).
40

Frameworks Big Data: Spark, exemple avec Python


❑ Spark fournit également une API Python.
Pour exécuter Spark de manière interactive dans un interpréteur Python, utilisez bin/pyspark :
./bin/pyspark --master local[2]
➔ Des exemples d'applications sont également fournis en Python. Par exemple:
./bin/spark-submit examples/src/main/python/pi.py 10

➔ L’exécution via le script Python a pris environ 3 secondes avec une valeur de Pi estimée à 3.143240.
41

Frameworks Big Data: Spark, exemple avec R


❑ Spark fournit également une API R depuis 1.4 (uniquement les API DataFrames incluses).
➔ Pour exécuter Spark de manière interactive dans un interpréteur R, utilisez bin/sparkR :
./bin/sparkR --master local[2]
➔ Des exemples d'applications sont également fournis dans R. Par exemple:

./bin/spark-submit examples/src/main/r/dataframe.R

Une exemple qui analyse des données démographiques pour en déterminer l'adolescent (âge de 13 à 19 ans ) parmi
cette liste. En sortie le programme affiche le nom des adolescents.
42

Frameworks Big Data: Spark et HDFS

HDFS + Spark

➔Système de stockage distribué + performance de calcul de Spark


43

Spark: avantages
Rapidité Simplicité

Conçu de bout en bout dans une optique de performance,


Spark peut s'avérer 100 fois plus rapide que Hadoop pour Spark possède des API simples d'utilisation pour travailler
le traitement de données à grande échelle en exploitant le sur de grands ensembles de données. Celles-ci
calcul en mémoire et d'autres optimisations. Apache Spark comprennent notamment un ensemble de plus de 100
atteint des performances élevées pour les données par lots opérateurs pour la transformation de données et des API
et en streaming, à l'aide d'un planificateur DAG de pointe, familières pour DataFrames permettant la manipulation de
d'un optimiseur de requêtes et d'un moteur d'exécution données semi-structurées.
physique.

Un moteur unifié

Spark est livré avec des bibliothèques haut niveau qui prennent en charge les requêtes SQL, les données en flux, le machine
learning et le traitement de graphes. Ces bibliothèques standard permettent aux développeurs de gagner en productivité et
peuvent se combiner facilement pour créer des flux de travail complexes. Spark s'exécute sur Hadoop, Apache Mesos,
Kubernetes, de manière autonome ou dans le cloud. Il peut accéder à diverses sources de données.
44

Frameworks Big Data: principales différences Hadoop & Spark (1/2)


Item de comparaison Hadoop Spark

Performances plus lentes, utilise des disques pour le


Performances en mémoire rapides avec des opérations
Performance stockage et dépend de la vitesse de lecture et d'écriture
de lecture et d'écriture sur disque réduites.
du disque.

Une plate-forme open source, moins coûteuse à exploiter. Une plate-forme open-source, mais s'appuie sur la
Coût Utilise du matériel grand public abordable. Trouver plus mémoire pour le calcul, ce qui augmente
facilement des professionnels Hadoop formés. considérablement les coûts d'exploitation.

Idéal pour le traitement par lots (mode batch). Utilise Convient pour l'analyse de données itérative en mode
Traitement des
MapReduce pour diviser un grand ensemble de données streaming. Fonctionne avec les RDD et les DAG pour
données
sur un cluster pour une analyse parallèle. exécuter des opérations.

Suit le processus de création de bloc RDD, puis il peut


Un système hautement tolérant aux pannes. Réplique les reconstruire un ensemble de données lorsqu'une partition
Tolérance aux pannes
données sur les nœuds et les utilise en cas de problème. échoue. Spark peut également utiliser un DAG pour
reconstruire les données sur les nœuds.
45

Frameworks Big Data: principales différences Hadoop & Spark (2/2)


Item de comparaison Hadoop Spark

Facilement évolutif en ajoutant des nœuds et des disques Un peu plus difficile à mettre à l'échelle car il repose sur la
Scalabilité pour le stockage. Prend en charge des dizaines de milliers RAM pour les calculs. Prend en charge des milliers de
de nœuds sans limite connue. nœuds dans un cluster.

Pas sécurisé. Par défaut, la sécurité est désactivée.


Extrêmement sécurisé. Prend en charge LDAP, ACL,
Sécurité Repose sur l'intégration avec Hadoop pour atteindre le
Kerberos, SLA, etc.
niveau de sécurité nécessaire.

Usage et langages de Plus convivial. Permet le mode shell interactif. Les API
Plus difficile à utiliser avec des langues moins supportées.
programmation peuvent être écrites en Java, Scala, R, Python, Spark
Utilise Java ou Python pour les applications MapReduce.
supportés SQL.

Plus lent que Spark. Les fragments de données peuvent


Beaucoup plus rapide avec le traitement en mémoire.
Machine Learning être trop volumineux et créer des goulots d'étranglement.
Utilise MLlib pour les calculs.
Mahout est la bibliothèque principale.

Planification et Utilise des solutions externes. YARN est l'option la plus


Possède des outils intégrés pour l'allocation, la
gestion des courante pour la gestion des ressources. Oozie est
planification et la surveillance des ressources.
ressources disponible pour la planification du workflow.
46

Frameworks Big Data: performances Spark vs. Hadoop


Hadoop MR Spark Spark Triage de 100 TB de données sur disque en 23
Record Record 1 PB minutes avec un cluster de 206 machines sur
Spark. En comparaison, la performance établie
Data Size 102.5 TB 100 TB 1000 TB
par Hadoop MapReduce utilisait un cluster de
Elapsed Time 72 mins 23 mins 234 mins 2100 machines et prenait 72 minutes.

# Nodes 2100 206 190 Cela signifie qu'Apache Spark a trié les mêmes
# Cores 50400 physical 6592 virtualized 6080 virtualized données 3 fois plus rapidement en utilisant 10
fois moins de ressources matérielles (machines).
Cluster disk 3150 GB/s
618 GB/s 570 GB/s Source:
throughput (est.)
https://databricks.com/blog/2014/11/05/spark-officially-sets-a-new-
record-in-large-scale-sorting.html
Sort Benchmark
Yes Yes No
Daytona Rules

dedicated data virtualized (EC2) virtualized (EC2)


Network
center, 10Gbps 10Gbps network 10Gbps network

Sort rate 1.42 TB/min 4.27 TB/min 4.27 TB/min

Sort rate/node 0.67 GB/min 20.7 GB/min 22.5 GB/min


47

Frameworks Big Data: coût Spark vs. Hadoop


En comparant Hadoop à Spark en tenant compte du coût, nous devons creuser plus loin que le prix du logiciel. Les
deux plateformes sont open source et entièrement gratuites. Néanmoins, les coûts d'infrastructure, de maintenance
et de développement doivent être pris en compte pour obtenir un coût total de possession (TCO) approximatif.

Le facteur le plus important dans la catégorie de coût est le matériel sous-jacent dont vous avez besoin pour exécuter
ces outils. Étant donné qu'Hadoop s'appuie sur n'importe quel type de stockage sur disque pour le traitement des
données, le coût de son exécution est relativement faible.

D'autre part, Spark dépend des calculs en mémoire pour le traitement des données en temps réel. Ainsi, faire
tourner des nœuds avec beaucoup de RAM augmente considérablement le coût total de possession.

Une autre préoccupation est le développement d'applications. Hadoop existe depuis plus longtemps que Spark et il
est moins difficile de trouver des développeurs de logiciels.

Les points ci-dessus indiquent que l'infrastructure Hadoop est plus rentable. Bien que cette affirmation soit correcte,
nous devons nous rappeler que Spark traite les données beaucoup plus rapidement. Par conséquent, il faut un plus
petit nombre de machines pour effectuer la même tâche.
48

Frameworks Big Data: traitement des données Spark vs. Hadoop


Les deux frameworks traitent les données de manières assez différentes. Bien que Hadoop
avec MapReduce et Spark avec RDD traitent les données dans un environnement distribué,
Hadoop est plus adapté au traitement par lots. En revanche, Spark brille par son traitement
en temps réel.

L'objectif d'Hadoop est de stocker des données sur des disques, puis de les analyser en
parallèle par lots dans un environnement distribué. MapReduce ne nécessite pas une grande
quantité de RAM pour gérer de gros volumes de données. Hadoop s'appuie sur du matériel
de tous les jours pour le stockage, et il est mieux adapté au traitement linéaire des données.

Apache Spark fonctionne avec des ensembles de données distribués (RDD) résilients. Un
RDD est un ensemble distribué d'éléments stockés dans des partitions sur des nœuds à
travers le cluster. La taille d'un RDD est généralement trop grande pour être gérée par un
seul nœud. Par conséquent, Spark partitionne les RDD vers les nœuds les plus proches et
effectue les opérations en parallèle. Le système suit toutes les actions effectuées sur un RDD
à l'aide d'un graphique acyclique dirigé (DAG).

Avec les calculs en mémoire et les API de haut niveau, Spark gère efficacement les flux en
direct de données non structurées. De plus, les données sont stockées dans un nombre
prédéfini de partitions. Un nœud peut avoir autant de partitions que nécessaire, mais une
partition ne peut pas être étendue à un autre nœud.
49

Frameworks Big Data: tolérance aux pannes Spark vs. Hadoop


En parlant de Hadoop vs Spark sur la problématique tolérance aux pannes, nous pouvons dire que les deux offrent un
niveau respectable par rapport aux pannes et haute disponibilité. Cependant, la façon dont ils abordent la tolérance
aux pannes est différente.

▪ Hadoop a la tolérance aux pannes comme base de son fonctionnement. Il réplique les données plusieurs fois sur
les nœuds. En cas de problème, le système reprend le travail en créant les blocs manquants à partir d'autres
emplacements. Les nœuds maîtres suivent l'état de tous les nœuds esclaves. Enfin, si un nœud esclave ne répond
pas aux pings d'un maître, le maître attribue les travaux en attente à un autre nœud esclave.

▪ Spark utilise des blocs RDD pour atteindre la tolérance aux pannes. Le système suit la manière dont l'ensemble de
données immuable est créé. Ensuite, il peut redémarrer le processus en cas de problème. Spark peut reconstruire
les données dans un cluster en utilisant le suivi DAG des workflows. Cette structure de données permet à Spark de
gérer les défaillances dans un écosystème de traitement de données distribué.
50

Frameworks Big Data: évolutivité Spark vs. Hadoop


La frontière entre Hadoop et Spark devient floue dans cette section. Hadoop utilise HDFS pour gérer le Big Data.
Lorsque le volume de données augmente rapidement, Hadoop peut rapidement évoluer pour répondre à la
demande. Étant donné que Spark n'a pas son système de fichiers, il doit s'appuyer sur HDFS lorsque les données sont
trop volumineuses à gérer.

Les clusters peuvent facilement s'étendre et augmenter la puissance de calcul en ajoutant plus de serveurs au réseau.
En conséquence, le nombre de nœuds dans les deux frameworks peut atteindre des milliers. Il n'y a pas de limite
ferme au nombre de serveurs que vous pouvez ajouter à chaque cluster et à la quantité de données que vous pouvez
traiter.

Certains des chiffres confirmés incluent 8000 machines dans un environnement Spark avec des pétaoctets de
données. Quand on parle de clusters Hadoop, ils sont bien connus pour accueillir des dizaines de milliers de
machines et près d'un exaoctet de données.
51

Frameworks Big Data: machine learning Spark vs. Hadoop


Le machine learning est un processus itératif qui fonctionne mieux en utilisant la RAM. Pour cette raison, Spark s'est
avéré être une solution plus rapide dans ce domaine.

La raison en est que Hadoop MapReduce divise les tâches en tâches parallèles qui peuvent être trop volumineuses
pour les algorithmes d'apprentissage automatique. Ce processus crée des problèmes de performances d'E/S dans ces
applications Hadoop.

La bibliothèque Mahout est la principale plate-forme d'apprentissage automatique dans les clusters Hadoop. Mahout
s'appuie sur MapReduce pour effectuer le clustering, la classification et la recommandation. Samsara a commencé à
remplacer ce projet.

Spark est livré avec une bibliothèque d'apprentissage automatique par défaut, MLlib. Cette bibliothèque effectue des
calculs ML itératifs en mémoire. Il comprend des outils pour effectuer la régression, la classification, la persistance, la
construction de pipeline, l'évaluation et bien d'autres.

Spark avec MLlib s'est avéré neuf fois plus rapide qu'Apache Mahout dans un environnement basé sur disque
Hadoop. Lorsque vous avez besoin de résultats plus efficaces que ceux proposés par Hadoop, Spark est le meilleur
choix pour le Machine Learning.
52

Frameworks Big Data: cas d'utilisation de Hadoop vs. Spark


Cas d’usage Hadoop Cas d’usage Spark
• Traitement de grands ensembles de données dans des
environnements où la taille des données dépasse la mémoire
• L'analyse des données de flux en temps réel (streaming)
disponible.
• Spark fournit des résultats rapides avec des calculs en
• Construire une infrastructure d'analyse de données avec un
mémoire (grâce à l’usage de la RAM comme ressource
budget limité.
principale)
• Terminer des travaux pour lesquels des résultats immédiats
• Traiter les chaînes d'opérations parallèles à l'aide
ne sont pas requis et où le temps n'est pas un facteur
d'algorithmes itératifs.
limitant.
• Traitement parallèle au graphe pour modéliser les données.
• Traitement par lots avec des tâches exploitant les opérations
de lecture et d'écriture sur disque. • Toutes les applications de Machine Learning.
• Analyse des données historiques et archivées.

• Les deux frameworks jouent un rôle important dans les applications Big Data. Bien qu'il semble que Spark soit la plate-forme
incontournable avec sa vitesse et son mode convivial, certains cas d'utilisation nécessitent l’usage Hadoop plutôt que Spark. Cela est
particulièrement vrai lorsqu'un grand volume de données doit être analysé.
• Spark nécessite un budget de maintenance plus important, mais nécessite également moins de matériel pour effectuer les mêmes
tâches que Hadoop. Vous devez garder à l'esprit que les deux frameworks ont leurs avantages et qu'ils fonctionnent mieux ensemble.
53

Frameworks Big Data: Spark, conclusion

Traitement : Map Reduce Traitement :Spark

Stockage Hadoop Distributed file Stockage Hadoop Distributed file


System (HDFS) System (HDFS)

➔Système de stockage distribué + performance de calcul de Spark


54

Frameworks Big Data: Spark avec Azure Databricks (1/5)


Azure Databricks vous fournit un environnement d’espace de travail Apache Spark en tant que service, basé sur
des notebooks. Si vous souhaitez exécuter des jobs Spark dans Azure, c’est sans doute ce qu’il vous faut!
55

Frameworks Big Data: Spark avec Azure Databricks (2/5)


Globalement parlant, le service Azure Databricks démarre et gère les clusters Apache Spark au sein de
votre abonnement Azure.

Les clusters Apache Spark sont des groupes de machines qui sont traités comme une seule machine et
qui vont gérer l’exécution des commandes émises à partir des notebooks.

Azure Databricks vous permet d’utiliser Apache Spark dans un environnement complètement managé et
affiné.

La compréhension de l’architecture des clusters et des travaux Spark est un excellent point de départ
pour apprendre à effectuer des tâches d’engineering et de science des données dans Azure Databricks.
56

Frameworks Big Data: Spark avec Azure Databricks (3/5)


Exemple de design: Scoring par lots (Batch) des
modèles Spark sur Azure Databricks

Une entreprise dans une industrie lourde en actifs


souhaite minimiser les coûts et les temps d'arrêt
associés aux pannes mécaniques inattendues. À
l'aide des données IoT collectées sur leurs
machines, ils peuvent créer un modèle de
maintenance prédictive. Ce modèle permet à
l'entreprise d'entretenir les composants de
manière proactive et de les réparer avant qu'ils ne
tombent en panne. En maximisant l'utilisation des
composants mécaniques, ils peuvent contrôler les
coûts et réduire les temps d'arrêt.
Cette architecture de référence peut être utilisée
comme modèle qui peut être généralisé à d'autres
scénarios.
57

Frameworks Big Data: Spark avec Azure Databricks (4/5)


Composants de l’architecture de référence:

Ingestion. Le bloc-notes d'ingestion de données télécharge les fichiers de données d'entrée dans une collection
d'ensembles de données Databricks. Dans un scénario réel, les données des appareils IoT seraient diffusées sur
un stockage accessible par Databricks, tel qu'Azure SQL Server ou Azure Blob Storage.
Training pipeline. Ce bloc-notes exécute le bloc-notes d'ingénierie des fonctionnalités pour créer un ensemble
de données d'analyse à partir des données ingérées.
Scoring pipeline. Ce bloc-notes exécute le bloc-notes d'ingénierie de fonctionnalités pour créer un ensemble
de données de notation à partir des données ingérées et exécute le bloc-notes de notation. Le bloc-notes de
notation utilise le modèle Spark MLlib formé pour générer des prédictions pour les observations dans
l'ensemble de données de notation.
Scheduler. Une tâche Databricks planifiée gère la notation par lots avec le modèle Spark. Le travail exécute le
bloc-notes du pipeline de notation, en transmettant des arguments variables via les paramètres du bloc-notes
pour spécifier les détails de construction de l'ensemble de données de notation et où stocker l'ensemble de
données de résultats.
58

Frameworks Big Data: Spark avec Azure Databricks (5/5)


Cette architecture de référence est conçue pour les charges de travail déclenchées par la présence de
nouvelles données provenant des machines composantes. Le traitement comprend les étapes suivantes :

1. Ingestion des données depuis la source de données externe dans un magasin de données Azure
Databricks.

2. Entraînez un modèle d'apprentissage automatique en transformant les données en un ensemble de


données d'apprentissage, puis en créant un modèle Spark MLlib. MLlib se compose des algorithmes et des
utilitaires d'apprentissage automatique les plus courants optimisés pour tirer parti des capacités
d'évolutivité des données Spark.

3. Appliquez le modèle formé pour prédire (classer) les défaillances des composants en transformant les
données en un ensemble de données de notation. Évaluez les données avec le modèle Spark MLLib.

4. Stockez les résultats sur le datastore de Databricks pour la consommation post-traitement.


59

Frameworks Big Data: Kafka, Introduction messaging (1/2)


Contexte
➢ Dans le monde actuel de connectivité croissante, la technologie évolue dans tous les domaines. Avec les progrès
technologiques, la quantité de données générées est énorme. Il y a une croissance extrêmement énorme des
données numériques créées par les entreprises. Avec l'augmentation des données, la nécessité d'analyser les
données (Big Data Analytics) pour en tirer des enseignements a également augmenté. Au sein d'une entreprise, il
existe un système à plusieurs sources qui génère les données et ces données sont utilisées par plusieurs systèmes.
➢ Par exemple, les données générées par les capteurs (IoT) pourraient être utilisées par plusieurs équipes. Si nous
devions tirer parti des files d'attente, il y aurait plusieurs files d'attente et les données seraient dupliquées. De
plus, la complexité augmenterait à mesure que le système source augmenterait.
➢ Il est donc également plus
difficile de maintenir cette
infrastructure et d'assurer la
résilience du système ainsi
que la fiabilité et la cohérence
des données.
➢ La solution qui est sortie pour
aider à la situation et
simplifier l'architecture est
appelée "Kafka".
60

Frameworks Big Data: Kafka, Introduction messaging (2/2)


Qu'est-ce qu'un système de messaging?
➢ Un système de messaging (Messaging System) est responsable du transfert de données d'une application à une
autre, de manière à ce que les applications puissent se concentrer sur les données sans s'inquiéter de la manière
de les partager ou de les collecter. Le messaging distribué est basé sur le principe de file de message fiable. Les
messages sont stockés de manière asynchrone dans des files d'attente entre les applications clientes et le système
de messaging.

➢ Deux types de patrons de messaging existent: Les systèmes "point à point" et les systèmes "publish-subscribe".
61

Frameworks Big Data: Kafka, Introduction messaging (1/2)


Systèmes de messaging Point à Point
➢ Dans un système point à point, les messages sont stockés dans une file. un ou plusieurs consommateurs peuvent
consommer les message dans la file, mais un message ne peut être consommé que par un seul consommateur à
la fois. Une fois le consommateur lit le message, ce dernier disparaît de la file.
62

Frameworks Big Data: Kafka, Introduction messaging (2/2)


Systèmes de messaging Publish/Subscribe
➢ Dans un système publish-subscribe, les messages sont stockés dans un "topic". Contrairement à un système point
à point, les consommateurs peuvent souscrire à un ou plusieurs topics et consommer tous les messages de ce
topic.
63

Frameworks Big Data: Kafka, Présentation (1/2)


➢ Apache Kafka est un système haute performance pour déplacer des données en temps réel. À un niveau élevé,
Kafka ressemble à un système de messagerie : les clients publient des messages sur Kafka et les messages sont
livrés en quelques millisecondes. Mais Kafka fonctionne davantage comme une base de données distribuée :
lorsque vous écrivez un message à Kafka, il est répliqué sur plusieurs serveurs et enregistré sur le disque.

➢ Message broker (Courtier de messages) pour le Big Data et autres applications.


• Plateforme de gestion de messages haute performance, distribuée et évolutive.
• Système de publication/abonnement qui permet aux applications d'échanger des données sous forme de
messages (clé, valeur, horodatage).
• Fonctionne en mode cluster avec une tolérance de panne élevée.
• Les messages sont traités en temps réel. En cas de congestion, un système de file d'attente garantit qu'aucun
message n'est perdu.
• Sémantique exactement une fois
➢ Parmi les usages de Kafka: suivi de l'activité du site Web, collecte et suivi des métriques, agrégation de journaux
(logs), traitement de flux et analyse en temps réel, Internet des objets (IoT)

➢ Initialement développé par LinkedIn, écrit en Java / Scala


➢ Commercialisé par Confluent
64

Frameworks Big Data: Kafka, Présentation (2/2)


➢ Les principaux avantages de Kafka sont:

➢ La fiablitié: Kafka est distribué,


partitionné, répliqué et tolérent aux
fautes.
➢ La scalabilité: Kafka se met à l'échelle
facilement et sans temps d'arrêt.
➢ La durabilité: Kafka utilise un commit
log distribué, ce qui permet de
stocker les messages sur le disque le
plus vite possible.
➢ La performance: Kafka a un débit
élevé pour la publication et
l'abonnement.
65

Frameworks Big Data: Kafka, définitions (1/2)


➢ Pour comprendre le fonctionnement de Kafka, il faut d'abord se familiariser avec le vocabulaire suivant:
➢ Topic: Un flux de messages appartenant à une catégorie particulière. Les données sont stockées dans des
topics.
➢ Partitions: Chaque topic est divisé en partitions. Pour chaque topic, Kafka conserve un minimum d'une
partition. Chaque partition contient des messages dans une séquence ordonnée immuable. Une partition est
implémentée comme un ensemble de sègments de tailles égales.
➢ Offset: Les enregistrements d'une partition ont chacun un identifiant séquentiel appelé offset, qui permet de
l'identifier de manière unique dans la partition.
➢ Répliques: Les répliques sont des backups d'une partition. Elles ne sont jamais lues ni modifiées par les
acteurs externes, elles servent uniquement à prévenir la perte de données.
➢ Brokers: Les brokers (ou courtiers) sont de simples systèmes responsables de maintenir les données publiées.
Chaque courtier peut avoir zéro ou plusieurs partitions par topic. Si un topic admet N partitions et N
courtiers, chaque courtier va avoir une seule partition. Si le nombre de courtiers est plus grand que celui des
partitions, certains n'auront aucune partition de ce topic.
66

Frameworks Big Data: Kafka, définitions (2/2)


➢ Pour comprendre le fonctionnement de Kafka, il faut d'abord se familiariser avec le vocabulaire suivant:
➢ Cluster: Un système Kafka ayant plus qu'un seul Broker est appelé cluster Kafka. L'ajout de nouveau brokers
est fait de manière transparente sans temps d'arrêt.
➢ Producers: Les producteurs sont les éditeurs de messages à un ou plusieurs topics Kafka. Ils envoient des
données aux courtiers Kafka. Chaque fois qu'un producteur publie un message à un courtier, ce dernier
rattache le message au dernier sègment, ajouté ainsi à une partition. Un producteur peut également envoyer
un message à une partition particulière.
➢ Consumers: Les consommateurs lisent les données à partir des brokers. Ils souscrivent à un ou plusieurs
topics, et consomment les messages publiés en extrayant les données à partir des brokers.
➢ Leaders: Le leader est le noeud responsable de toutes les lectures et écritures d'une partition donnée.
Chaque partition a un serveur jouant le rôle de leader.
➢ Follower: C'est un noeud qui suit les instructions du leader. Si le leader tombe en panne, l'un des followers
deviendra automatiquement le nouveau leader.
67

Frameworks Big Data: Kafka, architecture fonctionnelle


68

Frameworks Big Data: Kafka, Utilisation (1/2)


Voici une description de quelques-uns des cas d'utilisation populaires du Framework Apache Kafka.
➢ Messaging
Kafka fonctionne bien en remplacement d'un Broker de messages plus traditionnel. Par rapport à la plupart des
systèmes de messagerie, Kafka a un meilleur débit, un partitionnement intégré, une réplication et une tolérance aux
pannes, ce qui en fait une bonne solution pour les applications de traitement de messages à grande échelle. Dans ce
domaine, Kafka est comparable aux systèmes de messagerie traditionnels tels que ActiveMQ ou RabbitMQ.

➢ Suivi de l'activité du site Web


Le cas d'utilisation initial de Kafka était de pouvoir reconstruire un pipeline de suivi de l'activité des utilisateurs sous la
forme d'un ensemble de flux de publication-abonnement en temps réel. Cela signifie que l'activité du site (pages vues,
recherches ou autres actions que les utilisateurs peuvent effectuer) est publiée dans des rubriques centrales avec une
rubrique par type d'activité. Ces flux sont disponibles par abonnement pour une gamme de cas d'utilisation, y compris
le traitement en temps réel, la surveillance en temps réel et le chargement dans Hadoop ou des systèmes
d'entreposage de données hors ligne pour le traitement et la création de rapports hors ligne.

➢ Métrique (KPI)
Kafka est souvent utilisé pour les données de surveillance opérationnelle. Cela implique l'agrégation de statistiques à
partir d'applications distribuées pour produire des flux centralisés de données opérationnelles.
69

Frameworks Big Data: Kafka, Utilisation (2/2)


➢ Agrégation de journaux (logs)
De nombreuses personnes utilisent Kafka en remplacement d'une solution d'agrégation de journaux. L'agrégation de
journaux collecte généralement les fichiers journaux physiques des serveurs et les place dans un emplacement central
(un serveur de fichiers ou HDFS) pour le traitement. Kafka fait abstraction des détails des fichiers et donne une
abstraction plus propre des données de journal ou d'événement sous forme de flux de messages. Cela permet un
traitement à plus faible latence et une prise en charge plus facile de plusieurs sources de données et de la
consommation de données distribuées. Par rapport aux systèmes centrés sur les journaux comme Scribe ou Flume,
Kafka offre des performances tout aussi bonnes, des garanties de durabilité plus solides grâce à la réplication et une
latence de bout en bout beaucoup plus faible.

➢ Traitement de flux (streaming)


De nombreux utilisateurs de Kafka traitent les données dans des pipelines de traitement constitués de plusieurs
étapes, où les données d'entrée brutes sont consommées à partir de « topics » Kafka, puis agrégées, enrichies ou
autrement transformées en nouveaux « topics » pour une consommation ultérieure ou un traitement de suivi. Ces
pipelines de traitement créent des graphiques de flux de données en temps réel basés sur les « topic » individuels.
Le support du streaming (traitement de données en temps réel) est une différence fondamentale entre Kafka et les
systèmes de messagerie classique comme RabbitMQ.
70

Frameworks Big Data: Kafka, architecture via un exemple


➢ La figure suivante montre un exemple de flux entre les différentes parties d'un système Kafka:

➢ Dans cet exemple, un topic est configuré en trois


partitions.

➢ En supposant que, si le facteur de réplication du topic


est de 3, alors Kafka va créer trois répliques
identiques de chaque partition et les placer dans le
cluster pour les rendre disponibles pour toutes les
opérations. L'identifiant de la réplique est le même
que l'identifiant du serveur qui l'héberge. Pour
équilibrer la charge dans le cluster, chaque broker
stocke une ou plusieurs de ces partitions. Plusieurs
producteurs et consommateurs peuvent publier et
extraire les messages au même moment.
71

Frameworks Big Data: Kafka, le rôle de ZooKeeper


➢ Un cluster Kafka consiste typiquement en plusieurs courtiers (Brokers) pour maintenir la répartition de charge. Ces
courtiers sont stateless, c'est pour cela qu'ils utilisent Zookeeper pour maintenir l'état du cluster. Un courtier peut
gérer des centaines de milliers de lectures et écritures par seconde, et chaque courtier peut gérer des téra-octets
de messages sans impact sur la performance.
➢ Zookeeper est utilisé pour gérer et coordonner les courtiers Kafka. Il permet de notifier les producteurs et
consommateurs de messages de la présence de tout nouveau courtier, ou de l'échec d'un courtier dans le cluster.

✓ Zookeeper est un service centralisé


permettant de maintenir l'information de
configuration, de nommage, de
synchronisation et de services de groupe. Ces
services sont utilisés par les applications
distribuées en général, et par Kafka en
particulier. Pour éviter la complexité et
difficulté de leur implémentation manuelle,
Zookeeper est utilisé.

✓ Zookeeper est un composant commun aussi


utilisé par Hadoop HDFS et Spark.
72

Frameworks Big Data: Kafka, traitement


Kafka fournit essentiellement un service de journal de validation distribué, partitionné et répliqué à ses utilisateurs.
Il a une conception simple de haut niveau qui peut être représentée, comme le montre la figure suivante:
Du point de vue de l'architecture, Kafka fournit
la fonctionnalité de production et de
consommation de messages. Le sujet est le
nom de la catégorie ou du flux dans lequel les
messages sont publiés. Le producteur est le
processus client qui publie des messages dans
un sujet Kafka. Les messages sont simplement
des tableaux d'octets et peuvent contenir
n'importe quel objet dans n'importe quel
format, tel que : String, JSON et Avro.
Le consommateur est le processus client qui
s'abonne aux sujets.
Kafka lui-même fonctionne comme un cluster avec un ou plusieurs
serveurs, dont chaque processus est appelé un Broker.
73

Frameworks Big Data: Kafka, API de base


➢ Apache Kafka propose quatre APIs clés: l'API Producer, l'API
Consumer, l'API Streams et l'API Connector. Un cinquième est
dédié à l’administration.
• Producer API permet aux applications d'envoyer des flux de
données aux topics du cluster Kafka.
• Consumer API permet aux applications de lire des flux de
données à partir des topics du cluster Kafka.
• Streams API permet de transformer des flux de données en
topic de sortie.
• Connect API permet d'implémenter des connecteurs qui
récupèrent les données d'un système source ou d'une
application vers Kafka ou qui poussent de Kafka vers une
application.
• Admin API permet de gérer et d'inspecter les topics, les
brokers, et les autres objets Kafka.
74

Frameworks Big Data: Kafka, Connect (1/2)


• La conception flexible et évolutive de Kafka permet aux consommateurs de consommer périodiquement des
charges de données par lots qui chargent périodiquement des données en masse dans un système tel que Hadoop.
• Avant Kafka 0.9, il y avait deux manières de charger des messages Kafka dans Hadoop : utiliser une tâche
MapReduce personnalisée ou utiliser Kafka comme source dans Flume. Camus est la solution la plus connue de la
première approche, qui est également initiée dans LinkedIn.
• Kafka Connect est une nouvelle fonctionnalité ajoutée dans la version 0.9. C’est un outil permettant de diffuser des
données de manière évolutive et fiable entre Apache Kafka et d'autres systèmes. Il simplifie la définition rapide des
connecteurs qui déplacent de grandes collections de données vers et depuis Kafka. Kafka Connect peut ingérer des
bases de données entières ou collecter des métriques de tous vos serveurs d'applications dans des rubriques Kafka,
rendant les données disponibles pour le traitement de flux avec une faible latence.
75

Frameworks Big Data: Kafka, Connect (2/2)


Les fonctionnalités de Kafka Connect incluent :
• Un Framework pour les connecteurs Kafka - Kafka Connect standardise l'intégration d'autres systèmes de données
avec Kafka, simplifiant le développement, le déploiement et la gestion des connecteurs.
• Modes distribué et autonome: évoluer vers un grand service géré de manière centralisée prenant en charge toute
une organisation ou réduire jusqu'à des déploiements de développement, de test et de production de petite taille.
• Interface REST: soumettez et gérez les connecteurs à votre cluster Kafka Connect via une API REST facile à utiliser.
• Gestion automatique des décalages: avec juste quelques informations des connecteurs, Kafka Connect peut gérer
automatiquement le processus de validation de décalage afin que les développeurs de connecteurs n'aient pas à se
soucier de cette partie du développement de connecteurs sujette aux erreurs.
• Distribué et évolutif par défaut : Kafka Connect s'appuie sur le protocole de gestion de groupe existant. D'autres
travailleurs peuvent être ajoutés pour faire évoluer un cluster Kafka Connect.
• Intégration en continu (Streaming)/Batch (lots): tirant parti des capacités existantes de Kafka, Kafka Connect est
une solution idéale pour relier les systèmes de données en continu (streaming) et par lots (mode batch).
76

Frameworks Big Data: Apache Flink, présentation


➢ Apache Flink est un framework open source de traitement flux développé par la Apache Software Foundation. Le
noyau d'Apache Flink est un moteur distribué de flux écrit en Java et en Scala. Flink exécute des programmes de
flux de données arbitraires de manière parallèle et en pipeline. Le système d'exécution en pipeline de Flink permet
l'exécution de programmes de traitement en bloc / par lots et de flux. En outre, le runtime de Flink prend en charge
l'exécution d'algorithmes itératifs de manière native.
➢ Flink fournit un moteur de diffusion en continu à haut débit et à faible temps de latence , ainsi qu'un support pour
le traitement des événements et la gestion de l'état. Les applications Flink sont tolérantes aux pannes en cas de
défaillance de la machine et prennent en charge une sémantique exacte.
➢ Flink fournit plusieurs API à différents niveaux d'abstraction et propose des bibliothèques dédiées pour les cas
d'utilisation courants.
➢ Flink ne fournit pas son propre système de stockage de données, mais fournit des connecteurs de source et de
données aux systèmes tels que Amazon Kinesis , Apache Kafka , Alluxio , HDFS , Apache Cassandra et ElasticSearch.
➢ Flink est utilisé par AWS dans sa solution ETL Kinesis Data Firehose.

➢ Uses cases :

Event-driven Applications Data Analytics Applications Data Pipeline Applications


77

Frameworks Big Data: Apache Flink, architecture


78

Frameworks Big Data: Apache Flink, Stateful Functions


• Stateful Functions is an API that simplifies the building of distributed stateful applications with a runtime
built for serverless architectures. It brings together the benefits of stateful stream processing - the processing
of large datasets with low latency and bounded resource constraints - along with a runtime for modeling
stateful entities that supports location transparency, concurrency, scaling, and resiliency.

• It is designed to work with modern


architectures, like cloud-native
deployments and popular event-
driven FaaS platforms like AWS
Lambda and KNative, and to provide
out-of-the-box consistent state and
messaging while preserving the
serverless experience and elasticity
of these platforms.

• Python API • Java API


• JavaScript API • Golang API
79

Frameworks Big Data: Druid, Présentation


➢ Big Data solution for Analytics (OLAP-domain, Star System schema):
• Stockage orienté colonne: Druid stocke et compresse chaque colonne
individuellement, et n'a besoin de lire que celles nécessaires pour une requête
particulière, qui prend en charge les analyses rapides, les classements et groupBys.
• Index de recherche natifs: Druid crée des index inversés pour les valeurs de chaîne
pour une recherche et un filtrage rapides.
• Streaming et ingestion par lots: Connecteurs prêts à l'emploi pour Apache Kafka,
HDFS, AWS S3, processeurs de flux, etc.
• Prise en charge SQL: En plus de son langage natif basé sur JSON, Druid parle SQL sur
HTTP ou JDBC.
• Évolutivité horizontale: Druid a été utilisé en production pour ingérer des millions
d'événements/seconde, conserver des années de données et fournir des requêtes en
moins d'une seconde.
➢ Initialement développé par Metamarkets
➢ Commercialisé par Imply
➢ Écrit en Java
80

Frameworks Big Data: Druid, Architecture (1/2)


➢ Druid a une architecture basée sur des microservices qui peut être considérée comme une base de données
démontée. Chaque service de base de Druid (ingestion, interrogation et coordination) peut être déployé
séparément ou conjointement sur du matériel standard.
➢ Les services Druid peuvent être indisponible indépendamment sans affecter les opérations d'autres services.
81

Frameworks Big Data: Druid, Architecture (2/2)


➢ Gestion des requêtes: Les requêtes du client sont d’abord envoyées aux nœuds broker, qui les transfèrent
ensuite aux nœuds appropriés (historiques ou en temps réel). Comme les segments Druid peuvent être
partitionnés, une requête entrante peut nécessiter des données provenant de plusieurs segments et partitions
stockés sur différents nœuds du cluster. Les brokers peuvent savoir quels nœuds ont les données requises et
fusionner ensuite des résultats partiels avant de renvoyer le résultat agrégé.
➢ Gestion de cluster: Les opérations relatives à la gestion des données dans les nœuds historiques sont
supervisées par des nœuds de coordination. Apache ZooKeeper est utilisé pour enregistrer tous les nœuds,
gérer certains aspects des communications entre nœuds et organiser des élections d'un leader.
➢ Caractéristiques:
• Ingestion de données à faible latence (streaming):
o Druid prend en charge à la fois le streaming et l'ingestion par lots. Druid se connecte à une source de
données brutes, généralement un bus de messages tel qu'Apache Kafka (pour les chargements de
données en streaming) ou un système de fichiers distribué tel que HDFS (pour les chargements de
données par lots).
• Exploration de données arbitraire sur les tranches
• Requêtes analytiques en moins d'une seconde
• Calculs approximatifs et exacts
82

Frameworks Big Data: NiFi, Présentation


➢ NiFi est un logiciel libre de gestion de flux de données. Il permet de gérer et
d'automatiser des flux de données entre plusieurs systèmes informatiques, à partir
d'une interface web et dans un environnement distribué.
➢ Concepts:
• Conçu pour automatiser le flux de données entre les systèmes logiciels.
• Tirer parti du concept d'ETL (Extraire, Transformer, Charger)
• Graphiques orientés évolutifs du routage et des transformations de données.
• Flux de données à l'aide de processeurs.
• Plus de 150 processeurs dans la dernière version.
➢ Le logiciel est initialement un projet interne de la National Security Agency (NSA),
débuté en 2006 et nommé Niagarafiles.
➢ Écrit en Java
➢ Parmis les fonctionnalités:
• Interface utilisateur Web
• Hautement configurable
• Provenance des données
• Extension capacitaire (processeurs)
• Sécurise
83

Autre Frameworks Big Data


▪ Query tools
– Hue
▪ Workflow schedulers
– Oozie
– Airflow
▪ Security
– Ranger
– LDAP (Free IPA)
▪ Datascience products
– JupyterHub
– Zeppelin
– Dataiku DSS
– Khiops
▪ NoSQL Databases
– CockroachDB
84
85

Outils de déploiement : Ansible, ELK, Splunk


Open source

Déploiement automatique
86

Outils de déploiement : Ansible, Présentation


• Ansible est un outil/plateforme d'automatisation open source, utilisé pour les
tâches informatiques telles que la gestion de la configuration, le déploiement
d'applications, l'orchestration intra-service et le provisionnement. L'automatisation
est cruciale de nos jours, avec des environnements informatiques trop complexes et
qui doivent souvent évoluer trop rapidement pour que les administrateurs système
et les développeurs puissent suivre s'ils devaient tout faire manuellement.
L'automatisation simplifie les tâches complexes, non seulement en rendant le travail
des développeurs plus gérable, mais en leur permettant de se concentrer sur
d'autres tâches qui ajoutent de la valeur à une organisation.
• Le système utilise YAML pour exprimer des descriptions réutilisables de systèmes,
appelées playbook.
87

Outils de déploiement : Ansible, Architecture (1/2)


88

Outils de déploiement : Ansible, Architecture (2/2)


• Playbooks Ansible :
▫ Listes ordonnées de tâches, enregistrées afin que vous puissiez exécuter ces tâches dans cet ordre
à plusieurs reprises. Les playbooks sont écrits au format YAML.
• Inventaire :
▫ une liste de nœuds gérés. Un fichier d'inventaire est aussi parfois appelé fichier hôte. Votre
inventaire peut spécifier des informations telles que l'adresse IP pour chaque nœud géré.
• Control Node :
▫ Toute machine sur laquelle Ansible est installé est appelée nœud de contrôleur. Vous pouvez
exécuter des commandes et des playbooks Ansible en appelant la commande ansible ou ansible-
playbook à partir de n'importe quel nœud de contrôle.
• Managed Node :
▫ Les appareils que vous gérez avec Ansible. Les nœuds gérés sont également parfois appelés hôtes.

• Il est possible d’automatiser l’installation d’un cluster Hadoop avec Ansible


89

Outils de déploiement : Openstack Sahara (1/6)


Octobre 2014 Déploiement de clusters à la demande

+100 contributeurs Projet au sein d’Openstack


90

Outils de déploiement : Openstack Sahara (2/6)


• Sahara vise à fournir aux utilisateurs un moyen simple de provisionner des clusters Hadoop,
Spark et Storm en spécifiant plusieurs paramètres tels que la version du framework, la
topologie du cluster, les détails du nœud matériel, etc. Une fois qu'un utilisateur a renseigné
tous les paramètres, Sahara déploie le cluster en quelques minutes (déploiement d’un
cluster Hadoop de 200 nœuds en peu plus de 6 min!!! avec Sahara).
• Sahara fournit également des moyens de faire évoluer un cluster déjà provisionné en
ajoutant ou en supprimant des nœuds de travail à la demande.
• Caractéristiques clés:
▫ conçu comme un composant d’OpenStack.
▫ géré via une API REST avec une interface utilisateur (UI) disponible dans le cadre d'OpenStack
Dashboard.
▫ prise en charge d'une variété de cadres de traitement de données : plusieurs distributions de
fournisseurs Hadoop, Apache Spark et Storm, intégration avec des outils de gestion spécifiques
aux fournisseurs, tels qu'Apache Ambari et Cloudera Management Console.
▫ modèles de configuration prédéfinis avec la possibilité de modifier les paramètres.
• Il est donc possible de faire du « Hadoop as a service » en s’appuyant sur ces outils de
déploiement et d’automatisation.
91

Outils de déploiement : Openstack Sahara (3/6)


• Cas d’utilisation par profil métier:
▫ Administrateur système
 Faciliter les soucis d'installation, de gestion, de monitoring des clusters
 Avoir un point central pour administrer l'infrastructure toute entière de l'entreprise
 Supporter différentes versions d'Hadoop
▫ Développeur, Analyste Qualité
 Créer différents environnements Hadoop simplement : dev, test, pré-prod
 Avoir une API pour construire et lancer son cluster à la volée, notamment lors des tests
 Avoir la possibilité d'exploiter les mêmes données par plusieurs clusters
▫ Analystes
 Isolation des environnements pour éviter la surcharge de la production - Bac à sable
92

Outils de déploiement : Openstack Sahara (4/6)


93

Outils de déploiement : Openstack Sahara (5/6)


• Description des composants de l’architecture. L'architecture du Sahara se compose de
plusieurs éléments :
▫ Auth component – responsable pour l'authentification et les autorisations, dialogue avec
Keystone.
▫ Accès aux données (DAL) - référencé en base pour les données persistants.
▫ Secure Storage Access Layer - conserve les données d'authentification telles que les mots de
passe et les clés privées dans un stockage sécurisé.
▫ Provisioning Engine - composant responsable de la communication avec Nova, Heat, Cinder et
Glance.
▫ Vendor Plugins - mécanisme qui permet aux distribution Hadoop de provisionner les VM.
▫ Elastic Data Processing (EDP) - responsable de la planification et de la gestion des jobs Hadoop
sur les clusters provisionnés par Sahara.
▫ REST API - expose les fonctionnalités de Sahara grâce à des services web REST.
▫ Python Sahara Client - similaire aux autres composants Openstack qui ont leur propre client
python.
▫ Sahara pages - GUI pour Sahara intégré à Horizon.
94

Outils de déploiement : Openstack Sahara (6/6)


• Les plugins Sahara
▫ Très important dans l'architecture de Sahara
▫ Permet aux distributions Hadoop de s’intégrer (pluger) au sein de Sahara
▫ Intégrations actuelles :
 Vanilla (implémentation de référence avec Apache Hadoop),
 HDP (via Ambari),
 IDH (via Intel Manager)
 CDH, Spark
• Elastic Data Processing (EDP)
▫ Permet l'exécution de jobs sur des clusters créés à partir de sahara.
▫ Types de tâches: Hive, Pig, MapReduce, MapReduce.Streaming, Java, et Shell.
▫ Tâches Spark sur des clusters autonomes Spark, des clusters MapR (v5.0.0 - v5.2.0), des clusters Vanilla (v2.7.1) et des
clusters CDH de Cloudera (v5.3.0 ou supérieur).
▫ stockage de fichiers binaires de travail dans le service OpenStack Object Storage (swift), le service de systèmes de
fichiers partagés OpenStack (Manille), la propre base de données de sahara ou tout autre magasin d'objets de type S3
▫ Configuration des jobs au moment de leur soumission
▫ Exécution de jobs sur des clusters existants ou des clusters transitoires
▫ Accès aux sources de données d'entrée et de sortie dans HDFS, Amazon S3, Swift pour tous les types à l'exception de
Hive, Manila (parts NFS uniquement) pour tous les types à l'exception de Pig
95

Outils de déploiement: systèmes d’orchestration (1/2)


• Les systèmes distribués sont nécessairement plus complexes à opérer
▫ Installation et mise à jour
▫ surveillance (monitoring)
▫ détection et basculement lors de défaillance
▫ backup/restore
▫ utilisation des ressources disponibles
• Tout doit s’effectuer sur plusieurs nœuds et souvent de manière coordonnée
• Opérer ces systèmes manuellement n’est ni recommandé, ni souhaitable
• De nouvelles plateformes émergent pour répondre à ces besoins
▫ YARN, Mesos, Kubernetes, Docker Swarm
96

Outils de déploiement: systèmes d’orchestration (2/2)


Kubernetes pour Apache Spark
• Spark peut s'exécuter sur des clusters gérés par
Kubernetes. Cette fonctionnalité utilise le planificateur
natif Kubernetes qui a été ajouté à Spark.
Comment ça marche ?
• spark-submit peut être directement utilisé pour
soumettre une application Spark à un cluster
Kubernetes. Le mécanisme de soumission fonctionne
comme suit :
✓ Spark crée un pilote Spark exécuté dans un pod Kubernetes.
✓ Le pilote crée des exécuteurs qui s'exécutent également
dans les pods Kubernetes et s'y connecte, et exécute le code
de l'application.
✓ Une fois l'application terminée, les pods de l'exécuteur se
terminent et sont nettoyés, mais le pod du pilote conserve
les journaux et reste à l'état « terminé » dans l'API
Kubernetes jusqu'à ce qu'il soit finalement récupéré ou
nettoyé manuellement.
• Notez qu'à l'état terminé, le pod de pilotes n'utilise
aucune ressource de calcul ou de mémoire.
97

Conclusion
Deux catégories

Outils de gestion de
Frameworks Big Data
« grands volumes » de logs

Traitement Streaming Présentation


98

Bibliographie
https://openclassrooms.com/fr/courses/4462426-maitrisez-les-bases-de-donnees-
nosql/4462433-choisissez-votre-famille-nosql
https://aws.amazon.com/fr/nosql/key-
value/#:~:text=Une%20base%20de%20donn%C3%A9es%20cl%C3%A9%2Dvaleur%20es
t%20un%20type%20de,cl%C3%A9%20sert%20d'identifiant%20unique.
https://data-flair.training/blogs/hbase-architecture/
https://ledatascientist.com/hadoop-pour-les-nuls-presentation-de-lecosysteme/
https://databricks.com/fr/spark/about
https://spark.apache.org/docs/3.1.2/
https://spark.apache.org/docs/3.1.2/spark-standalone.html#installing-spark-
standalone-to-a-cluster
https://spark.apache.org/docs/3.1.2/running-on-kubernetes.html
https://databricks.com/fr/spark/getting-started-with-apache-spark/machine-learning
https://kafka.apache.org/
99

Crédits des illustrations


©OpenClassrooms, ©Linux Foundation, ©Wikipedia, ©Amazon
https://data-flair.training/blogs/hbase-architecture/ ©Rawpixel
©Ansible, ©Apache, ©RedHat, ©Databricks, ©Ubuntu, ©Kubernetes,
©Apache Kafka, ©Apache Spark
100

Questions ?
Contactez-nous:
tinembaye@gmail.com
@tinepapa (twitter)

Vous aimerez peut-être aussi