• Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,318
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
16
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Retour d’expérience Hadoop MapReduce comme grille de calcul Marc Bojoly, architecte senior OCTO Technology, mbojoly@octo.com© OCTO 2011
  • 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
  • 3. ConclusionEn un mot….. …c’est moins performant qu’une grille de calcul@OCTO 2011 3
  • 4. Happy hour !@OCTO 2011 4
  • 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
  • 9. Un calcul intensif…adapté au Map/Reduce Map Reduce Regroupe tous les prix et Simulation identifie les 9*33%=2 plus Calcule les prix correspondants faibles 3 prix sont retournés par Identifie le plus haut parmi ces 2Paramètres chaque noeud d’entrée : il s’agit de la VAR à 77% 0 1 VAR à 77% 2 Librairie© OCTO Technology 2010 9
  • 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
  • 12. Aperçu de Gridgain Split(…) Map(…) Algorithme @OCTO 2011 12
  • 13. Aperçu de GridGain Reduce@OCTO 2011 13
  • 14. Aperçu de Hadoop Split Map N tirages par process Adapter pour ComputeVar()@OCTO 2011 14
  • 15. Aperçu de Hadoop Reduce@OCTO 2011 15
  • 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 HiveINSERT OVERWRITE LOCALDIRECTORY "HiveOutput" ROWFORMAT DELIMITED FIELDSTERMINATED BY t selectcp.s0, cp.price from cporder 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 analyse1 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
  • 23. Hadoop : Implémentation 1 Job Hadoop Map : compute Reduce: idempotent1;10;0.513775910851316 ( "252 84.31301373924966 120.0 0.05 0.2 Job Hive 0.513775910851316", "252 103.39569385168355 120.0 0.05 0.2 4.181165705822988", "252 14.414516512987014") 123.11293496630553 120.0 0.05 0.2 Analyse des données Client : lecture du fichier trié par prix Extraction du percentile @OCTO 2011 23
  • 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
  • 25. Hadoop : Implémentation 2 Job Hadoop Map : compute Reduce: idempotent FirstPartitionner1;10;0.513775910851316 ( "252 84.31301373924966 120.0 0.05 0.2 0.513775910851316", "252 103.39569385168355 120.0 0.05 0.2 4.181165705822988", "252 123.11293496630553 120.0 0.05 0.2 14.414516512987014") Job Hive 1;11;0.513775910851316 ( "252 84.31301373924966 120.0 0.05 0.2 0.513775910851316", "252 4.181165705822988", "252 103.39569385168355 120.0 123.11293496630553 120.0 0.05 0.05 0.2 0.2 Analyse des données 14.414516512987014") Job Hadoop Map : 0 N Reducers: extraction du percentile @OCTO 2011 25
  • 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 volumes1 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
  • 28. Conclusion : des comparaisons… parfois musclée@OCTO 2011 28
  • 29. Conclusion : fonctionnalités Hadoop / GridGain Hadoop GridGainDesigned to large DataSets Yes (distributed FS) Not includedNb. 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 PartitionSerialization Custom Java.serialisationInterface Yes (Web) Partly (JMX)Programming ModelLocality 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
  • 30. Questions ?@OCTO 2011 30