Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
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
20/11/2019
2
I.1 – Framework d’Hadoop
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
20/11/2019
3
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
20/11/2019
4
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
20/11/2019
5
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)
I.2 ‐ Principes du Map‐Reduced’Hadoop
20/11/2019
6
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.
20/11/2019
7
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
20/11/2019
8
I.3 ‐ Système de fichiers distribué d’Hadoop : HDFS
I.3.1 ‐ Distribution et réplication des fichiers sous HDFS
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
20/11/2019
9
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).
20/11/2019
10
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
20/11/2019
11
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
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
20/11/2019
12
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
20/11/2019
13
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é
20/11/2019
14
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
I.3 ‐ Système de fichiers distribué d’Hadoop : HDFS
I.3.3 ‐ Ecriture de fichierssous HDFS
20/11/2019
15
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…
20/11/2019
16
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)
20/11/2019
17
I.4 ‐ Allocation et gestion de ressources d’Hadoop lors
d’un Map‐Reduce
I.4.1 – Hadoop version 1
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
20/11/2019
18
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 !
20/11/2019
19
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)
20/11/2019
20
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.
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
20/11/2019
21
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
20/11/2019
22
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.
20/11/2019
23
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
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
20/11/2019
24
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 …
20/11/2019
25
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!)
20/11/2019
26
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
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
20/11/2019
27
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
20/11/2019
28
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
20/11/2019
29
II.2 ‐ Spark execution on clusters
II.2.2 ‐ Using YARN cluster manager
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
20/11/2019
30
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
20/11/2019
31
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
20/11/2019
32
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
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
20/11/2019
33
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
20/11/2019
34
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
20/11/2019
35
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
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
20/11/2019
36
• 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
20/11/2019
37
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 »
20/11/2019
38
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 »
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 »
20/11/2019
39
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 »
20/11/2019
40
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
20/11/2019
41
III.1 ‐ Architecture de HBASE (Microsoft & OpenSrc)
81
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
20/11/2019
42
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
20/11/2019
43
III.2 ‐ Architecture et mapReducede MongoDB
85
Organisation MongoDB
Un serveur × des bases × des collections
L’équivalent des tables/relations en BdD SQL
20/11/2019
44
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…
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
20/11/2019
45
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
20/11/2019
46
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
20/11/2019
47
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.
Technologies BigData