VT2020-Peloton-Fiche
Peloton est un planificateur de ressources unifié introduit pour la première fois par Uber en novembre 2018.
Peloton
Peloton est un planificateur de ressources unifié introduit pour la première fois par Uber en novembre 2018, qui permet de gérer les ressources sur des charges de travail distinctes. C'est une technologie qui a été conçue pour les entreprises comme Uber avec des millions de conteneurs et des dizaines de milliers de nœuds.
Architecture
Pour garantir une haute disponibilité et une grande évolutivité, Peloton utilise une architecture active-active avec quatre types de démons distincts : le gestionnaire de tâches, le gestionnaire de ressources, le moteur de placement et le gestionnaire d'hosts. Les interactions entre ces démons sont conçues de manière à minimiser les dépendances.
Composants
Peloton UI : une interface web pour la gestion des tâches, des volumes et des ressources dans Peloton.
Peloton CLI : une interface de ligne de commande pour Peloton avec des fonctionnalités similaires à celles de l'interface web.
Peloton API : utilise Protocol Buffers comme langage de définition de l'interface et YARPC comme runtime RPC. Peloton UI, Peloton CLI et les autres extensions de Peloton sont toutes construites sur la même API.
Host Manager : extrait, des autres composants, les détails sur les ressources disponibles grâce à Mesos.
Resource Manager: : maintient la hiérarchie des ressources et calcule périodiquement le droit aux ressources de chaque ensemble de ressources, qui est ensuite utilisé pour planifier ou anticiper les tâches en conséquence.
Placement Engine : trouve le placement (c'est-à-dire le mappage de la tâche à l'hôte) en prenant en considération les contraintes de la tâche ainsi que les attributs du host. Les placement engine peuvent être connectés à différents types de programmes, tels que les Batch jobs.
Job Manager : gère le cycle de vie des tâches et des volumes. Prend également en charge les mises à jour continues des tâches pour les services de longue durée.
Storage Gateway : fournit une couche d'abstraction au-dessus des différents backends de stockage afin de pouvoir migrer d'un backend de stockage à l'autre sans changement significatif dans Peloton lui-même. Contient un backend (intégré) par défaut pour Cassandra, mais avec la possibilité d'étendre à d'autres backends.
Group Membership : gère l'ensemble des instances de Peloton et élit un leader pour à la fois s'inscrire à Mesos en tant que framework et instancier un gestionnaire de ressources.
Avantages
- Regrouper des charges de travail mixtes dans des clusters partagés pour une meilleure utilisation des ressources.
- Plus besoin d'acheter de la capacité DR supplémentaire pour les charges de travail en ligne et par lots séparément.
- Colocaliser différentes charges de travail sur une seule et même plateforme de calcul partagée permet d'améliorer la planification des capacités et d'optimiser le partage des ressources.
Caractéristiques de la version actuelle
- Partage élastique des ressources : Pools de ressources hiérarchiques pour partager élastiquement les ressources entre différentes équipes.
- Surengagement des ressources et préemption des tâches : Amélioration de l'utilisation du cluster en planifiant les charges de travail et en utilisant les ressources non utilisées.
- Optimisé pour les charges de travail de données importantes : Supporte les fonctionnalités avancées d'Apache Spark telles que l'allocation dynamique des ressources.
- Optimisé pour le Machine Learning : Prise en charge de l'ordonnancement des GPU et du Gang-Scheduling pour TensorFlow et Horovod. Gestion des milliers de GPU en production
- API basée sur Protobuf/gRPC : Supporte la plupart des langages de liaison tels que Golang, Java, Python et Node.js.
- Co-planification des charges de travail mixtes : Prise en charge de charges de travail mixtes telles que les Batch jobs, Stateful jobs et Stateless jobs dans un seul cluster.
- Haute évolutivité : S'adapte à des millions de conteneurs et à des dizaines de milliers de nœuds.
Sources
Documentation : https://peloton.readthedocs.io/en/latest/
Github : https://github.com/uber/peloton