Ambari, la supervision de cluster Hadoop

le 29/03/2013 par Rémy Saissy
Tags: Software Engineering

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