Introduction à MESOS

Introduction à MESOS

Vous appréciez notre travail......nous recrutons !

Ne ratez pas nos articles sur l'open source, le big data et les systèmes distribués, fréquence faible d’un email tous les deux mois.

Apache Mesos est un projet Open Source de gestion de clusters pensé pour mettre en place et optimiser des systèmes distribués. Mesos permet la gestion et le partage des ressources de manière fine et dynamique entre différents nœuds et pour diverses applications. Cet article couvre l’architecture de Mesos, ses principes fondamentaux ainsi que son support des GPUs NVIDIA.

Architecture de Mesos

Mesos est constitué de plusieurs éléments :

  • Master daemon : s’exécute sur les noeuds maîtres (master nodes) et pilote les “slave daemons”.
  • Slave daemon : s’exécute sur les noeuds de travail (slave nodes) et permet de lancer les tasks.
  • Framework : plus connu sous le nom “Mesos”, il est composé :
    • d’un scheduler qui demande au master les ressources disponibles
    • d’un ou plusieurs exécuteurs qui lancent les applications sur les noeuds de travail.
  • Offer : liste les ressources disponibles “CPU and memory”.
  • Task : s’exécutent sur les noeuds esclaves, il peut s’agir de n’importe quel type d’application (bash, Query SQL, job Hadoop…).
  • Zookeeper : permet de coordonner les masters nodes

Architecture de mesos

Haute disponibilité

Afin d’éviter un SPOF (Single Point of Failure), il faut utiliser plusieurs masters, un master maître (leader) et des masters de backup. Zookeeper réplique le master en N nœud pour former un quorum Zookeeper. C’est lui qui coordonne l’élection du master maître. Au minimum 3 masters sont nécessaires pour la haute disponibilité.

Marathon

Marathon est un orchestrateur de containers pour Mesos qui permet de lancer des applications. Il est équipé d’une API REST pour démarrer et stopper les applications.

Chronos

Chronos est un framework pour Mesos développé par Airbnb pour remplacer les crontab standard. C’est un scheduler complet, distribué, tolérant aux pannes qui facilite l’orchestration des tâches. Chronos est doté d’une API REST permettant de créer des tâches de planification depuis une interface web.

Principe de fonctionnement

Ce schéma nous explique comment une tâche est lancée et orchestrée :

Exemple de resources

  1. L’agent 1 informe le master maître des ressources disponibles sur le noeud esclave auquel il est associé. Le master peut alors éditer une stratégie de placement, elle offre toutes les ressources disponibles au framework 1.
  2. Le master informe le framework 1 des ressources disponibles pour l’agent 1.
  3. L’ orchestrateur répond au master “je vais exécuter deux tâches sur l’agent 1” en fonction des ressources disponibles.
  4. Le master envoi les deux tâches à l’agent qui va allouer les ressources aux deux nouvelles tâches.

Containerizer

Containerizer est un composant Mesos qui permet de lancer des conteneurs, il est responsable de l’isolement et de la gestion des ressources des conteneurs.

Création et lancement d’un containerizer :

  • L’agent crée un containerizer avec l’option --containerizer
  • Pour exécuter un containerizer, il faut préciser le type d’exécuteur (mesos, docker, composing) sinon il utilisera celui par défaut. Il est possible de connaître l’exécuteur par défaut grâce à la commande TaskInfo
    • mesos-executor —> exécuteur par défaut
    • mesos-docker-executor —> exécuteur Docker

Types de conteneurs :

Mesos supporte différents types de conteneurs :

  • Composing : implantation de docker-compose
  • Docker containerizer : gère les containers utilisant le moteur Docker-engine.
  • Mesos containerizer sont les conteneurs natifs de Mesos

GPUs NVIDIA et Mesos

Utiliser le GPU avec Mesos n’est pas d’une très grande difficulté. Il faut au préalable configurer les agents afin qu’ils prennent en compte les GPUs aux moments où ils informent le master des ressources disponibles. Il faut bien évidemment configurer les masters afin qu’ils puissent eux aussi informer les frameworks des ressources disponibles offer.

Le lancement des tâches s’exécute de la même manière en rajoutant un type de ressource GPU. Cependant, contrairement aux processeurs, à la mémoire et aux disques, seuls des nombres entiers de GPUs peuvent être sélectionnés. Si une quantité fractionnaire est choisie, le lancement de la tâche entraînera une erreur de type TASK_ERROR.

Pour le moment, seul les containerizer Mesos sont capables de lancer des tâches avec les GPUs Nvidia. Normalement ceci n’amène pas de limitations car Mesos containerizer supporte nativement les images Docker.

De plus, Mesos intègre le principe de fonctionnement de l’image ”nvidia-docker” exposant le CUDA Toolkit aux développeurs et Data Scientists. Ceci permet de monter directement les pilotes et les outils nécessaires aux GPUs dans le container. On peut donc construire localement son container et de le déployer facilement avec Mesos.

Conclusion

Mesos est une solution qui permet aux entreprises de déployer et d’administrer des conteneurs Docker, tout en partagent les ressources disponibles de leurs infrastructures. De plus, grâce aux containerizer Mesos, nous pouvons réaliser du deep learning de façon distribuée ou de partager les ressources GPU entre plusieurs utilisateurs.

Partagez cet article

Canada - Maroc - France

Nous sommes une équipe passionnée par l'Open Source, le Big Data et les technologies associées telles que le Cloud, le Data Engineering, la Data Science le DevOps…

Nous fournissons à nos clients un savoir faire reconnu sur la manière d'utiliser les technologies pour convertir leurs cas d'usage en projets exploités en production, sur la façon de réduire les coûts et d'accélérer les livraisons de nouvelles fonctionnalités.

Si vous appréciez la qualité de nos publications, nous vous invitons à nous contacter en vue de coopérer ensemble.

Support Ukrain