Comparaison MapReduce vs Spark pour Big Data

Big Data, Apache Spark, MapReduce · course

Browse all intelligence artificielle et données documents

Chapitre 4

Spark

Big Data - 2019

1

Plan

Critique de MapReduce

Apache Spark

Fonctionnalit s de Spark

Ecosyst me de Spark

Architecture de Spark

RDD

DataFrame

Dataset

2

Critique de MapReduce

Si on souhaite mettre en place une solution complexe, il est

n cessaire dencha ner une s rie de jobs MapReduce et de les

ex cuter s quentiellement.

=> Il est difficile dexprimer des op rations complexes en

nutilisant que MapReduce.

3

Critique de MapReduce

Apr s une op ration Map ou Reduce, le r sultat est crit sur disque.

Les Mappers et Reducers communiquent entre eux travers les

donn es crites sur disque.

=> Op rations de lectures/ critures tr s co teuses en temps!

=> MapReduce est une bonne solution pour les traitements

passe unique.

=> MapReduce nest pas la meilleure solution pour les traitements

plusieurs passes.

Solution : Spark

4

Spark : Pr sentation

" Framework de conception et d'ex cution Map/Reduce.

" Originellement (2014) un projet de l'universit de Berkeley en Californie, d sormais

un logiciel libre de la fondationApache.

" Licence Apache.

" Trois modes d'ex cution:

q Cluster Spark natif.

q Hadoop (YARN).

q Mesos (Spark natif + scheduler Mesos).

" Cest un moteur MapReduce plus volu , plus rapide pour les t ches

impliquant de multiples maps et/ou reduce.

q Utilisation de la m moire pour optimiser les traitements.

q Des APIs pour faciliter et optimiser les tapes danalyses.

2

Spark : Plus rapide

Big Data - 2019

3

Apache Spark

Framework de traitement Big Data open source.

D velopp en 2009 par AMPLab University of California

Berkeley.

En 2010 il est pass open source sous forme de projet

Apache.

7

Apache Spark

Framework complet et unifi adapt au traitement batch et temps r el de

divers types de donn es.

Il 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 est crit en Scala et sex cute sur la Machine Virtuelle Java (JVM).

Il permet d crire facilement et rapidement des applications en Java, Scala,

R ou Python.

Il est possible de lutiliser de fa on interactive pour requ ter les donn es

depuis un shell.

8

Apache Spark

En plus des op rations Map et Reduce, Spark supporte les

requ tes SQL et le streaming de donn es.

Spark propose des fonctionnalit s de machine learning et de

traitements orient s graphe.

Ces possibilit s peuvent tre utilis es en stand-alone ou en les

combinant en une cha ne de traitement complexe.

9

Apache Spark

Spark permet de d velopper des pipelines de traitement de

donn es complexes, plusieurs tapes, en sappuyant sur des

graphes orient s acycliques (DAG).

Il 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.

10

Apache Spark

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

Hadoop v1 existant (avec SIMR Spark-Inside-MapReduce),

ou sur un cluster Hadoop v2 YARN.

En g n ral, Spark nest pas consid r comme un

rempla ant de Hadoop mais comme une alternative au

MapReduce dHadoop.

Advertisement

11

Apache 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 fois sur le m me jeu de

donn es.

Le moteur dex cution de Spark est con u pour travailler

aussi bien en m moire que sur disque.

Spark essaie 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.

12

Fonctionnalit s de Spark

Les autres fonctionnalit s propos es par Spark comprennent :

Des fonctions autres que Map et Reduce ;

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).

13

Ecosyst me de Spark

14

Ecosyst me de Spark

Spark Core :

Moteur de base de Spark

Gestion de t ches

Gestion de m moire

R cup ration derreurs

Interaction avec le stockage

D finition des classes de RDD

15

Ecosyst me de Spark

A part les API principales de Spark, son cosyst me contient

des librairies additionnelles telles que :

Spark streaming : est utilis pour le traitement temps-r el des

donn es en flux. Il sappuie sur un mode de traitement en

"micro batch" et utilise Dstream (cest- -dire une s rie de

RDD (Resilient Distributed Dataset)).

Spark SQL : Gr ce des requ tes de type SQL, 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.

16

Ecosyst me de Spark

MLlib : cest une librairie de machine learning qui contient

tous les algorithmes et utilitaires dapprentissage classiques,

comme la classification, la r gression, le clustering, en plus des

primitives doptimisation sous-jacentes.

GraphX : cest une API (en version alpha) pour les traitements

de graphes. Elle 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.

GraphX inclut une collection toujours plus

importante

dalgorithmes et de builders pour simplifier les t ches danalyse

de graphes.

17

Ecosyst me de Spark

Il existe aussi des adaptateurs pour int gration dautres

produits comme Cassandra (Spark Cassandra Connector) et R

(SparkR).

Avec le connecteur Cassandra, il est possible dutiliser Spark

pour acc der des donn es stock es dans Cassandra et r aliser

des analyses sur ces donn es.

18

Architecture de Spark

Larchitecture de Spark est bas e sur

