Utilisation de Kubernetes pour monitorer efficacement des clusters Hadoop

Utilisation de Kubernetes pour monitorer efficacement des clusters Hadoop2018-10-23T18:31:32+00:00

Présentation

La surveillance d’un cluster Hadoop de production est un vrai challenge et se doit d’être en constante évolution.
Durant cette présentation, nous discuterons de comment une architecture utilisant Kubernetes peut nous aider à créer un système de surveillance léger et évolutif.

Contexte

Notre rôle à EDF est de configurer, déployer et surveiller des clusters Hadoop multi-utilisateurs.
Même avec des outils comme Ambari, s’assurer que tous les composants d’un cluster Hadoop fonctionnent correctement n’est pas chose aisée.
Nos sommes souvent confrontés aux situations suivantes :
  • Un composant ne fonctionne pas (Erreur de configuration, erreurs hardware ou réseau, bug…)
  • Un utilisateur se plaint de latences ou d’erreurs
  • Une enquête est lancée afin de trouver la cause
  • Une fois corrigée, nous souhaitons orchestrer des tests afin d’être alertés la prochaine fois que cette erreur se produit.
Au fur et à mesure, la détection d’erreurs devient de plus en plus fine. Le service gagne en stabilité et les utilisateurs sont plus statisfaits.

Notre architecture actuelle se base sur Shinken, une application très similaire à Nagios. Elle est très utile et efficace quand il s’agit d’erreurs simples.

Exemple: Un service est détecté comme éteint car son port TCP est fermé, une commande de redémarrage est lancée en quelques secondes.
Pour des utilisations plus complexes, comme une chaîne complète de connexion à HBase, Shinken est rapidement dépassé.
Il est de plus très demandé de surveiller les temps de réponse, mesurer des taux de disponibilités et des visualiser des tableaux de bords. Shinken ne répond pas à ces besoins.

Objectif

L’objectif de cette discussion est de présenter une architecture moderne et élastique utilisant Kubernetes.
Cette architecture doit être capable de supporter l’écriture de test de n’importe quelle forme (Bash, langage de scripts tel NodeJS ou Python, légère appli Java). Ce test est lancé dans un container et ordonnancé dans Kubernetes. Le résultat de ce test est automatiquement envoyé dans système de log centralisé (Elasticsearch) et/ou un collecteur de métriques (Prometheus). On peut ensuite afficher, traiter et réagir sur ces données.

Auteur

Paul-Adrien Cordonnier, Consultant Big Data à Adaltas. Je suis actuellement en poste à EDF ou je déploie et surveille plusieurs clusters Hadoop et Elasticsearch installés on premises.