2. Pourquoi une telle idée?
C‘est un pattern - peu répandu- mais cité dans la
littérature
Hadoop the Definitive guide
Highly Scalable Blog
Les grilles de calculs manipulent également beaucoup
de données
Pour accéder aux données nécessaires au calcul
Pour agréger les résultats des différents noeuds
Hadoop est efficace pour paralléliser les traitements et
offre simultanément des outils pour analyser d’énormes
quantités de données
@OCTO 2011 2
5. Oui mais encore….
C’est moins performant qu’une grille de calcul…
….sauf dans certains cas particuliers
Objectifs de la présentation
Vous indiquez lesquels
Vous donner quelques chiffres
Vous permettre d’argument négativement si quelqu’un vous propose
une idée similaire
@OCTO 2011 5
6. Agenda
Le cas d’étude : la VAR
Le code Hadoop et GridGain de ce
POC
Les mesures pour comparer
Les résultats
Les optimisations
Explications
@OCTO 2011 6
7. La Value At Risk
VAR : une mesure de la perte maximale possible, durant une
période de temps donnée avec une probabilité maximale fixée
75 €
10% de (mal)chance
D’avoir plus de 25€ de perte
Prix d’achat
@OCTO 2011 7
8. Simuler pour calculer la VAR de produits complexes
Simulation de prix
Lorsque l’historique n’est pas
disponible
• On simule le prix des produits
simples (actions, taux
d’intérêt) pour lesquels on a
un historique
• On utilise le modèle de Black
and Sholes pour calculer le
prix actuel de l’action
Le calcul de Monte-Carlo
Pourquoi ça marche ?
• Un calcul précis à partir de
tirage aléatoire !
• Basé mathématiquement sur
la loi des grands nombres
Hello World : le calcul de Pi
@OCTO 2011 8
10. Le match : Gridgain versus Hadoop
GridGain Hadoop
Conçu comme une pure grille Conçu comme un framework
de calcul de calcul distribué, scalable et
Basée sur le pattern fiable
Map/Reduce Basée sur le pattern
Open Source Map/Reduce
Open Source
Les règles du jeu
Même noyau de calcul
Exécuté sur la même « grille »
Un à 2 portables (DEL Latitude E6510 avec un code i7 quad core
avec 4 GB de RAM)
Comparaison sur un cas d’utilisation nécessitant d’utiliser le disque
@OCTO 2011 10
11. Le moteur de calcul
Variable 1E3 à 1E9
Potentiellement
~10 000
opérations +,-,*,/
Optimisation
@OCTO 2011 11
16. Un cas d’utilisation à l’avantage d’Hadoop
Objectifs
Réaliser le calcul de façon parallèle
Traiter ensuite les résultats dans la grille de façon
colocalisée
Cas d’utilisation
Calcul de la VAR comme précédemment
Collecte des résultats de calcul intermédiaires
Analyse avec Hadoop pour expliquer la VAR
Implémentations
GridGain calcule puis écrit ses données dans un fichier
Hadoop calcule de façon standard dans HDFS
@OCTO 2011 16
17. Exemple d’analyse explicative avec Hive
INSERT OVERWRITE LOCAL
DIRECTORY "HiveOutput" ROW
FORMAT DELIMITED FIELDS
TERMINATED BY 't' select
cp.s0, cp.price from cp
order by cp.price;'
Hello World : on
retrouve les formules de
Black-and-Sholes…
@OCTO 2011 17
18. Résultat sur GridGain hors du cas d’analyse
Les données ne sont pas stockées pour analyse
1 DELL Latitude E6510 avec un core i67 quad core et 4 GB de RAM., 4 threads simultanés
@OCTO 2011 18
19. « combine » rejetée pour les besoins d’analyse
Un seul reducer sur Gridgain
C’est un goulet d’étranglement
Le calcul de la VAR permet de ne pas envoyer toutes les
données
Combine : ne renvoyer de chaque nœud que 10% du volume total
Mais on ne sait plus expliquer
Quelques résultats
Temps standard
Temps optim combine
@OCTO 2011 2 machines et 6 processus 19
20. Conservation des paramètres + résultats pour analyse
1 machine physique avec 4 coeurs sur mon laptop, un DELL Latitude E6510 avec un core i67 quad core et 4 GB de RAM.
@OCTO 2011 20
21. GridGain : 1 s., avec données 40 s., Hadoop >= 40 s.
1 machine virtuelle avec 2 GB de RAM et 4 coeurs sur mon laptop, un DELL Latitude E6510 avec un core i67 quad core et 4 GB de RAM.
@OCTO 2011 21
22. Algorithme sur Hadoop (1/2)
Extraction de la VAR La clé intermédiaire
avec l’aide du tri par
scenario id;percentile size;call price
clé
Utilisation de la
fonction de tri des clés
Donnée en sortie
Données triées par
scénario puis par prix 1;10;0.513775910851316 ( "252 84.31301373924966 120.0 0.05 0.2
croissant
0.513775910851316", "252 103.39569385168355 120.0 0.05 0.2
4.181165705822988", "252 123.11293496630553 120.0 0.05 0.2
14.414516512987014")
Plusieurs tirages
peuvent donner le
même prix
@OCTO 2011 22
24. Algorithme sur Hadoop (1/2)
La clé intermédiaire
Extraction de la VAR par le
Reducer scenario id;percentile size;call price
Donnée en entrée du reducer
Parallélisation : un 1;10;0.513775910851316 ( "252
0.513775910851316", "252
4.181165705822988", "252
14.414516512987014")
84.31301373924966 120.0
103.39569385168355 120.0
123.11293496630553 120.0
0.05
0.05
0.05
0.2
0.2
0.2
reducer par simulation
Utilisation d’un partitionner
par identifiant de simulation
Utilisation d’un
comparateur par identifiant
de simulation ET prix de
l’option
Le reducer lit la taille du
percentile et extrait la
Nième valeur par ordre
croissant
@OCTO 2011 24
26. Optimiser Hadoop : optimiser les accès disques
Optimisation de paramètres
Plus de mémoire
(mapred.child.java.opts)
#core-site.xml
Traiter des lots plus importants io.file.buffer.size=131072
(io.file.buffer.size,io.sort.mb, io. #hdfs-site.xml
dfs.block.size=134217728
sort.factor,) #mapred-site.xmlmapred.child.java.opts=-
Lire et écrire des blocs plus Xmx384m
io.sort.mb=250
importants sur HDFS io.sort.factor=100
(dfs.block.size)
Optimisations mineures
Comparer sans désérialiser :
1,19x plus rapide
@OCTO 2011 26
27. Hadoop dépasse GridGain sur les hauts volumes
1 machine virtuelle avec 2 GB de RAM et 4 coeurs sur mon laptop, un DELL Latitude E6510 avec un core i67 quad core et 4 GB de RAM.
@OCTO 2011 27
29. Conclusion : fonctionnalités Hadoop / GridGain
Hadoop GridGain
Designed to large DataSets Yes (distributed FS) Not included
Nb. Of reducers N 1
map(k, v, collector<k, v> output) r GridJobAdapter ( v reduce() )
Programming model map(key, value, collector<k, v> output) r Reduce(List<GridJobResult>)
reduce(k, v, collector<k, v> output)
Between Map and Reduce Sort NA
Combine
Partition
Serialization Custom Java.serialisation
Interface Yes (Web) Partly (JMX)
Programming Model
Locality Enforced Possible
Un critère de choix principal
Si cela tient en mémoire => GridGain
Sinon => Hadoop et optimiser les accès disques
@OCTO 2011 29