Apache Spark-Inachvé

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 15

REPUBLIQUEDUCAMEROUN REPUBLICOFCAMEROON

Paix-Travail-Patrie peace-work-fatherland
************** **************
MINISTERE DE L’ENSEIGNEMENT SUPERIEURE MINISTRYOFHIGHER EDUCATION
************** **************
UNIVERSITE DE MAROUA THEUNIVERSITYOF MAROUA
************** **************
E.N.S.P MAROUA E.N.S.P MAROUA
************** **************
DEPARTEMENT D’INFOTEL DEPARTMENT OF INFOTEL

NOM ET PRENOM MATRICULE

SANDA OUMAROU 19A0396P

Encadreur: Mr GAZISSOU BALAMA Année académique : 2021/2022

SANDA OUMAROU
1 Table des matières
INTRODUCTION ....................................................................................................................................... 3
1 PARLONS DU BIG DATA ................................................................................................................... 4
Type de données ..................................................................................................................... 4
Les caractéristiques des Big Data ............................................................................................ 5
Les technologies et les plateformes du Big Data..................................................................... 5
2 Le Framework APACHE SPARK ........................................................................................................ 6
Définition et présentation de SPARK ....................................................................................... 6
Les composants d’Apache Spark ............................................................................................. 7
2.2.1 Spark core ........................................................................................................................ 7
2.2.2 Spark SQL ......................................................................................................................... 7
2.2.3 Spark Streaming............................................................................................................... 7
2.2.4 MLlib ................................................................................................................................ 8
2.2.5 GraphX ............................................................................................................................. 8
RDD : Structure de données de base d’Apache Spark............................................................. 8
3 Principe de fonctionnement de Spark ........................................................................................... 10
4 Architecture globale d’Apache Spark ............................................................................................ 11
5 Avantages et inconvénients d’Apache Spark ................................................................................ 13
5.1.1 Avantages ...................................................................................................................... 13
5.1.2 Inconvénients /Limites .................................................................................................. 14
Conclusion ............................................................................................................................................. 14
TP Manipulation .................................................................................................................................... 15

SANDA OUMAROU
INTRODUCTION
Depuis quelques années, l’évolution de la technologie a causé une augmentation
drastique et exponentielle des données (structurées ou non structurées). Ces données sont
produites par différentes sources de données numériques qui existe (internet, téléphones,
trace GPS, réseaux de capteurs …) ; et ceci concerne pratiquement tous les domaines de la
vie :la sante, le marketing, météorologie et bien d’autres. Du fait de cette gigantesque
quantités de données, les informaticiens se doivent de trouver de nouvelles méthodes de
traitement, de gestion et de stockage de ces données car les exigences de celle-ci dépassent
les limites des technologies traditionnelles. C’est ainsi que naissent le concept de BIG DATA
et les différentes technologies qui lui sont associées.

SANDA OUMAROU
1 PARLONS DU BIG DATA
De manière simple, le terme « BIG DATA » (ou MEGA DONNEES) est une expression
anglophone utilisée pour designer des données volumineuses ne permettant pas l’utilisation
d’outils classiques de gestion de bases de données. Ce ci étant dit, il sera donc très difficulté
de traiter, stocker et analyser ces données avec de outils simples. Ajoutée a la volumétrie de
données, on a également la différence de types de ces données.

Type de données
Le big data est constitué de 02 principaux types de données à savoir :
- Les données structurées : qui font référence aux donnes avec un format et une longueur
définie. Ici les données sont hautement organisées et il est très facile d’en avoir accès et
d’en manipuler à notre guise.
- Les données Non Structurées : qui font références aux données de tous types, de formes
et structures différentes, qui ne conviennent pas du tout aux bases de données
relationnelles traditionnelles. Ici le traitement des données est très difficile et le
processus et très long. D’ou la nécessité des outils sophistiqués.

