Traitements Big Data avec Apache Spark

Page 1 sur 31Lecteur de document UniversityLib

Traitements Big Data avec Apache Spark

Big Data Processing Technology · notes

Browse all intelligence artificielle et données documents

Traitements Big Data avec Apache

Spark

1

Quest-ce que Spark ?

" Apache Spark est un framework de traitements Big Data open source

construit pour effectuer des analyses sophistiqu es et con u pour la

rapidit et la facilit dutilisation. Il est pass open source sous forme de

projet Apache en 2010.

2

Quest-ce que Spark ?

" Spark pr sente plusieurs avantages:

Dabord, Spark propose un framework complet et unifi pour r pondre aux besoins

de traitements Big Data pour divers jeux de donn es, divers par leur nature (texte,

graphe, etc.) aussi bien que par le type de source (batch ou flux temps-r el).

Ensuite, Spark permet des applications sur clusters Hadoop d tre ex cut es jusqu

100 fois plus vite en m moire, 10 fois plus vite sur disque. Il permet d crire

rapidement des applications en Java, Scala ou Python et inclut un jeu de plus de 80

op rateurs haut-niveau.

De plus, il est possible de lutiliser de fa on interactive pour requ ter les donn es

depuis un shell.

3

Quest-ce que Spark ?

" De plus, il est possible de lutiliser de fa on interactive pour requ ter les

donn es depuis un shell.

"

Enfin, en plus des op rations de Map et Reduce, Spark supporte les

requ tes SQL et le streaming de donn es et propose des fonctionnalit s

de machine learning et de traitements orient s graphe. Les d veloppeurs

peuvent utiliser ces possibilit s en stand-alone ou en les combinant en

une cha ne de traitement complexe

4

Hadoop et Spark

" Hadoop est positionn en tant que technologie de traitement de donn es depuis

10 ans et a prouv tre la solution de choix pour le traitement de gros volumes

de donn es.

"

MapReduce est une tr s bonne solution pour les traitements passe unique

mais nest pas la plus efficace pour les cas dutilisation n cessitant des

traitements et algorithmes plusieurs passes.

" Chaque tape dun workflow de traitement tant constitu e dune phase de Map

et dune phase de Reduce, il est n cessaire dexprimer tous les cas dutilisation

sous forme de patterns MapReduce pour tirer profit de cette solution.

"

Les donn es en sortie de lex cution de chaque tape doivent tre stock es sur

syst me de fichier distribu avant que l tape suivante commence. Cette

approche a tendance tre peu rapide cause de la r plication et du stockage

sur disque.

5

Hadoop et Spark

" De plus, les solutions Hadoop sappuient g n ralement sur des clusters, qui sont

difficiles mettre en place et administrer. Elles n cessitent aussi lint gration

de plusieurs outils pour les diff rents cas dutilisation big data (comme Mahout

pour le Machine Learning et Storm pour le traitement par flux).

"

Si vous souhaitez mettre en place quelque chose de plus complexe, vous devrez

encha ner une s rie de jobs MapReduce et les ex cuter s quentiellement,

chacun de ces jobs pr sentant une latence lev e et aucun ne pouvant

commencer avant que le pr c dent nait tout- -fait termin .

Spark permet de d velopper des pipelines de traitement de donn es complexes,

plusieurs tapes, en sappuyant sur des graphes orient s acycliques (DAG).

6

Hadoop et Spark

" Spark permet de partager les donn es en m moire entre les graphes,

de fa on ce que plusieurs jobs puissent travailler sur le m me jeu de

donn es. Spark sex cute sur des infrastructures Hadoop Distributed

File System (HDFS) et propose des fonctionnalit s suppl mentaires.

Il est possible de d ployer des applications Spark sur un cluster Hadoop

v1 existant (avec SIMR Spark-Inside-MapReduce), sur un cluster

Hadoop v2 YARN.

"

Advertisement

" Plut t que de voir en Spark un rempla ant dHadoop, il est plus correct

de le voir comme une alternative au MapReduce dHadoop.

Conclusion:

" Spark na pas t pr vu pour remplacer Hadoop mais pour mettre

disposition une solution compl te et unifi e permettant de prendre en

le cadre des

