pic
Dans un précédent post, nous avions vu les grands concepts d’Hadoop (cf. http://www.opensides.fr/2011/03/10/hadoop-en-moins-de-5-minutes).  Aujourd'hui nous allons consacrer 5 nouvelles minutes avec Hadoop pour passer à la pratique. Les objectifs: Monter un environnement opérationnel en moins de 2 minutes Tour d'horizon de Cloudera en 1 minute Tester quelques commandes HDFS en 1 minute Tester un Map Reduce en 1 minute Monter un environnement opérationnel en 2 minutes 30 secondes pour parler de Cloudera Apache distribue une version packagée de l'écosystème complet Had...
pic
Dans ce tutorial, nous allons découvrir Hadoop au travers de son système de fichiers distribués et son mécanisme de Map/Reduce. Objectifs Comprendre les grands concepts de Hadoop Comprendre le HDFS et le mécanisme de Map/Reduce 2 minutes 30 pour comprendre les grands concepts Hadoop est un projet Open Source écrit en java, distribué par la fondation Apache. Ce framework est adapté dans le stockage et le traitement par lots de très grandes quantités de données (à partir du pétaoctet). Il a été mis en avant par des grands noms du web comme Yahoo! ou Facebook. Son sys...
pic
Dans cet article nous allons faire la connaissance rapide des serveurs web asynchrones. Le but de ce post est de vous faire découvrir cette nouvelle génération de serveur en montrant comment installer et configurer de façon basique celui qui me semble le plus aboutit et le plus performant. Nous verrons plus tard tirer profit de ce type d'architecture pour servir de hautes volumétries. Quelques rappels Un serveur http a pour vocation de servir du contenu en fonction des requêtes clientes. Ce contenu est distribué via le protocole http et peut être statique (images, css, javascript, â€...
pic
Tout le monde connaît Memcached ? Non ? Memcached est un cache Open Source distribué et non répliqué. Cela veut dire que que nous pouvons utiliser plusieurs instances de Memcached mais que chaque instance est autonome. Si l'une d'elle tombe, ses données seront donc perdues (pas de réplication entre instance). Pour aller plus loin, je vous conseille le wiki de Memcached: http://memcached.org/ Nous allons voir maintenant comment l'installer sur un unix: Installation de libEvent (une dépendance de Memcached) Vérifier que libEvent ne soit pas déja installé en tapant la ...
pic
Dans cet article nous allons voir comment apporter très facilement une solution de haute disponibilité à une application avec HAProxy. Quelques définitions Haute disponibilité (cf. wikipedia) La haute disponibilité est un terme souvent utilisé en informatique, à propos d'architecture de système ou d'un service pour désigner le fait que cette architecture ou ce service a un taux de disponibilité convenable. La disponibilité est aujourd'hui un enjeu important des infrastructures informatiques. On estime aujourd'hui que la non-disponibilité d'un service informatique peut avoi...
mar

20

La Java Virtual Machine (abrégé JVM, en français machine virtuelle Java), bien connu des développeurs Java, permet d’interpréter et d’exécuter le bytecode. L’intérêt de la JVM est de permettre la portabilité des langages qu’elle supporte, c’est à dire qu’elle permet leur fonctionnement sur n’importe quelle plateforme.

Comment elle fonctionne précisément ?

Les différentes zones mémoires

Voici l’aperçu d’un JVM (HotSpot de Sun):

On peut constater que la JVM est composées de différentes zones. Celle-ci peuvent se regrouper en 2 grandes catégorie: la PERM et la HEAP:



PERM

Au chargement de l’application, l’ensemble des classes (.class) sont chargées dans cet espace mémoire. La JVM utilisera ensuite les classes chargées dans cet espace pour créer les instances leurs instances dans la HEAP.

HEAP

La HEAP est composée de 2 générations d’objets:

1. YOUNG GENERATION: Cette catégorie représente les nouveaux objets, elle se s’organise en 3 zones:

  • TO: cette zone accueille les objets déplacés de la FROM. Lorsqu’un GC  a lieu et que cette zone est pleine, les objets en vie sont déplacés dans la zone OLD.
  • FROM: cette zone accueille les objets déplacés de la EDEN. Lorsqu’un GC a lieu et que cette zone est pleine, les objets en vie sont déplacés dans la zone TO.
  • EDEN: les nouveaux objets sont créés dans cette zone. Lorsque celle-ci atteint sa taille maximum, un premier Garbage Collector (GC) (minor GC) déplace les objets en vie (liés à d’autre objets) dans la zone FROM.

2. OLD GENERATION: Cette catégorie accueille les objets toujours en vie après les garbage successifs.

Fonctionnement du Garbage Collector

La JVM est composée de différentes zone mémoires et son fonctionnement peut s’apparenter à un système de vases communicants. Les objets, créés une première zone, sont déplacés au fur et à mesure dans les zone suivantes lorsque une des zone atteint son seuil maximum. Ce système est appelé le Garbage Collector. On peut distinguer 2 types de garbages collector le majeur et mineur.

Minor garbage collector

Quand un nouvel objet est alloué sur le tas, la JVM le créee dans la zone EDEN. Lorsque cet espace atteint sa taille maximum, la JVM lance un Garbage Collector appelé minor collection. Cette opération consiste à parcourir tous les objets de l’EDEN et les flager selon 2 critères:

Objets vivants (live objects): les objets vivants sont ceux ayant des références vers d’autres objets.

Objets orphelins (orpheans): les objets orphelins (ceux n’ayant aucune référence).

Le minor garbage collector, supprime alors les orphelins et déplace les objets en vie de la zone Eden vers la zone From.

Cette opération est répétée à chaque fois que la zone Eden est pleine. Si la zone From est pleine, les objets sont  déplacés vers la zone To.

L’avantage majeur de cet algorithme réside dans sa vitesse d’exécution ( de 1/100 à 1/10 de seconde) car il n’y a pas de libération de la mémoire à proprement parler. En pratique la JVM change juste un pointeur sur les objets en vie. Après une minor collection, l’EDEN et un survivor space sont considérés comme libres. Le travail de copie est pour sa part favorisé par une caractéristique des JVM actuelles qui implique que l’ensemble du HEAP ne forme qu’un seul segment continu de mémoire. Au fil des minor collections, les objets restés en vie passent d’un survivor space à l’autre.

Major garbage collector (Full GC)

Nous avons vu plus haut que les minor garbage collections, réorganisait l’espaces mémoire de la YOUNG GENERATION qui se remplie au fur et à mesure. Lorsque celle-ci sature, la JVM a besoin de libérer de la mémoire. Elle va alors invoquer un major garbage collector appelé Full GC. Cette opération est très coûteuse, nous allons voir pourquoi.

La JVM va stopper l’ensemble des threads courant pour faire l’analyse complète de la mémoire. Elle détermine les objects à supprimé (orpheans) et ceux qui doivent subsister. Elle opère ensuite une recopie de ces objets de la zone Young à la zone Old (ou tenured).

Cette opération est appelée un « stop the word collection » pour son besoin de tout arrêter. Elle est très coûteuse (jusqu’à plusieurs secondes) également en processeur car pour faire ces opération de coup de balai (suppression/copie). ON comprends qu’il faut essayer de la minimiser au maximum..

Nous verrons dans un prochaine article comment optimiser la JVM et (surtout) notre code pour éviter ces recopie couteuses.

Pour obtenir des performances idéales, il est préférable de configurer la JVM pour éviter des copies inutiles du young space au tenured.

10 Responses

You can follow any responses to this entry through the RSS 2.0 feed.

You can leave a response, or trackback from your own site.

  1. Richelle dit :

    hello…

    really good article. Ready to hear more next week,my blog http://www.zimbio.com/Wedding+Invitations/articles/4ErXz6GdreH/Adressing+Wedding+Invitations+Envelopes Many Thanks….

  2. Eugenie dit :

    really good article…

    I have spent a bit of time going through your posts, more than I should have but I must say, its worth it! http://night071.bloging.ro/186063/muscle_groups_by_simply.html many Thanks….

  3. Kenzing dit :

    hello…

    Hi there thanks for the quality post! http://oprah11.wordpress.com/ ,i’d a good read.appreciate your article,My problem has been resolved….

  4. Khantelle dit :

    very helpful…

    I preferred to thank you for this good article. http://nxysm.blogcentral.is/ I by all odds liked every little bit of it…

  5. Sterker dit :

    quality post…

    I have spent a bit of time going through your posts! http://dawna.blog.com/2011/06/17/mission-65-charity-celebration-pictures/ ,i had a good read….

  6. Benzing dit :

    Greate…

    It’s such a great site! http://thomaswrpearce.over-blog.com/article-healthy-effah-aims-for-100-metre-title-77729609.html Great post, I just bookmarked it on Digg….

  7. Xehmer dit :

    Great One…

    I must say, its worth it! My link!http://lip071.socialgo.com/my_profile/blog-view/blog_11.htm ,thanks haha…

  8. Hehmer dit :

    Great One…

    I must say, its worth it! My link, http://blog.sandiegotown.com/constance,thanks haha…

Leave a Reply