You are currently viewing Yarn – Quel Ordonnanceur pour quel usage ?

Yarn – Quel Ordonnanceur pour quel usage ?

Plusieurs solutions existent au sein de l’écosystème Hadoop pour gérer les ressources d’un ou plusieurs clusters :

  • YARN introduit en novembre 2011, parfois appelé MapReduce 2.0 (MRv2), est un composant Hadoop qui arbitre la gestion et la distribution des ressources d’un ou plusieurs clusters
  • Mesos qui adresse la gestion des ressources au niveau Data Center et du Cloud
  • Myriad: qui permet à YARN de s’exécuter dans un contexte Mesos

L’objet de ce billet est d’apporter un éclairage sur le choix du type d’ordonnanceur de YARN.

Qu’est-ce qu’un ordonnanceur Hadoop ?

L’ordonnanceur ou « Scheduler » est en charge de l’allocation de ressources actives au sein du cluster. Ces ressources sont appelées « Containers ». Plus spécifiquement un Containers désigne un groupe de blocs mémoire, disque, cpu et réseaux. Le scheduler répartie ces ressources (Containers) en fonction des informations et des demandes qui lui sont remontés par les NodeManager tournants sur chaque nœuds du cluster.

A quel moment intervient la question sur ce choix ?

– Lorsque vous observez de la contention ; le cluster devient indisponible pendant certains créneaux horaire ou lorsque la durée des traitements devient de plus en plus longue. En effet, le « datalake » étant par essence un espace de travail partagé, il convient de veiller à sa disponibilité

–  Ou encore lorsque vous avez besoin de partager le cluster Hadoop, qui n’est pas une ressource infinie, entre plusieurs utilisateurs et ou plusieurs entités.

Alors comment, compte tenu de votre organisation, votre mode de fonctionnement et vos impératifs opérationnels exploiter au mieux les ressources de votre cluster ?

Car c’est bien évidemment de rentabilité dont il s’agit ici. Quelle est la meilleure configuration possible pour optimiser l’utilisation de vos serveurs ?

A l’heure actuelle, la version 2.7 de YARN propose 2 ordonnanceurs:

– le Capacity Scheduler

– le Fair Scheduler

Avant de s’orienter sur l’un plutôt que l’autre, il convient au préalable de se poser les questions suivantes:

Votre organisation

  • partagez-vous le cluster entre plusieurs utilisateurs, plusieurs entités ?
  • votre organisation est-elle structurée en silo, est-elle très compartimentée ? avez-vous besoin d’étanchéité ?
  • devez-vous gérer des priorités parmi les différentes entités de votre organisation ?

Votre mode de fonctionnement (usage du cluster)

  • comment s’exécutent vos jobs ?
    • ponctuellement ?
    • de manière récurrente ?
    • de façon permanente ?
    • séquentiellement ?
  • une gestion fine des ressources est-elle nécessaire ? avez-vous une exigence sur le nombre de mapper / reducer ?
  • quel est le taux d’occupation du cluster ?
    • Observez-vous des périodes d’inactivité ?
    • Est-il linéaire, constamment chargé ?
    • Générez-vous des bursts de temps à autre ?
  • quelle est l’évolution du cluster ? envisagez-vous une élasticité importante ?

L’exploitation

  • avez-vous besoin de garantir la disponibilité des ressources du cluster (contrat SLA) ?
  • devez-vous respecter des délais dans l’exécution des jobs ?
  • avez-vous une contrainte légale, de par la nature des données, d’identifier les responsables des jobs (traçabilité, audit, etc. ?

Au terme de cet audit, synthétiser dans un tableau (ci-dessous) vos éléments de réponse.

 

Puis rapprocher les résultats obtenus précédemment avec les spécificités de chacun des scheduler présentés ci-dessous afin de vous aider à la décision.

 

Valider votre choix

Une fois votre scheduler sélectionné, il est nécessaire de vérifier qu’il correspond à vos attentes. Pour cela définissez vos scénarios de test, idéalement avec une référence ISO (data set, code source)

  • Tests de stress,
  • Tests d’endurance,
  • Tests selon un modèle de traffic qui se rapproche de vos usages
  • Tests isolés et en concurrence

Identifier les métriques afin de consigner les résultats dans un tableau de bord.

Réaliser la campagne de test. Plusieurs itérations seront nécessaires pour ajuster les paramètres du scheduler.


En  Conclusion

Nous venons de le voir, l’adoption d’un type de scheduler nécessite de prendre de la hauteur, et de revisitez la façon d’exploiter le cluster.

Ainsi, posez le mode opératoire des utilisateurs au sein des différentes entités. Cartographiez les usages afin d’identifier le scheduler le plus approprié.

Tester dans plusieurs contextes et anticiper l’évolution des besoins.

Phi. D.