charge diff rents cas dutilisation et besoins dans

traitements big data.

7

Les fonctionnalit s de Spark

" Spark apporte des am liorations MapReduce gr ce des tapes de

shuffle moins co teuses. Avec le stockage en m moire et un traitement

proche du temps-r el, la performance peut tre plusieurs fois plus

rapide que dautres technologies big data.

" Spark

supporte galement

les valuations paresseuses

("lazy

evaluation") des requ tes, ce qui aide loptimisation des tapes de

traitement.

"

Il propose une API de haut-niveau pour une meilleure productivit et un

mod le darchitecture coh rent pour les solutions big data.

8

Les fonctionnalit s de Spark

" Spark maintient les r sultats interm diaires en m moire plut t que sur

disque, ce qui est tr s utile en particulier lorsquil est n cessaire de

travailler plusieurs reprises sur le m me jeu de donn es. Le moteur

dex cution est con u pour travailler aussi bien en m moire que sur

disque. Les op rateurs r alisent des op rations externes lorsque la donn e

ne tient pas en m moire, ce qui permet de traiter des jeux de donn es

plus volumineux que la m moire agr g e dun cluster.

" Spark essaye de stocker le plus possible en m moire avant de basculer sur

disque. Il est capable de travailler avec une partie des donn es en

m moire, une autre sur disque.

9

Les fonctionnalit s de Spark

Les autres fonctionnalit s propos es par Spark comprennent :

" Des fonctions autres que Map et Reduce

"

"

Loptimisation de graphes dop rateurs arbitraires

L valuation paresseuse des requ tes, ce qui aide optimiser le workflow

global de traitement

" Des APIs concises et coh rentes en Scala, Java et Python

" Un shell interactif pour Scala et Python (non disponible encore en Java)

Spark est crit en Scala et sex cute sur la machine virtuelle Java (JVM). Les

langages support s actuellement pour le d veloppement dapplications

sont : Scala; Java; Python

10

L cosyst me de Spark

c t des API principales de Spark, l cosyst me contient des librairies

additionnelles qui permettent de travailler dans le domaine des analyses big

data et du machine learning. Parmi ces librairies, on trouve :

" Spark Streaming : Spark Streaming peut tre utilis pour traitement temps-

r el des donn es en flux. Il sappuie sur un mode de traitement en "micro

batch" et utilise pour les donn es temps-r el DStream, cest- -dire une

s rie de RDD (Resilient Distributed Dataset).

" Spark SQL : Spark SQL permet dexposer les jeux de donn es Spark via API

JDBC et dex cuter des requ tes de type SQL en utilisant les outils BI et de

visualisation traditionnels. Spark SQL permet dextraire, transformer et

charger des donn es sous diff rents formats (JSON, Parquet, base de

donn es) et les exposer pour des requ tes ad-hoc.

11

L cosyst me de Spark

" Spark MLlib : MLlib est une librarie de machine learning qui contient tous

les algorithmes et utilitaires dapprentissage classiques, comme la

classification, la r gression, le clustering, le filtrage collaboratif, la r duction

de dimensions, en plus des primitives doptimisation sous-jacentes.

" Spark GraphX : GraphX est la nouvelle API pour les traitements de graphes

Advertisement

et de parall lisation de graphes. GraphX tend les RDD de Spark en

introduisant le Resilient Distributed Dataset Graph, un multi-graphe orient

avec des propri t s attach es aux nSuds et aux arr tes.

12

Larchitecture de Spark

Larchitecture de Spark comprend les composants principaux suivants :

"

Le stockage des donn es

Spark utilise le syst me de fichiers HDFS pour le stockage des

donn es. Il peut fonctionner avec nimporte quelle source de

donn es compatible avec Hadoop, dont HDFS, HBase, Cassandra,&

"

Le Framework de gestion des ressources

Spark peut tre d ploy comme un serveur autonome ou sur un

framework de traitements distribu s comme YARN.

"

Les RDD: Resilient Distributed Datasets

13

Les "Resilient Distributed Datasets"

"

Les Resilient Distributed Datasets, ou RDD, sont un concept au cSur du

framework Spark.

" Un RDD est comme une table dans une base de donn es. Celui-ci peut

porter tout type de donn es et est stock par Spark sur diff rentes

partitions. Les RDD permettent de r arranger les calculs et doptimiser le

traitement. Ils sont aussi tol rants aux pannes car un RDD sait comment

recr er et recalculer son ensemble de donn es.

"

Les RDD sont immutables: Pour obtenir une modification dun RDD, il faut

y appliquer une transformation, qui retournera un nouveau RDD, loriginal

restera inchang .

14

Les "Resilient Distributed Datasets"

Les RDD supportent deux types dop rations :

"

Les transformations: ne retournent pas de valeur seule, elles retournent

un nouveau RDD. Rien nest valu lorsque lon fait appel une fonction

de transformation, cette fonction prend juste un RDD et retourne un

nouveau RDD.

" Les fonctions de transformation sont par exemple map, filter, flatMap,

groupByKey, reduceByKey, aggregateByKey, pipe et coalesce.

"

Les actions: valuent et retournent une nouvelle valeur. Au moment

o une fonction daction est appel e sur un objet RDD, toutes les

requ tes de traitement des donn es sont calcul es et le r sultat est

retourn .

" Les actions sont par exemple reduce, collect, count, first, take,

countByKey et foreach.

15

16

Exemples de transformations

17

Actions

18

19

Spark: Actions et transformations

" Pour une liste compl te et des sp cifications

d taill es de Spark, consulter:

https://spark.apache.org/docs/latest/api/scala/in

dex.html#org.apache.spark.sql.Dataset

" Voici quelques exemples dactions les plus

utilis es:

20

21

Exemples de transformations

22

Activit

" Choisir une action et proposer un exemple.

" Choisir une transformation et proposer un

exemple.

Advertisement

" Reference: http://b3d.bdpedia.fr/spark-

batch.html

23

Fonction Map

RDD

Bonjour les Amis

Bonjour les Amis

Bonjour les Amis

&

Bonjour les Ennemis

Bonjour les Ennemis

Bonjour les Ennemis

RDD

bonjour les amis

bonjour les amis

bonjour les amis

&

bonjour les ennemis

bonjour les ennemis

bonjour les ennemis

24

Fonction FlatMap

RDD

bonjour les amis

bonjour les amis

bonjour les amis

&

bonjour les ennemis

bonjour les ennemis

bonjour les ennemis

RDD

Bonjour

Les

amis

&

Bonjour

Les

ennemis

25

Fonction Map

RDD

Bonjour

Les

amis

&

Bonjour

Les

ennemis

RDD [(string,int)]

(Bonjour,1)

(Les,1)

(amis,1)

&

(Bonjour,1)

(Les,1)

(ennemis,1)

26

Shuffle

RDD [(string,int)]

RDD [(string,iterator )]

RDD [(string,int)]

(Bonjour,1)

(Les,1)

(amis,1)

&

(Bonjour,1)

(Les,1)

(ennemis,1)

(Bonjour,1, &,1)

(Les,1, &,1)

Advertisement

&

(amis,1)

&

.mapValues

(Bonjour,+2)

(Les,+2)

&

(amis,+1)

&

(ennemis,1)

(ennemis,+1)

GroupByKey

27

Les 2 premiers les plus fr quents

RDD [(string,int)]

(Bonjour,+2)

(Les,+2)

&

(amis,+1)

&

(ennemis,+1)

RDD [(int,string)]

(+2,bonjour)

(+2, les)

&

(+1, amis)

&

(+1,ennemis)

28

Les 2 premiers les plus fr quents

RDD [(int,string)]

RDD [(int,string)]

(+2,bonjour)

(+2, les)

&

(+1, amis)

&

(+2,bonjour)

(+2, les)

&

(+1, amis)

&

(+1,ennemis)

(+1,ennemis)

Array [(int,string)]

(+2,bonjour)

(+2, les)

29

Autre alternative avec Top(N)

RDD [(int,string)]

(+2,bonjour)

(+2, les)

&

(+2,bonjour)

LOCAL Top

(+2, les)

(+1, amis)

LOCAL Top

(+1, amis)

&

(+1,ennemis)

LOCAL Top

(+1,ennemis)

Reduction

(+2,bonjour)

(+2, les)

30

Le programme total

31