Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le...

32
20/11/2019 1 Big Data Technologies BigData Stéphane Vialle & Gianluca Quercini I ‐ Technologies d’Hadoop 1. Framework d’Hadoop 2. Principes du Map‐Reduce d’Hadoop 3. Système de fichiers distribué d’Hadoop : HDFS 4. Allocation et gestion de ressources d’Hadoop lors d’un Map‐Reduce I.1 – Framework d’Hadoop

Transcript of Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le...

Page 1: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

1

Big Data

Technologies BigData

Stéphane Vialle  &  Gianluca Quercini

I ‐ Technologies d’Hadoop

1. Framework d’Hadoop2. Principes du Map‐Reduce d’Hadoop3. Système de fichiers distribué d’Hadoop : HDFS4. Allocation et gestion de ressources d’Hadoop lors d’un Map‐Reduce

I.1 – Framework d’Hadoop

Page 2: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

2

Ressource and application manager

Map‐Reduce application (data analysis)

Map‐Reducealgorithmic

Map‐Reduceparadigm & mechanisms

Concepts et pile logicielle

HDFS:  Hadoop Distributed File SystemLinux/

Windowsfile system

DB

Fileimport/export 

Ressource and application manager

Map‐Reduce application (data analysis)

Map‐Reducealgorithmic

Map‐Reduceprogrammingparadigm

Map‐Reduce API

Map‐Reduce comm. mechanism (shuffle & sort)

Map 1

Map 2

Reduce1

Reduce2Map 3

Concepts et pile logicielle

HDFS:  Hadoop Distributed File SystemLinux/

Windowsfile system

DB

Fileimport/export 

Map‐Reduce application (data analysis)

Map‐Reducealgorithmic

Map‐Reduceprogrammingparadigm

Map‐Reduce API

Map‐Reduce comm. mechanism (shuffle & sort)

Map 1

Map 2

Reduce1

Reduce2Map 3

Concepts et pile logicielle

HDFS:  Hadoop Distributed File SystemLinux/

Windowsfile system

DB

Fileimport/export 

Application manager

Fault tolerance mechanism

Ressource manager

Middlewarelayers

Page 3: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

3

Map‐Reduce application (data analysis)

Map‐Reducealgorithmic

Map‐Reduceprogrammingparadigm

Map‐Reduce API

Map‐Reduce comm. mechanism (shuffle & sort)

Map 1

Map 2

Reduce1

Reduce2Map 3

Concepts et pile logicielle

Linux/Windows

file system

DB

Fileimport/export 

Application manager

Fault tolerance mechanism

Ressource manager

Middlewarelayers

HDFS:HadoopDistributedFile System Standard disks & PC

Map‐Reduce application (data analysis)

Map‐Reducealgorithmic

Map‐Reduceprogrammingparadigm

Map‐Reduce API

Map‐Reduce comm. mechanism (shuffle & sort)

Map 1

Map 2

Reduce1

Reduce2Map 3

Concepts et pile logicielle

Linux/Windows

file system

DB

Fileimport/export 

Application manager

Fault tolerance mechanism

Ressource manager

Middlewarelayers

HDFS:HadoopDistributedFile System Standard disks & PC

High level paradigmsfor data analysis

Hive, PIG… 

Othersprogrammingparadigms

Concepts de « localité des données et des traitements »

HPC : • Charger les données en RAM (utiliser assez de nœuds de calcul)• Calculer tout ce qui est possible avec des données localesstockées dans la mémoire cache (calcul par bloc/tuile)

• Eviter les défauts de cache

Big Data façon Hadoop : • Amener les codes de traitements aux données Transformer momentanément les nœuds de stockage 

en nœuds de traitement• Eviter de déplacer des données (très volumineuses)

C’est toujours l’accès aux données qui coute cher, pas le calcul lui‐même (une fois les données dans le cœur de calcul)

Page 4: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

4

I.2 ‐ Principes du Map‐Reduced’Hadoop

Suite de transformations de paires « clé‐valeur »… voir plus loin

Map

Map

Map

Reduce

Reduce

HDFS

HDFS

Shuffle & Sort

Chaîne d’opérations Map‐Reduce

Chaîne d’opérations Map‐ReduceRecordReader

Input data readingfrom HDFS

(customizable)

Input Data

Records (key/values)1

MapperTreatment 1:data filtering& first local 

computations

Records (key/values)2

PartitionerAssociate keys to Reducers

Default version can beoptimized for the 

application.

CombinerTreatment 2: in order to  reduce communications (optional & usually close 

to Reducer code)

Records (key/values)3

ReducerTreatment 3:

local computations on data groupedwith identical keys

Records (key/val)4

Output Format Output result

writting in HDFS (customizable)

Output Data

Shuffle and SortKey‐Value pair 

routage.Predefined comm. and sorting scheme

Records (key/[val])3

