Ambari, la supervision de cluster Hadoop
Présentation
Lors du Hadoop Summit 2013, HortonWorks a présenté Ambari, un projet d’inbubation Apache destiné à la supervision et à l’administration de clusters Hadoop.
Ambari se positionne en alternative à Chef, Puppet ou encore au Cloudera Manager.
Le projet est aujourd’hui au stade de l’incubation, ce qui signifie que ses fonctionnalités sont encore limitées.
Ambari ne se limite pas à Hadoop mais permet de gérer également les outils de l’écosystème. Les outils annoncés sont :
HDFS
Hadoop 1.0 uniquement, la version 2.0 devrait être supportée courant Juin
MapReduce
Hive, HCatalog
Oozie
HBase
Ganglia, Nagios
Tous les outils de la distribution d’HortonWorks
Bien qu’Hadoop 1.0 soit supporté, Ambari ne supporte pas les distributions dont l’installation ne repose pas sur Apache BigTop.
Enfin, l’une des particularités d’Ambari par rapport à ses concurrents est qu’il est orienté API et extensbilité.
En effet, il est possible d’intéragir avec Ambari au travers de son API REST et le projet est conçu de sorte qu’il soit possible d’ajouter facilement des modules pour gérer des produits tiers.
D’un point de vue technique
Ambari est constitué de deux parties :
Un serveur
Des agents installés sur chaque machine du cluster
Le serveur
Le serveur est codé en Java et expose une API REST. Il est chargé de coordonner les déploiements et la supervision des clusters.
Les agents
Les agents sont codés en Python. Le choix de Python est dû au fait qu’il était nécessaire d’avoir une processus léger et proche de l’OS.
Au jour d’aujourd’hui, Ambari a été testé sur des clusters de 500 noeuds.
Il n’y a pas encore eu de mise en production mais le produit tourne en pré production chez des clients d’HortonWorks.
D’un point de vue fonctionnel
Gestion de la configuration et des services
Ambari fournit un système de gestion de configuration permettant de déployer des services d’Hadoop ou de son écosystème sur des clusters de machines.
Il est également possible de paramétrer chaque service déployé. Au niveau de l’interface graphique d’Ambari, un récapitulatif par service est fourni afin de voir rapidement où est déployé le service.
Le déploiement peut également se faire au travers d’un assistant de déploiement. Aujourd’hui deux distributions peuvent être déployées ainsi :
Apache BigTop
HortonWorks (reposant sur BigTop)
Gestion d’administration
L’accès aux fonctionnalités d’Ambari peut être contrôlé, un mécanisme de gestion des habilitations étant prévu.
De même, les comptes utilisateurs pourront être synchroniser depuis un annuaire LDAP.
Dashboard
Ambari fourni un dashboard dont le rôle est de fournir un résumé :
de l’état des services
des informations issues de Ganglia et de Nagios
de l’exécution des jobs
Ce dashboard est extensible au travers d’APIs. L’objectif est de pouvoir ajouter d’autres services à ce dernier.
Gestion des machines
Une partie de l’API et de l’interface web est dédiée à la fourniture d’informations de type supervision des machines d’un cluster.
On y trouve notamment et par machine :
les métriques principales concernant l’OS : réseau, mémoire, charge CPU, I/O
les métriques principales par service : HDFS, HBase, …
la possibilité d’effectuer des actions par service : décommissionner un noeud HDFS, …
Métriques de suivi
Via son interface web, Ambari fourni un ensemble de Heatmap portant sur des métriques ciblées :
métriques machine
métriques HDFS, MapReduce, HBase, …
heatmap de chaque rack
Cela permet de visualiser rapidement l’état d’un cluster.
Gestion des jobs
L’une des fonctionnalités mises en avant est qu’Ambari sait traiter les DAG de jobs comme une seule unité. De fait, une requête Hive, un DAG Ozzie ou un script Pig n’apparaitront pas comme plusieurs jobs mais une vue agrégée de tous les jobs impliqués est fournie à la place.
Il est également possible de visualiser les jobs sous la forme d’une timeline, cette dernière permettant notamment de voir de manière graphique les points lents de l’exécution d’un job ou d’un DAG de jobs en facilitant ainsi l’optimisation.
L’autre aspect de la gestion des jobs sont les métriques sur les jobs exécutés et les filtres de recherche.
Il est en effet possible de retrouver les jobs suivant différents critères tels que :
le type
le nom
l’utilisateur ayant lancé le job
la durée d’exécution
De plus, pour chaque job, en plus de la timeline d’exécution, on retrouve les informations que fournit le JobTracker tel que :
le nombre d’octets en entrée, en sortie
le temps d’exécution
Conclusion
Bien que s’agissant encore d’un produit en bêta, l’approche basée sur des API Rest et la possibilité d’étendre le produit avec ses propres services est très intéressante car non limitatif sur un seul éditeur.
Un produit à surveiller.
Liens
Ambari : http://incubator.apache.org/ambari