SANDA OUMAROU
Les caractéristiques des Big Data
Les mégadonnées ont 5 caractéristiques sous-jacentes qui sont :
- Volume : qui se réfère à la quantité de données générées quotidiennement par les
entreprises et les personnes.
- Vitesse : qui caractérise la vitesse à laquelle sont générées ces données-là. Elle est une
caractéristique très importante car elle permet de faire certaines anticipations.
- Variété : qui caractérises les diverses natures et sources de provenances les données à
traiter ; celles-ci sont structurées ou non, et hétérogènes.
- Véracité : elle fait référence à la précision et la fiabilité des données. Pour extraire des
informations d’un ensemble de données, il faut d’abord procéder à un nettoyage de
données incorrectes et défectueux.
- Valeur : qui évalue en quelques sortes l’utilité de la donnée en fonction du but visé.
Cette caractéristique est étroitement liée à la véracité.
On a la figure récapitulative suivante.

Les technologies et les plateformes du Big Data


Pour mener à bien le traitement des données volumineuses, de nombreuses solutions ont
été proposées :
- Des bases de données NoSQL (MongoDB, Cassandra,) : pour un système de stockage
plus performant et pour l’analyse des données en masse non structurées.
- Des infrastructures de serveurs : pour les traitements sur des nœuds (qui se font en
parallèle).
- Le traitement in-memory : c’est-à-dire que les traitements sont effectués directement
en mémoire. Ce qui entraine une très grande vitesse de traitement puisque les données
sont directement accessibles.
Comme plateforme de big-data, nous avons :

SANDA OUMAROU
Hadoop : qui est un logiciel open-source fonctionnant dans un réseau d’ordinateur en
parallèle(cluster) pour solutionner les problèmes liés au Big Data. Ceci se fait à l’aide du
modelé MapReduce
Apache Spark : qui est également un Framework open-source de calcul distribué.
Dans le cadre de notre devoir, nous allons nous pencher sur le Framework SPARK les
détails seront donnés dans la suite.

2 Le Framework APACHE SPARK


Définition et présentation de SPARK

Spark est un Framework de calcul distribué in-memory conçue pour mieux appréhender
la notion de Big Data.
Il s’agit en effet d’un ensemble d’outils et de composants logiciels structurés suivant une
architecture bien définie, IL peut effectuer rapidement des taches de traitement sur de très
grands ensemble de données , ceci se justifie par le fait qu’il utilise la mémoire cache et des
fonctions d’exécution de requêtes optimisées pour interroger rapidement ces données peu
importe leur tailles, pour plus d’efficacité il peut également distribuer des taches de
traitement de données sur plusieurs ordinateurs.
C’est un Framework big data spécialiser dans le traitement de données massives, mais un
souci très gênant avec lui est qu’il ne fait pas du stockage de données car ne possède aucune
technologie de stockage. De ce fait, Spark nous offre donc la possibilité d’intégrer en son
sein d’autres technologies big data, notamment HADOOP et son système de fichier HDFS
pour une bonne gestion et stockage des données ; AWSS3 ; MongoDB…
Il offre des APIS (application programming interfaces) de hauts niveaux en plusieurs
langages tels que Java, Scala, Python, R ; ce qui veut dire qu’on a la possibilité d’écrire nos
programmes en utilisant le langage que nous maitrisons le mieux parmi ceux proposés.

SANDA OUMAROU
Les composants d’Apache Spark

Spark est constitué de plusieurs composants, chacun jouant un rôle important dans
l’architecture et le fonctionnement de celui-ci.
2.2.1 Spark core
Comme son nom l’indique, c’est lui le moteur d’exécution, l’élément principal du
Framework en question. Il fournit des services tel que la répartition des taches distribuées, la
gestion de la mémoire, le schedulling, la récupération de données après une panne,
fonctionnalités de lecture/écriture de base et bien d’autres.
Sur lui est implémentée l’API RDD qui est une collection logique de données sur
cluster. On en parlera plus bas
Il contient toutes les bibliothèques de Spark, et permet également à l’utilisateur d’en
rajouter d’autres
2.2.2 Spark SQL
Ce module permet de traiter les données en SQL, HQL2 ou même des APIs de haut niveau
de Spark core (scala, java, python, R). Il vient introduire une nouvelle abstraction de données
format RDD et on a la possibilité de charger les données sous différents formats tel que csv,
json.
Il est important de noter que Spark SQL s’intègre très bien avec Apache Hive en
utilisant le langage HQL.