keyComparator(k1,k2)groupComparator(k1,k2)Key comparisonfunctions, impactingorder and grouping of key‐value pairssupplied to Reducers.Default functions can beoverloaded to adapt to the application.

Page 5: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

5

Déploiement des tâches 

Hadoop installe des Mappers sur les nœuds où sont les données accédées (de préférence)

Possibilité de limiter le nombre de Mappers actifs simultanément sur un PC en fonction de ses caractéristiques matérielles

Possibilité de limitations spécifiques à chaque nœud

Hadoop crée un Mapper par bloc de fichier à lire (bloc classique : tranche de fichier de 64 Mo/128Mo)

Déploiement des tâches 

Spécifier le nombre de Reducerspour équilibrer la charge de chacun et limiter la RAM nécessaire

I.3 ‐ Système de fichiers distribué d’Hadoop : HDFS

I.3.1 ‐ Distribution et réplication des fichiers sous HDFS

Page 6: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

6

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

NameNodeactive

name node

Mécanismes d’HDFS

name node

SecondaryNameNode

Logs,Metadata update

data node choice

block metadata update

Le NameNode conserve la cartographie du HDFS + les évolutions (les « logs ») Permet de savoir où sont les fichiers

Le secondary NameNode stocke les logs et met à jour la cartographie (qd bcp de logs)  Sur un nœud à part pour pouvoir calculer la mise à jour sans ralentir le système

MapLogs

name node

SecondaryNameNode

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

NameNodeactive

name node

Local file system

Remote file system(for ‘’fault tolerance’’)

HDFS tree & metadatastorage

Mécanismes d’HDFS

Logs,Metadata update

data node choice

block metadata update

Les metadonnées du HDFS sont stockés sur le file system classique, localement.

Un stockage distant permet de renforcer la tolérance aux pannes (sans ses metadonnées, le HDFS est inexploitable)

name node

SecondaryNameNode

data node

DataNode

1 2data node

DataNode

2data node

DataNode

2data node

DataNode

1data node

DataNode

1

2 blocks 1 21 block1 block

NameNodeactive

name node

Local file system

Remote file system(for ‘’fault tolerance’’)

HDFS tree & metadatastorage

Mécanismes d’HDFS

Logs,Metadata update

data node choice

block metadata update

Chaque fichier est découpé en blocs de 64 ou 128 Mo• Distribués sur les différents nœuds

pour le passage à l’échelle en taille, pour la vitesse d’accès

• Répliqués en n exemplaires (recopiés d’un nœud à un autre)pour la tolérance aux pannes (habituellement n = 3).

Page 7: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

7

name node

SecondaryNameNode

data node

DataNode

1 2data node

DataNode

2data node

DataNode

2data node

DataNode

1data node

DataNode

1

NameNodeactive

name node

Local file system

Remote file system(for ‘’fault tolerance’’)

HDFS tree & metadatastorage

Mécanismes d’HDFS

Logs,Metadata update

data node choice

block metadata update

Règles de choix des nœuds :

• Jamais deux réplicats (du même bloc) sur le même nœud

• Des réplicats dans des « raks » différents(grands systèmes d’ensembles de raks)

2 blocks 1 21 block1 block

name node

SecondaryNameNode

data node

DataNode

1 2data node

DataNode

2data node

DataNode

2data node

DataNode

1data node

DataNode

1

NameNodeactive

name node

Local file system

Remote file system(for ‘’fault tolerance’’)

HDFS tree & metadatastorage

Mécanismes d’HDFS

Logs,Metadata update

data node choice

block metadata update

Si un nœud tombe :

• Copie et transfert d’autres réplicats(reconstitution des n réplicats de chaque bloc)

2 blocks 1 21 block1 block

2

• Envoie des mise à jour des nœuds vers les NameNode

Mécanismes d’HDFSPourquoi des blocs de 64 Mo ?

Temps de « seek » : temps de positionnement au début du fichier sur le disque (disque standard, rotatif)

Tseek = 10ms

Bande passante disque std : Bw = 100 Mo/sTread = Q / Bw

On veut : Tseek < 1% Tread⟺ 10.10‐3 s < (1/100).(Q/100) s⟺ 100 (Mo) < Q

Des blocs de 64 Mo ou 128 Mo permettent de masquer les temps de seek

Au‐delà : pas plus de gain, mais moins de distribution des fichiers,moins de vitesse de lecture

Page 8: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

8

data node data node data nodedata node data node

Mécanismes d’HDFS : « haute disponibilité »

name node

SecondaryNameNode

NameNodeactive

name node

DataNode

1 2

DataNode

2

DataNode

2

DataNode

1

DataNode

1

Le NameNode est un SPOF : Single Point Of Failure

Si on perd le NameNode alors le File System d’Hadoop ne marche plus !

SPOF

data node data node data nodedata node data node

