Difference between revisions of "VT2020-Peloton-Fiche"

From air
Jump to navigation Jump to search
 
(11 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
= Peloton =
 
= 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.
 
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 pratiquant du web-scale IT avec des millions de conteneurs et des dizaines de milliers de nœuds.
+
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.
 
   
 
[[File:Architecture_Peloton.png|500px|right|thumb|Architecture]]
 
[[File:Architecture_Peloton.png|500px|right|thumb|Architecture]]
 
= Architecture =
 
= 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'hôtes. Les interactions entre ces démons sont conçues de manière à minimiser les dépendances et à ne se produire que dans une seule direction.
+
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 ==
 
== Composants ==
Line 23: Line 21:
 
'''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.
 
'''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 travaux par lots.
+
'''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.
 
'''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.
Line 40: Line 38:
 
= Caractéristiques de la version actuelle =
 
= Caractéristiques de la version actuelle =
   
* Partage élastique des ressources : Pools de ressources hiérarchiques pour partager élastiquement les ressources entre différentes équipes.
+
* '''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.
+
* '''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 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 l'apprentissage machine : Prise en charge de l'ordonnancement des GPU et du Gang-Scheduling pour TensorFlow et Horovod. Gestion des milliers de GPU en production
+
* '''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.
+
* '''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 travaux par lots, sans état et avec état dans un seul cluster.
+
* '''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.
+
* '''Haute évolutivité''' : S'adapte à des millions de conteneurs et à des dizaines de milliers de nœuds.
   
 
= Sources =
 
= Sources =
Line 65: Line 63:
 
* Année : [[VT2020]]
 
* Année : [[VT2020]]
 
* Sujet : Peloton
 
* Sujet : Peloton
  +
* Slides : [[Media:VT2020-Peloton-Presentation.pdf|Slides]]
* Slides :
 
 
* Auteur : Rim EL JRAIDI
 
* Auteur : Rim EL JRAIDI

Latest revision as of 12:12, 18 January 2021

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

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

Veille Technologique 2020

  • Année : VT2020
  • Sujet : Peloton
  • Slides : Slides
  • Auteur : Rim EL JRAIDI