2.2.3 Spark Streaming


Spark streaming est utilisé pour faire du traitement en pseudo temps réel. Bien que
Spark ait été conçu pour le traitement par lot, il peut également être utilisé pour le
traitement en continue à l’aide du concept de Micro-lot fournit par Spark streaming. En
effet, le traitement de chaque lot se fait après un temps relativement très minus. L’API
Spark streaming construit des RDD de type spécifique (Dstreams) dans le but de se
conformer à la structure de fichiers dans Spark core. Il supporte plusieurs sources de
données tel que Kafka, Flume, Apache …

SANDA OUMAROU
2.2.4 MLlib
C’est une bibliothèque de Machine Learning distribuées et ses algorithmes sont
conçus pour être exécutés de façon distribuée sur un cluster de machine. MLlib utilise
également des RDD, et les inputs de ses algorithmes doivent être :
* Des RDD[Vector] pour des données n’ayant pas de label ;
* Des RDD[LabeledPoint] spécifique à l’apprentissage supervisé ;
* Des RDD[Rating] pour des systèmes de recommandation.
Il faut noter que MLlib n’est pas la seule librairie de machine Learning sous Spark, on a
aussi Spark ML qui est basée sur l’API Dataframe. C’est une bibliothèque idéale pour
l’apprentissage automatique.

2.2.5 GraphX
GraphX est un outil pour le traitement de graphe distribués sur Spark. Il fournit
également des APIs pour faire des calculs relatifs aux graphes, des APIs d’abstraction
comme Pregel pour modéliser les graphes définis par l’utilisateur.

A ceux-ci on peut aussi citer le gestionnaire de ressource : ce sont les processus qui
gèrent l’attribution d’une ressource matérielle à un job particulier. Pour Spark c’est
STANDALONE SCHEDULER, mais à côté de celui-ci y’en a également YARN et MESOS qui ne
sont pas natifs de Spark

RDD : Structure de données de base d’Apache Spark

Dans Spark, les données en mémoire sont structurées différemment. Spark utilise les
Donnes Distribuées Résilientes ou les RDD (Resilient Distributed Data) Comme type de fichier
de base. Donc toutes les données prises en entrées sont transformées en RDD
RDD est en fait une collection de données en lecture seule, qui peuvent être
partitionnées dans un sous ensemble de machine de cluster Spark (ou tout simplement
collection logique de données partitionnées sur un cluster).
Les donnes d’entrées qui forment un RDD sont d’abords partitionnées en morceaux
et ensuite distribuées sur tous les nœuds du cluster Spark, chaque nœud effectuant ensuite
un calcul en parallèle. RDD est un élément indispensable pour le fonctionnement de Spark
au point où il est vu comme une API de création, de transformation et d’export de RDD.

SANDA OUMAROU
Ces opérations parallèles s’effectuent sur les RDD à l’aide de l’API SPARK CORE. La
figure suivante nous en dit plus.

Exemple illustratif :

On dispose d’un fichier contenant des phrases, l’on souhaite compter le


nombre de c’occurrence de chaque mot dans tout le document. Pour cela, on
procède comme suit.

Entrée RDD

Mot RDD :
TRANSFORMATION

Mot RDD avec clés : ACTION

Mot RDD avec nombre final


d’occurrence : RESULTAT

SANDA OUMAROU
3 Principe de fonctionnement de Spark

➢ Pour plus d’efficacité, Spark réduit les opérations à effectuer


Le succès du Framework SPARK face à d’autres technologies Big Data est du principalement
au niveau des étapes de shuffle qui pour lui sont moins couteuses. Il en limite énormément
et stocke les données des étapes intermédiaires en mémoire, tandis que certains comme
MapReduce de Hadoop fait plusieurs lecture/écriture sur le disque ; ce qui explique cette
efficacité qu’a Spark.

➢ Le fonctionnement de Spark est principalement basé sur La LAZY EVALUATION