Mécanismes d’HDFS : « haute disponibilité »

name node

SecondaryNameNode

NameNodeactive

name node

DataNode

1 2

DataNode

2

DataNode

2

DataNode

1

DataNode

1

NameNodestandby

name node

Si on perd le NameNode alors le File System d’Hadoop ne marche plus !

On duplique le NameNode

data node data node data nodedata node data node

Mécanismes d’HDFS : « haute disponibilité »

name node

SecondaryNameNode

DataNode

1 2

DataNode

2

DataNode

2

DataNode

1

DataNode

1

NameNodeactive

name node

• Le NameNode en standy est passé actif « très rapidement »

On « ne sent plus passer la panne » : Haute Disponibilité

• Il n’y a plus de SPOF

Page 9: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

9

I.3 ‐ Système de fichiers distribué d’Hadoop : HDFS

I.3.2 ‐ Lecture de fichierssous HDFS

DistributedFileSystemobject

1 ‐ open

FSDataInputStreamobject

HDFS client pgm

client JVMclient node

name node

NameNode

2b – createobject

Mécanismes de lecture d’HDFS

0 – Création d’un objet permettant de s’interfacer à HDFS (un stub/proxy d’HDFS)

2 – Demande de localisation du fichier 2a ‐ Le proxy interroge le NameNode : pour savoir quels blocs lire et où les lire 

Le NameNode répond au proxy 

1 – Demande d’ouverture d’un fichier HDFS en lecture (« open »)

2b ‐ Le proxy crée et retourne un objet lecteur spécialisé sur le fichier ciblé

DistributedFileSystemobject

FSDataInputStreamobject

HDFS client pgm

client JVMclient node

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

4 – readblock 1

5 – readblock 2

name node

NameNode

Mécanismes de lecture d’HDFS

3 – Le client exploite le lecteur du fichier

4 – Le lecteur accède au data node du premier bloc et récupère ce bloc

5 – Le lecteur accède au data node du second bloc et récupère ce bloc

6 – Le client referme le fichier en s’adressant au lecteur du fichier

Page 10: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

10

I.3 ‐ Système de fichiers distribué d’Hadoop : HDFS

I.3.3 ‐ Ecriture de fichierssous HDFS

DistributedFileSystemobject

FSDataOutputStreamobject

HDFS client pgm

client JVMclient node

2b – createobject

name node

NameNode

Mécanisme d’écriture d’HDFS

0 – Création d’un objet permettant de s’interfacer à HDFS (un stub/proxy d’HDFS)

2 – Demande de localisation des nœuds d’accueil des futurs blocs du fichier 2a ‐ Le proxy interroge le NameNode : pour savoir où écrire les blocs

Le NameNode répond au proxy 

1 – Demande d’ouverture d’un fichier HDFS en écriture (« create »)

2b ‐ Le proxy crée et retourne un objet écrivain spécialisé sur le fichier ciblé

DistributedFileSystemobject

FSDataOutputStreamobject

HDFS client pgm

client JVMclient node

name node

NameNode

4b – writeblock 1

data node

DataNode

data node

DataNode

data node

DataNode

4c

4d

5c ‐ ack

5b

5a

4a – get node list

Mécanisme d’écriture d’HDFS

3 – Le client exploite l’écrivain du fichier

5 – L’écrivain écrit tous les réplicats du premier bloc (recopie de proche en proche en mode pipeline)

4 – L’écrivain demande au NameNode oùécrire les réplicats du bloc 1

Replicatedstorage ofblock 1

6 – On écrit le second bloc du fichier…

Page 11: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

11

data node

DataNode

DistributedFileSystemobject

FSDataOutputStreamobject

HDFS client pgm

client JVMclient node

name node

NameNode

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

6b – writeblock 2

data node

DataNode

data node

DataNode

data node

DataNode

Replicated storageof block 2

6c

6d

7c ‐ ack

7b

7a

6a – get node list

Mécanisme d’écriture d’HDFS

data node

DataNode

DistributedFileSystemobject

FSDataOutputStreamobject

HDFS client pgm

client JVMclient node

name node

NameNode

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

data node

DataNode

map

Mécanisme d’écriture d’HDFS

data node

DataNode

data node

DataNode

9a ‐ close

8 – Le client referme le fichier HDFS

9 – L’écrivain prévient le proxy qui informe le    NameNode que l’op est terminée (et qu’il peut rouvrir le fichier pour un autre client)

I.4 ‐ Allocation et gestion de ressources d’Hadoop lors 

d’un Map‐Reduce

I.4.1 – Hadoop version 1

Page 12: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

12

Gestion des ressources v1

DataNode

DataNode

JobTrackerClientJob 

object1 ‐ Runjob

NameNode

HFDS services

Hadoop rsrc & job manager

Stub/proxy on all Hadoopservices

