Introduction à MESOS

Introduction à MESOS

Apache Mesos est un projet open source de gestion de clusters pensée 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. Cette 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 qu’elle type d’application (bash, Query SQL, job Hadoop…).
  • Zookeeper : permet de coordonner les masters nodes

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ée 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 :

  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 strategie de placement, elle offre toute 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 taches.

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 ou 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 choisi, 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 support 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.

By | 2017-11-23T10:16:31+00:00 November 15th, 2017|Open Source Summit Europe 2017|0 Comments

About the Author:

Leave A Comment

Time limit is exhausted. Please reload the CAPTCHA.