(évaluation paresseuse en français) ce qui le rend encore plus performent.

Qu’Est-ce que LA LAZY EVALUATION et pourquoi Apache est-il basé sur cela ??

Tout d’abords il fait savoir que Spark a deux principaux types d’Operations : les
transformations et les actions.
Les transformations sur Spark sont ce qu’on considère comme LAZY, cela veut dire que
lorsqu’on lance une opération en Spark, il ne va pas l’exécuter tout de suite mais plutôt créer
un nouveau RDD y enregistrer ce qu’il faut faire. Ainsi donc il va cumuler les taches qui
formeront un graphe DAG (Ddirected Acyclic Graph), ces opérations ne seront exécutées que
lorsqu’une fonction de type « action » (comme un count, un reduce ou un write) est
invoquée dans le programme. Donc dans l’évaluation paresseuse les donnes sont chargées
depuis la source uniquement quand c’est nécessaire. Ainsi, on évite les exécutions couteuses
et inutiles pour gagner en performance

SANDA OUMAROU
Les actions sont tout simplement des opérations qui renvoient un résultat après que les
calculs sur RDD soient effectués.
Une brève illustration des effets d’Operations transformation/action est donnée dans le
tableau suivant.

4 Architecture globale d’Apache Spark

Spark a une architecture MAITRE-ESCLAVE c’est-à-dire un MASTER et des WORKERS


ou le MASTRE va gérer l’ensemble des traitements de Spark tandis que les WORKERS vont

SANDA OUMAROU
exécuter ces traitements. On peut alors exécuter des programmes en mode Standalone
Schedule ou en se basant sur d’autre cluster manager tel que YARN, MESOS ou KUBERNETES.
LE DRIVER PROGRAM/ MASTER
Très souvent confondu au MASTER, le Driver Program représente en quelque sorte le
coordonnateur de tous les jobs, opération et applications s’exécutant sur Spark. Ce dernier
contient un objet appelé SparkContext
SparkContext est le point d’Access de toutes application Spark. Grace à sparkContext,
le driver program peut instancier d’autre contexte comme SQLContext, HiveContext,
StreamingContext etc.
Pour créer un sparkContext, il faut tout d’abord créer un SparkConf qui aura pour
rôle d’enregistrer tous les paramètres de configuration. Le driver les récupère donc afin de
les passer en paramètre au SparkContext. Dans SparkConf, on peut customiser beaucoup de
paramètre comme le parallélisme, le shuffle etc…
Ainsi, pour s’exécuter sur un cluster, le driverprogramm peut se connecter à
plusieurs gestionnaires de cluster par le biais du Spark Context, ce sont eux qui vont dire ou
doit s’exécuter un job, quelles sont les allocations mémoires à faire. Mais il est souvent
conseillé d’utiliser le gestionnaire natif de Spark STANDALONE SCHEDULER qui gère aussi
très bien l’automatisation du déploiement des clusters et des conteneurs DOKER
Donc une fois que Spark est connecté à un gestionnaire, il va tout d’abord faire des
attributions de ressources, puis il va lancer des exécuteurs sur l’ensemble des nœuds du
cluster et chaque exécuteur a un ensemble de tache à effectuer. Toutes ces taches
s’effectuent en parallèle sur chaque exécuteur. Ici le parallélisme est très important car il
maximise les performances du cluster et rend chaque exécuteur totalement indépendant de
l’autre pour éviter d’éventuelles perturbation.

WORKERS/SLAVES
Concrètement, un worker a pour rôle d’exécuter les traitements Spark. C’est un nœud du
cluster dans lequel plusieurs exécuteurs vont exécuter les taches., quand le sparkContext est
déjà instancier, chaque worker lance l’exécuteur en fonction des paramètres qui ont été
spécifiés dans le SparkConf. En effet, Lorsque les exécuteurs sont créés ils se connectent à
l’instance driver, celui-ci leur enverra les taches à exécuter (flatmap, reduceByKey, map…).
Lorsque le driver s’arrête, les exécuteurs suivent.
On peut également définir les paramètres des Works et exécuteurs en fonction de
l’utilisation. Ceci se fait soit l’or de la création du SparkConf, soit lors de l’exécution de votre
job Spark (Example : spark.executor.cores = 4 indique que le nombre de core par exécuteur
est 4).