The client creates a proxy local object to ensure all communications withHadoop rsrc & job manager, and with HDFS services

JobTrackerClientJob 

object1 ‐ Runjob

DataNode

DataNodeNameNode

HFDS services

4 ‐ Submit job

Store jar, config and data files(not « Big Data »)

3 ‐ Copyjob rsrc

2 – Get a new job Id

6 – Retrieve input splits: find the data nodes to contact

5 – Initialize jobdatastructures

Gestion des ressources v1

The JobTracker asks to HDFS NameNode where are stored the target data: in order to choosethe data nodes that will support Map and Reduce tasks →

Data/Processing Node

JobTrackerClientJob 

object1 ‐ runjob

UnusedDataNode

Data/Processing NodeTaskTracker

Child JVM

Child code

Map task or Reduce task

Data/Processing Node(tasktracker node)

4 ‐ submit job

7 – require to launch a task

9 – launch a JVM & a task

10 – run a taskheartbeat &monitoring

8 – retrievejob rsrc

heartbeat &monitoring

heartbeat &monitoring     

Gestion des ressources v1

NameNode

HFDS services

The JobTracker continues to monitor all the TaskTrackersof all Map‐Reduce jobs.When the number of data nodes and of MR jobs increases it becomes a bottleneck !

Page 13: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

13

I.4 ‐ Allocation et gestion de ressources d’Hadoop lors 

d’un Map‐Reduce

I.4.2 – Hadoop version 2 (YARN) : passage à l’échelle amélioré

ClientJob 

object1 ‐ Runjob

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManager

Gestion des ressources v2 (YARN)

NameNode

HFDS services

RessourceManager

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManager

Stub/proxy on all Hadoopservices

Hadoop rsrcmanager

In this version 2 of Hadoop middleware (for Map‐Reduce), the RessourceManager is no longer a Job manager (just a rsrc manager)

RessourceManagerClientJob 

object1 ‐ Runjob

DataNode

NodeManager

MRAppMaster

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManager5b ‐ launch

Allocate computeresources

5a – startcontainer

4 ‐ Submit job

2 – Get a new job Id

6 – Initialize jobdatastructures

Gestion des ressources v2 (YARN)

3 ‐ Copyjob rsrc

Store jar, config and data files(not « Big Data »)

NameNode

HFDS services

When processing a Map‐Reduce job submission, the RessourceManager chooses a Data Node to launch a Map‐Reduce Application Master that will manage and monitor the set of MR application tasks.

Page 14: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

14

DataNode

NodeManager

Task JVM

YarnChild

Map or Reduce task

DataNode

NodeManager

Task JVM

YarnChild

Map or Reduce task

RessourceManagerClientJob 

object1 ‐ Runjob

DataNode

NodeManager

MRAppMaster

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManager

DataNode

NodeManagerUnused for processing

DataNode

NodeManager

Task JVM

YarnChild

Map or Reduce task

7 – retrieveinput splits

8‐ get ressources(rsrc allocation)

9b ‐ launch

11 ‐ run

Progress & heartbeats

Progress & heartbeats

Gestion des ressources v2 (YARN)

NameNode

HFDS services

Which nodeshost the data ?

Choose nodeshosting data to launch tasks

No more bottleneck for MR application monitoring and control

Exécution spéculativeHadoop lance de nombreuses tâches (map, reduce, …).Certaines peuvent « planter » ou « ralentir ».

Le TaskTracker (MR v1) ou l’ApplicationManager (MR v2) monitorefortement les exécutions des tâches, et détectent ces « ralentissements ».

Hadoop peut faire une exécution spéculative : il lance de nouvelles instances des tâches « en retard », et dès qu’il obtient des résultats d’une tâche, il tue son doublon.

Mais cette démarche a un coût :• en charge de calcul (création fréquentes de tâches redondantes)• en déplacement de données (surtout si on redonde un reducer)On peut débrayer ce comportement (ex : cluster HPC très fiable)

II – Spark Technology

1. DAG of lazy operations2. Spark execution on clusters3. Spark execution on clouds

Page 15: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

15

II.1 – DAG of lazy operations

Spark framework

• RDD• Transformations

& Actions(Map‐Reduce)

• Fault‐Tolerance• …

Spark design started in 2009, with the PhD thesis of Matei Zaharia at Berkeley Univ.Matei Zaharia co‐founded DataBricks in 2013.

Spark application schemeand execution

Transformations are lazy operations: saved and executed further

Actions trigger the execution of the sequence of transformations

A Spark application is a set of jobs to run sequentially or in parallel

A job is a sequence of RDD transformations, ended by an action

RDD

Transformation

RDD

Action

Result

Page 16: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

16

Spark application schemeand execution

The Spark application driver controls the application run

• It creates the Spark context

• It analyses the Spark program