principaux :

trois composants

API (Scala, Java,

Python)

Stockage de

donn es (HDFS,

autres formats)

Gestion de

ressources

(stand-alone,

YARN&)

19

Architecture de Spark

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.

LAPI permet aux d veloppeurs de cr er des applications

Spark en utilisant une API standard. LAPI existe en Scala, Java

et Python.

Spark peut tre d ploy comme un serveur autonome ou sur

Advertisement

un framework de traitements distribu s comme Mesos ou

YARN.

20

Spark : Facile utiliser (1/2)

"

Spark est d velopp en Scala et supporte quatre langages: Scala, Java, Python

(PySpark), R (SparkR).

" Une liste dOperaters pour faciliter la manipulation des donn es au travers des RDDS.

q Map, filter, groupBy, sort, join, leftOuterJoin, rightOuterJoin, reduce, count, reduceByKey,

groupByKey, first, union, cross, sample, cogroup, take, partionBy, pipe, save,&

4

Spark : Facile utiliser (2/2)

Big Data - 2019

2

3

Spark : Architecture

" Spark est capable de

d terminer quand il aura

besoin de s rialiser les

donn es / les r organiser; et

ne le fait que quand c'est

n cessaire.

" On peut galement

explicitement lui demander

de conserver des donn es en

RAM, parce qu'on sait

qu'elles seront n cessaires

entre plusieurs instances

d' criture disque.

Big Data - 2019

2

4

Spark : Architecture - RDD

" Au centre du paradigme employ par Spark, on trouve la notion de RDD, pour Resilient

Distributed Datasets.

Il s'agit de larges hashmaps stock es en m moire et sur lesquelles on peut appliquer des

traitements.

Ils sont:

"

"

q Distribu s.

q Partitionn s (pour permettre plusieurs noeuds de traiter les donn es).

q Redond s (limite le risque de perte de donn es).

q En lecture seule: un traitement appliqu un RDD donne lieu la cr ation d'un nouveau RDD.

" Deux types d'op rations possibles sur les RDDs:

q Une transformation: une op ration qui modifie les donn es d'un RDD. Elle donne lieu la

cr ation d'un nouveau RDD. Les transformations fonctionnent en mode d' valuation lazy:

elles ne sont ex cut es que quand on a v ritablement besoin d'acc der aux donn es. "map"

est un exemple de transformation.

q Une action: elles acc dent aux donn es d'un RDD, et n cessitent donc son valuation

(toutes les transformations ayant donn lieu la cr ation de ce RDD sont ex cut es l'une

apr s l'autre). "saveAsTextFile" (qui permet de sauver le contenu d'un RDD) ou "count"

(qui renvoie le nombre d' l ments dans un RDD) sont des exemples d'actions.

Spark : Architecture - Ex cution

" Les applications Spark sex cutent comme un ensemble de processus ind pendants sur un

cluster, coordonn s par un objet SparkContext du programme principal, appel Driver

Program.

"

Pour sex cuter sur un cluster, le SparkContext se connecte un Cluster Manager, qui peut

tre soit un gestionnaire standalone de Spark, soit YARN ou Mesos, pour lallocation de

ressources aux applictions.

" Une fois connect , Spark lance des executors sur les nSuds du cluster, des processus qui lancent

des traitements et stockent les donn es pour les applications.

"

Il envoie ensuite le code de lapplication (Jar ou ficher python) aux executors. SparkContext

envoie ensuite les Tasks aux executors pour quils les lancent.

Architecture de Spark

Driver : effectue la distribution les donn es et le traitement sur

les noeuds de travail.

SparkContext : objet du programme principal qui coordonne

entre les diff rents processus sur un cluster.

Executor : processus qui lance des traitements et stocke les

donn es pour les applications

27

Resilient Distributed Dataset (RDD)

Un concept au cSur du framework Spark.

Collection d l ments d coupables par Spark et

traitables de mani re distribu e.

Il peut porter tout type de donn e et est stock par

Spark sur diff rentes partitions.

28

Resilient Distributed Dataset

Les RDD supportent deux types dop rations :

Les transformations :

Ne retournent pas de valeur

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.

Exemples de fonctions : map, filter, flatMap,

Advertisement

groupByKey,reduceByKey, aggregateByKey&

29

Resilient Distributed Dataset

Les actions :

Evaluent 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 .

Exemples dactions : reduce, collect, count,

first, take, countByKey et foreach.

30

Resilient Distributed Dataset

Les RDD permettent de r arranger les calculs et doptimiser

le traitement.

Les RDD sont reconstructibles :

ils sont tol rants aux

pannes car un RDD sait comment recr er et recalculer son

ensemble de donn es.

Les RDD sont immuables. Pour obtenir une modification

faut y appliquer une transformation, qui

dun RDD,

retournera un nouveau RDD, loriginal restera inchang .

il

31

Traitement dans Spark

Spark supporte les valuations paresseuses des requ tes

cest- -dire que les transformations ne sex cutent sur le cluster

que si on en a besoin (une action est invoqu e).

Il est possible de demander la persistance dun RDD :

chargement en m moire du RDD pour le r utiliser en cas de

besoin au lieu de refaire la transformation.

32

DataFrames

2011 RDD :

Collection distribu e

Op rateurs fonctionnels

Ne suis aucun sch ma

2013 nouvelle abstraction : DataFrame

Plus structur e

Repr sentation interne plus optimis e que le RDD

Abstraction principale de SparkSQL

33

Dataset

2015 Spark 2 : Dataset

Nouvelle abstraction de donn es plus large que le

DataFrame

Typ : Dataset [ T ]

Avantage : travailler avec des expressions typ es dont on

connait toutes les propri t s

34

Spark : Un framework analytique

BIG DATA - 2019

35

Spark : Avantages

" Performances sup rieures celles de Hadoop pour une large quantit de

probl mes; et presque universellement au moins quivalentes pour

le

reste.

" API simple et bien document e; tr s simple utiliser. Paradigme plus

souple qui permet un d veloppement conceptuellement plus simple.

" Tr s int grable avec d'autres solutions; peut

lire des

tr s facilement

donn es depuis de nombreuses

sources, et propose des couches

d'interconnexion tr s faciles utiliser pour le reste (API d di e Spark

Streaming, Spark SQL).