SANDA OUMAROU
Donc en résumé, dans un cluster on peut avoir 1worker=1noeud (physique ou
virtuel, on peut aussi avoir plusieurs workers virtuel sur une seule machine physique) et dans
chaque worker on aura 1 ou n exécuteurs qui à son tour traite une ou plusieurs taches

5 Avantages et inconvénients d’Apache Spark


Comme toute choses, Spark présente des avantages est des inconvénients.

5.1.1 Avantages

Ce sont ses nombreux avantages qui font de lui l’une des plateformes les plus utilisées
dans le domaine du Big Data.
➢ Performance de traitement : il est possible de réaliser une vitesse de traitement
très élevée avec Spark sur des fichiers volumineux, ce qui peut être jusqu’à 100
fois plus rapide qu’Hadoop pour 10 fois moins de ressources ; et ceci grâce au
traitement in-memory, à la réduction du nombre d’opérations de lecture/écriture
sur le disque, l’utilisation des mémoires caches pour les données intermédiaires.

➢ Dynamicité : il est facile de développer des applications parallèles grâce aux


operateurs haut niveaux fournit par Spark (environs 80 operateurs).

➢ Traitement à la volée : l’un des avantages majeurs de Spark par rapport à


Hadoop est qu’il permet de traiter les données à la volée, pas uniquement en
batch.

➢ Support de plusieurs langages : Spark supporte plusieurs langages de


programmation (java, scala, R, python).

➢ Support des analyses sophistiquées : Spark est fournit avec un ensemble d’outils
d » dies au streaming, requetés itératives et traitement interactifs, machine
Learning …

➢ Evaluation paresseuse : Spark ne traite les opérations reçues que si nécessaire.


C’est-à-dire que lorsqu’on lui soumet un traitement, il le garde en mémoire
jusqu’à ce que le résultat soit demandé avant qu’il ne commence à la traiter.

➢ Tolérance aux pannes : apache Spark fournit un mécanisme de tolérance au


pannes grâce aux RDD. Ces RDD sont en réalité conçu pour récupérer les donner
en cas de panne. La récupération RDD se fait via les données de lignage comme
suit.

SANDA OUMAROU
L'entrée est la base de RDD1. Cela pourrait représenter une fraction des données
filtrées à partir du fichier d’entrée. RDD2 et RDD3 pourraient représenter un filtrage ou une
agrégation de niveau supérieur. Si RDD2 ne rentre pas dans la mémoire ou si le nœud
échoue, alors RDD2 peut être facilement reconstruit sur les données de lignage, car le nœud
maître sait que RDD2 a été construit sur la base de RDD1. La reconstruction est effectuée
dans un autre nœud disponible au hasard.
5.1.2 Inconvénients /Limites
Comme toutes technologie, Apache Spark présente aussi des inconvénients. On peut citer :

➢ Spark ne possède aucun système de gestion de fichier : Spark est principalement un


système de traitement, et ne fourni pas de solution de stockage. Ce qui un peu est très
gênant

➢ Problème avec les fichiers de petite taille : Spark partitionne les traitements sur plusieurs
exécuteurs, et est optimisé principalement pour de grand volume de donnée. Donc l’utiliser
pour des données de petites tailles va engendrer le gaspillage de ressource inutilement. Il est
donc judicieux d’utiliser un traitement séquentiel qui se fera sur une seule machine.

➢ Pas de traitement en véritable temps réel : Spark permet les traitements en pseudo-temps-
réel car il utilise les traitements en micro-lots plutôt que des traitements en streaming.

Conclusion

SANDA OUMAROU
TP Manipulation

Note : Dans cette partie, nous allons juste faire quelles petitee manipulations de base .

Il sera question ici de faire une analyse predictive sur

SANDA OUMAROU

Vous aimerez peut-être aussi