• It schedules the DAG of tasks on the available worker nodes(the Spark Executors) in order to maximize parallelism (and to reduce the execution time)

• It creates a DAG of tasks for each job

• It optimizes the DAG − pipelining narrow transformations− identifying the tasks that can be run in parallel

II.2 ‐ Spark execution on clusters

II.2.1 ‐ Standalone mode: Spark Master as cluster manager 

spark-submit --master spark://node:port … myApp

Standalone mode: Spark Master as cluster manager

Spark Master Cluster Manager

Spark cluster configuration:

Cluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker node

• Add the list of cluster worker nodes in the Spark Master config.

• Specify the maximum amount of memory per Spark Executorspark-submit --executor-memory XX …

• Specify the total amount of CPU cores used to process one Spark application (through all its Spark executors)spark-submit --total-executor-cores YY …

Page 17: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

17

spark-submit --master spark://node:port … myApp

Standalone mode: Spark Master as cluster manager

Spark Master Cluster Manager

Spark cluster configuration:

Cluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker node

• Default config :− (only) 1GB/Spark Executor− Unlimited nb of CPU cores per application execution− The Spark Master creates one mono‐core Executor on all 

Worker nodes to process each job … 

• You can limit the total nb of cores per job

• You can concentrate the cores into few multi‐core Executors

spark-submit --master spark://node:port … myApp

Standalone mode: Spark Master as cluster manager

Spark Master Cluster Manager

Spark cluster configuration:

Cluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker node

• Default config :− (only) 1GB/Spark Executor− Unlimited nb of CPU cores per application execution− The Spark Master creates one mono‐core Executor on all 

Worker nodes to process each job 

• You can limit the total nb of cores per job

• You can concentrate the cores into few multi‐core Executors

− The Spark Master creates one multi‐core Executor on all Worker nodes to process each job (invading all cores!)

spark-submit --master spark://node:port … myApp

Spark Master Cluster Manager

Spark app. Driver• DAG builder• DAG scheduler‐

optimizer• Task scheduler

Client deployment mode:

Interactive control of the application: development mode

Spark Master Cluster Manager

Spark executor

Spark executor

Spark executor

Spark executor

Spark executor

Spark executor

Cluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker node

Standalone mode: Spark Master as cluster manager

Page 18: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

18

Spark app. Driver• DAG builder• DAG scheduler‐optimizer• Task scheduler

Spark executor

Spark executor

Spark executor

Spark executor

Spark executor

Spark Master Cluster Manager

Cluster deployment mode:

Laptop connectioncan be turn off: production mode

spark-submit --master spark://node:port … myApp

Spark Master Cluster Manager

Cluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker nodeCluster worker node

Standalone mode: Spark Master as cluster manager

Spark Master Cluster Manager

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

spark-submit --master spark://node:port … myApp

The Cluster Worker nodes should be the Data nodes, storing initial RDD values or new generated (and saved) RDD

Will improve the global data‐computations locality

When using HDFS: the Hadoop data nodes should bere‐used as worker nodes for Spark Executors

Standalone mode: Spark Master as cluster manager

When using the Spark Master as Cluster Manager:

…there is no way to localize the Spark Executors on the data nodes hosting the right RDD blocks!

Standalone mode: Spark Master as cluster manager

Spark Master Cluster Manager

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

spark-submit --master spark://node:port … myApp

The Cluster Worker nodes should be the Data nodes, storing initial RDD values or new generated (and saved) RDD

Page 19: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

19

spark-submit --master spark://node:port … myApp

Spark Master Cluster Manager

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Spark app. Driver• DAG builder• DAG scheduler‐optimizer• Task scheduler

Spark Master Cluster Manager

HDFSName Node

Spark executor

Spark executor

Spark executor

Spark executor

Spark executor

Clusterdeployment mode:

Standalone mode: Spark Master as cluster manager

spark-submit --master spark://node:port … myApp

Spark Master Cluster Manager

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Strenght and weakness of standalone mode:

• Nothing more to install (included in Spark)• Easy to configure• Can run different jobs concurrently

• Can not share the cluster with non‐Spark applications• Can not launch Executors on data node hosting input data• Limited scheduling mechanism (unique queue)

Standalone mode: Spark Master as cluster manager

II.2 ‐ Spark execution on clusters

II.2.2 ‐ Using YARN cluster manager 

Page 20: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

20

export HADOOP_CONF_DIR = ${HADOOP_HOME}/confspark-submit --master yarn … myApp

Using YARN cluster manager

YARNResourceManager

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Spark cluster configuration:• Add an env. variable defining the path to Hadoop conf directory

• Specify the maximum amount of memory per Spark Executor

• Specify the amount of CPU cores used per Spark executorspark-submit --executor-cores YY …

• Specify the nb of Spark Executors per job: --num-executors

Spark cluster configuration:• By default:

− (only) 1GB/Spark Executor− (only) 1 CPU core per Spark Executor− (only) 2 Spark Executors per job

• Usually better with few large Executors (RAM & nb of cores)…

export HADOOP_CONF_DIR = ${HADOOP_HOME}/confspark-submit --master yarn … myApp

Using YARN cluster manager

YARNResourceManager

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Spark cluster configuration:• Link Spark RDD meta‐data « prefered locations » to HDFS meta‐

data about « localization of the input file blocks »

val sc = new SparkContext(sparkConf,InputFormatInfo.computePreferredLocations(

Seq(new InputFormatInfo(conf, classOf[org.apache.hadoop.mapred.TextInputFormat], hdfspath ))…

Spark Contextconstruction

export HADOOP_CONF_DIR = ${HADOOP_HOME}/confspark-submit --master yarn … myApp

Using YARN cluster manager

YARNResourceManager

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Page 21: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

21

YARNResourceManager

HDFSName Node

export HADOOP_CONF_DIR = ${HADOOP_HOME}/confspark-submit --master yarn … myApp

YARNResourceManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Client deploymentmode:

Spark Driver• DAG builder• DAG scheduler‐

optimizer• Task scheduler

App. MasterExecutor launcher

Using YARN cluster manager

App. Master« Executor » launcher

YARNResourceManager

HDFSName Node

Spark executor

Spark executor

Client deploymentmode:

Spark Driver• DAG builder• DAG scheduler‐

optimizer• Task scheduler

export HADOOP_CONF_DIR = ${HADOOP_HOME}/confspark-submit --master yarn … myApp

YARNResourceManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Using YARN cluster manager

YARNResourceManager

HDFSName Node

Spark executor

Spark executor

Cluster deploymentmode: App. Master / Spark Driver

• DAG builder• DAG scheduler‐optimizer• Task scheduler

Using YARN cluster manager

export HADOOP_CONF_DIR = ${HADOOP_HOME}/confspark-submit --master yarn … myApp

YARNResourceManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Page 22: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

22

YARN vs standalone Spark Master:

• Usually available on HADOOP/HDFS clusters

• Allows to run Spark and other kinds of applications on HDFS(better to share a Hadoop cluster)

• Advanced application scheduling mechanisms(multiple queues, managing priorities…)

Using YARN cluster manager

export HADOOP_CONF_DIR = ${HADOOP_HOME}/confspark-submit --master yarn … myApp

YARNResourceManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

YARN vs standalone Spark Master:• Improvement of the data‐computation locality…but is it critical ?

− Spark reads/writes only input/output RDD from Disk/HDFS− Spark keeps intermediate RDD in‐memory − With cheap disks: disk‐IO time > network time

Better to deploy many Executors on unloaded nodes ?

Using YARN cluster manager

export HADOOP_CONF_DIR = ${HADOOP_HOME}/confspark-submit --master yarn … myApp

YARNResourceManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

II.2 ‐ Spark execution on clusters

II.2.3 ‐ Using MESOS cluster manager 

Page 23: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

23

spark-submit --master mesos://node:port … myApp

Using MESOS cluster manager 

Mesos Master ClusterManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Mesos is a generic cluster manager 

• Supporting to run both:− short term distributed computations− long term services (like web services)

• Compatible with HDFS

• Specify the maximum amount of memory per Spark Executorspark-submit --executor-memory XX …

• Specify the total amount of CPU cores used to process one Spark application (through all its Spark executors)spark-submit --total-executor-cores YY …

• Default config:− create few Executors with max nb of cores like standalone…  − use all available cores to process each job           …in 2019

Using MESOS cluster manager 

spark-submit --master mesos://node:port … myApp

Mesos Master ClusterManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

spark-submit --master mesos://node:port … myApp

Mesos Master ClusterManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

Mesos Master ClusterManager

HDFSName Node

Spark executor

Spark executor

Client deploymentmode:

Spark Driver• DAG builder• DAG scheduler‐

optimizer• Task scheduler

With justMesos:• No Application Master• No Input Data – Executor locality

Using MESOS cluster manager 

Page 24: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

24

Mesos Master ClusterManager

HDFSName Node

Cluster deploymentmode: Spark Driver

• DAG builder• DAG scheduler‐

optimizer• Task scheduler

Using MESOS cluster manager 

spark-submit --master mesos://node:port … myApp

Mesos Master ClusterManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

• Coarse grained mode: number of cores allocated to each Spark Executor are set at launching time, and cannot be changed

• Fine grained mode: number of cores associated to an Executorcan dynamically change, function of the number of concurrent jobs and function of the load of each executor (specificity!)

Better solution/mechanism to support many shell interpretorsBut latency can increase (Spark Streaming lib can be disturbed)

Using MESOS cluster manager 

spark-submit --master mesos://node:port … myApp

Mesos Master ClusterManager Cluster worker node

& Hadoop Data Node

Cluster worker node& Hadoop Data Node

Cluster worker node& Hadoop Data Node

HDFSName Node

II.3 ‐ Spark execution on clouds

II.3.1 ‐ Using Amazon Elastic Compute Cloud

Page 25: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

25

spark-ec2 … -s <#nb of slave nodes> -t <type of slave nodes> launch MyCluster-1

Using Amazon Elastic ComputeCloud « EC2 »

Standalone Spark Master

MyC

luster‐1

Standalone Spark Master

spark-ec2 … -s <#nb of slave nodes> -t <type of slave nodes> launch MyCluster-1

Spark app. Driver• DAG builder• DAG scheduler‐optimizer• Task scheduler

Standalone Spark Master

HDFSName Node

Spark executor

Spark executor

Spark executor

Spark executor

Spark executor

MyC

luster‐1

Using Amazon Elastic ComputeCloud « EC2 »

spark-ec2 … -s <#nb of slave nodes> -t <type of slave nodes> launch MyCluster-2

MyC

luster‐1

Spark app. Driver• DAG builder• DAG scheduler‐optimizer• Task scheduler

Standalone Spark Master

HDFSName Node

Spark executor

Spark executor

Spark executor

Spark executor

Spark executor

Spark Master

HDFSName Node

MyC

luster‐2

Using Amazon Elastic ComputeCloud « EC2 »

Page 26: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

26

MyC

luster‐1

Spark app. Driver• DAG builder• DAG scheduler‐optimizer• Task scheduler

Standalone Spark Master

HDFSName Node

Spark executor

Spark executor

Spark executor

Spark executor

Spark executor

Spark Master

HDFSName Node

MyC

luster‐2

spark-ec2 … -s <#nb of slave nodes> -t <type of slave nodes> launch MyCluster-2

spark-ec2 destroy MyCluster-2

Using Amazon Elastic ComputeCloud « EC2 »

MyC

luster‐1

Spark app. Driver• DAG builder• DAG scheduler‐optimizer• Task scheduler

Standalone Spark Master

HDFSName Node

Spark executor

Spark executor

Spark executor

Spark executor

Spark executor

spark-ec2 … launch MyCluster-1

spark-ec2 destroy MyCluster-1

spark-ec2 get-master MyCluster-1 MasterNodescp … myApp.jar root@MasterNodespark-ec2 … login MyCluster-1spark-submit --master spark://node:port … myApp

Using Amazon Elastic ComputeCloud « EC2 »

MyC

luster‐1

spark-ec2 … launch MyCluster-1

spark-ec2 destroy MyCluster-1

spark-ec2 get-master MyCluster-1 MasterNodescp … myApp.jar root@MasterNodespark-ec2 … login MyCluster-1spark-submit --master spark://node:port … myApp

Standalone Spark Master

HDFSName Node

spark-ec2 stop MyCluster-1

spark-ec2 … start MyCluster-1

Stop billing

Restart billing

Using Amazon Elastic ComputeCloud « EC2 »

Page 27: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

27

Start to learn to deploy HDFS and Spark architectures

Then, learn to deploy these architectecture in a CLOUD

Learn to minimize the cost (€) of a Spark cluster:• Allocate the right number of nodes• Stop when you do not use, and re‐start further

Choose to allocate reliable or preemptible machines:• Reliable machines during all the session (standard)

• Preemptibles machines  (5x less expensive!) require to support to loose some tasks, or to checkpoint…

… or use a ‘’Spark Cluster service’’: ready to use in a CLOUD!

Using Amazon Elastic ComputeCloud « EC2 »

III – Technologies des BdD NoSQL

1. Hbase2. MongoDB

III.1 ‐ Architecture de HBASE (Microsoft & OpenSrc)

81

Page 28: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

28

Archi. HBase au dessus d’Hadoop

BdD orientée colonnes 

200 vente‐2012 1000

100 vente‐2010 100000 vente‐2011 150000 vente‐2014 180000

211 achat‐2016 10000vente‐2010 500000

• Bâtie au dessus d’Hadoop et d’HDFS

• Une ligne est indexée par une clé unique

• Les colonnes sont regroupées en famillesUne famille est stockée dans un même fichier Hfile

• Des options de compression peuvent être associées à une famille de colonnes

• Un versionning est disponible pour chaque colonne

Archi. HBase au dessus d’Hadoop

BdD orientée colonnes 

2 niveaux de gestion de la distribution des données :

• Sharding des tables de données en Hfiles fait par des Serveurs de Région de Hbase (1 par nœud)

• Gestion/distribution/réplication des fichiers Hfiles fait par HDFS d’Hadoop

Sharding progressif d’une table :1. Au début une table est contenue dans une région (un nœud)2. Quand elle grossit, une région est scindée en 2 sous‐régions 

sur le même serveur de région (le même nœud)3. Séparation signalée au maître (le Hmaster)4. Peut demander la migration d’une sous‐région sur un autre 

serveur de région

Archi. HBase au dessus d’Hadoop

Monitoring & Heartbeat

One instance is pointed out by the maintenance service and become the the active server.

HMaster server

HadoopData Node

RegionServer

HadoopData Node

RegionServer

Active HMaster server

HadoopData Node

RegionServer

HadoopData Node

RegionServer HadoopData Node

RegionServer

HadoopData Node

RegionServer

Centralized maintenance service on replicated distributed servers

HadoopName Node server

HadoopZooKeeper Server

HadoopZooKeeper Server

HadoopZooKeeper Server

HadoopZooKeeper Server

ReplicatedDbB server

Several severs to spread the load& insure fault tolerance

Monitoring & Heartbeat

Data management on each node(for sharding)

Control

Page 29: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

29

III.2 ‐ Architecture et mapReducede MongoDB

85

Organisation MongoDB

Un serveur × des bases × des collections

L’équivalent des tables/relations en BdD SQL

Déploiement local de MongoDB

mongod

mongo

1 PC

mongod ‐‐dbpath C:\data0 ‐‐port 20000

mongod ‐‐dbpath C:\data0 

mongo

mongo ‐‐port 20000

Déploiement sur UN PC, non shardé, non répliqué

Interface native en ligne de 

commande

show dbsuse mabaseshow collections…

Page 30: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

30

Déploiement local de MongoDB

mongod ‐‐dbpath C:\data0 

mongo

Déploiement sur UN PC, non shardé, non répliqué

show dbsuse mabaseshow collections…

mongod

mongo1 PC

mongod ‐‐dbpath C:\data ‐‐port 20000

mongo ‐‐port 20000

Client avec Interface native en ligne de commande

Archi. de principe de MongoDB

Au début : Un service  Un noeud

mongod

mongod ‐‐configsvr

mongosmongo

Python + pymongo

Déploiement de MongoDB

1 nœud 

plusieurs réplicatset services

(mais différents)

mongo

Page 31: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

31

mapReduce de MongoDB (1) 

91

MongoDB possède son propre « Map‐Reduce » :

• Ses propres règles de fonctionnement (un peu différentes d’Hadoop)

• Ses propres règles de déploiement des tâches 

• Et son propre middleware sous‐jacent (il n’est pas bâti au dessus d’Hadoop)

• Fonctionne sur des bases distribuées (sharded)

Principes du mapReduce de MongoDB :

• Une query pour pré‐filtrer la collection traitée

• Une fonction map(), en Java Script et qui accède à la base

• Une fonction reduce(), en Java Script et qui ne doit PAS accéder à la base (seulement aux résultats du map()),  qui doit être commutative, associative et idempotente (!!)

• Une fonction finalize(), en Java Script et qui ne doit pas accéder à la base

• La possibilité de définir un ensemble de variables globales aux 3 fonctions map(), reduce() et finalize()

mapReduce de MongoDB (2) 

92

Principes du mapReduce de MongoDB :

• map() fonctionne comme en Hadoop, mais sur une seule collection

• pour éviter d’implanter un filtrage en JS, une query exprimée en Mongo shell est applicable en amont (plus pratique et plus rapide)

• reduce() est plus contraint qu’en Hadoop car MongoDB applique reduce() sur des < key , [val] > de sortie de map(), et sur des sorties précédentes de reduce() : • le format de sortie de reduce() doit être celui de sortie de map()• La fonction reduce() doit être commutative, associative et indempotente

• finalize() permet de modifier la sortie finale de reduce() sans contrainte

query()

query()

query()

query()

map()

map()

map()

map()

Shuffle& Sort reduce()

reduce()

finalize()

finalize()

input data input data < key, val > < key, [val] > < key, val >

Identical < key, val > scheme

output data

mapReduce de MongoDB (3) 

93

Principes du mapReduce de MongoDB :

query()

query()

query()

query()

map()

map()

map()

map()

Shuffle& Sort reduce()

reduce()

finalize()

finalize()

input data input data < key, val > < key, [val] > < key, val >

Identical < key, val > scheme

output data

• Pas de Combiner• Pas d’optimisation possible du Shuffle & Sort

Les contraintes sur la fonction reduce() : • évitent les débordements mémoire, en traitant chaque paire < clé, liste de val > 

en plusieurs passes si la liste de valeurs est « grande »• mais…limitent fortement les algorithmes possibles en une seule opération 

mapReduce.

Page 32: Big Data Technologies BigData - CentraleSupélec Metz · Big Data façon Hadoop : ... Le NameNodeconserve la cartographie du HDFS + les évolutions (les «logs») Permet de savoir

20/11/2019

32

Technologies BigData