" APIs d di es pour le traitement de probl mes en machine learning (Spark

MLlib) et graphes (Spark GraphX).

BIG DATA - 2019

36

Spark : Performances

" Fortement d pendantes du probl me mais d'une mani re g n rale

sup rieures Hadoop. Dans le cas de probl mes complexes, effectuant de

sur les m mes

nombreuses op rations sur les donn es et notamment

donn es ant rieures, fortement sup rieures (jusqu' 100x plus rapide).

" M me sans travailler plusieurs fois sur les

m mes donn es ou sans persistance explicite

programme

particuli re,

le paradigme de

coupl aux

parall lis en graphe acyclique

RDDs et leurs propri t s

permet des am liorations notables (~10x)

probl mes d passant

lanc une fois.

de nombreux

le cadre rigide du simple map/shuffle/reduce

Advertisement

pour

BIG DATA - 2019

Spark : Inconv nients

" Spark consomme beaucoup plus de m moire vive que Hadoop, puisqu'il

est susceptible de garder une multitude de RDDs en m moire. Les

serveurs n cessitent ainsi plus de RAM.

"

Il est moins mature que Hadoop.

" Son cluster manager ( Spark Master ) est encore assez immature et

laisse d sirer en terme de d ploiement

/ haute disponibilit /

fonctionnalit s additionnelles du m me type; dans les faits, il est souvent

d ploy via Yarn, et souvent sur un cluster Hadoop existant.

BIG DATA - 2019

Spark : Usage /Manipulation (1/5)

BIG DATA - 2019

39

Spark : Usage /Manipulation (2/5)

BIG DATA - 2019

40

Spark : Usage /Manipulation (3/5)

BIG DATA - 2019

41

Spark : Usage /Manipulation (4/5)

BIG DATA - 2019

42

Spark : Usage /Manipulation (5/5)

La manipulation de lexemple "Word Count" est fournie en "TP Spark"

sous la VM Cloudera o Spark est install et pr t lutilisation.

BIG DATA - 2019

43

Exemples 2 - TP

Construction dun dataframe Spark appel restaurants_df

partir de la table restaurant existante dans Cassandra. Le

sch ma (noms des colonnes) est connu mais le type des

colonnes nest pas connu au sein du dataframe.

val restaurants_df =

spark.read.cassandraFormat("restaurant",

"resto_ny").load()

restaurants_df.printSchema()

restaurants_df.show()

44

Exemples

R alisation dun filtre correspondant au where dans SQL :

val manhattan = restaurants_df.filter("borough =

'MANHATTAN'")

manhattan.show()

45

Exemples

Construction dun Dataset dont les colonnes sont typ es

case class Restaurant(id: Integer, Name: String,

Street:

BuildingNum:

borough:

String,

String,

Integer,

CuisineType: String)

String,

ZipCode:

String,

Phone:

val restaurants_ds= restaurants_df.as

Pour ceci

programmation (ici, Scala) et demander la conversion.

il a fallu d finir une classe dans le langage de

46

Exemples

R alisation du m me filtre sur le dataset :

val r = restaurants_ds.filter(r => r.borough ==

"MANHATTAN")

R alisation dagr gats par arrondissement :

val comptage_par_borough =

restaurants_ds.groupBy("borough").count()

47

Conclusion

RDD : donn es au sch ma tr s flexible, mais beaucoup plus difficile

manipuler.

DataFrame/ Dataset :

Donn es au sch ma tr s contraint offrant un niveau de s curit

lev .

Concepteur : possibilit de r f rencer des champs et de leur

appliquer des op rations standards en fonction de leur type sans

avoir crire une fonction sp cifique pour la moindre op ration

=> Rend le code beaucoup lisible et concis.

Syst me : la connaissance du sch ma facilite les contr les avant

ex cution

48