Le blog Big Data

Monitorer un Cluster Hadoop2 avec Ganglia via Metrics2

Ganglia ?

Ganglia est un outil de monitoring distribué, scalable, léger et simple à mettre en place.

Ganglia est composé de plusieurs démons :

Ganglia Monitoring Daemon (gmond)

Il est installé sur chaque nœud à monitorer du cluster.

Ses quatre rôles sont :

  • Collecter les metriques “système” de l’hôte,
  • Diffuser ces métriques au sein du réseau,
  • Éventuellement écouter le réseau afin de récupérer les métriques transmises par les autres nœuds,
  • Transmettre l’ensemble des métriques collectées lors de la réception d’un requête du gmetad.

Par défaut, le démon gmond fait du “multicast”. Pour éviter ce genre de transmissions, nous prendrons soin de le configurer en unicast.

Ganglia Meta Daemon (gmetad)

Ce démon à pour objectif de rassembler les métriques fournies par un ensemble de nœuds du cluster. Pour cela, il requête périodiquement un ou plusieurs gmond au sein du cluster. Il agrège et stocke les données localement et les transmet aux clients via des requêtes TCP.

Notons qu’un gmetad peut requêter un autre gmetad, cela permettant de collecter les métriques sous la forme d’un arbre (où chaque sommet est un démon gmetad).

Ganglia PHP Web Frontend

Cette application web permet de parcourir et de visualiser les métriques sous la forme de graphes (via RDDtools). Les données visualisées sont associées à un gmetad.

Metrics – Metrics2 ?

Metrics2 est le nouveau système de diffusion des métriques proposé dans la version 2 d’Hadoop.

Notre architecture

Remarques : tous les nœuds du cluster hébergent un gmond.

  • Le nœud maitre (master01) héberge les services Hadoop maitre (Namenode + ResourceManager (YARN)) ainsi que gmetad et l’interface web Ganglia,
  • Les nœuds esclaves (worker0{1,2,3,4}) hébergent les services Hadoop esclaves (Datanode + NodeManager.

Dans cette architecture, chaque démon Hadoop est configuré pour envoyer ses métriques sur le gmond local. Chaque gmond envoie les métriques système ainsi que les métriques Hadoop au gmond du nœud maitre. Le gmetad recueil les données directement sur le gmond local. Selon le même schéma, le client web Ganglia remonte les métriques en contactant le gmetad local.

Installation & configurations de Ganglia

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -Uvh  epel-release-6*.rpm
yum install -y ganglia-gmond

Sur le nœud « master01 », installez également le gmetad et l’interface web

yum install -y ganglia-gmetad ganglia-web

Configuration des démons

Sur les cinq nœuds du cluster, éditez la section « udp_send_channel » du fichier “/etc/ganglia/gmond.conf” ainsi :

udp_send_channel {
  host = master01
  port = 8649
  ttl = 1
}

En spécifiant le host dans la section « udp_send_channel », nous configurons ces gmond en unicast. Renseignez les sections « cluster » et « host » comme il vous semble.

Notons que sur le nœud maitre, le gmond transmet ses métriques à lui même.

Sur le nœud maitre, éditez le fichier “/etc/ganglia/gmetad.conf” et définissez la source suivante.

data_source "my_cluster" master01
gridname "IngensiLabs"

Le gmetad requête donc le gmond maitre afin de récupérer l’ensemble des métriques du cluster. Ganglia présente les données sous une structure à trois niveaux :

  • Nœud : représente une machine d’un cluster (un démon gmond),
  • Cluster : un ensemble de machines (data_source configuré dans le gmetad),
  • Grid : top level ganglia réunissant un ensemble de clusters.

Démarrer Ganglia

Sur chaque nœud, lancez les démons :

service gmond start
service gmetad start
service httpd start

L’interface web de Ganglia étant développée en PHP, il suffit de lancer le serveur web httpd pour pouvoir y accéder. Si vous souhaitez qu’ils se lancent au démarrage :

chkconfig gmond on
chkconfig gmetad on
chkconfig httpd on

Remarque : Ganglia doit être démarré avant les démons Hadoop au démarrage, sans quoi lors de l’initialisation de ces derniers, la connexion échouera et les métriques ne seront jamais réceptionnées par le gmond, même une fois démarré.

Configuration d’Hadoop

Sur chacun des cinq nœuds du cluster, éditez le fichier “/etc/hadoop/conf/hadoop-metrics2.properties” ainsi :

*.sink.ganglia.class=org.apache.hadoop.metrics2.sink.ganglia.GangliaSink31
*.period=10
namenode.sink.ganglia.servers={{HOSTNAME}}:8649
resourcemanager.sink.ganglia.servers={{HOSTNAME}}:8649
datanode.sink.ganglia.servers={{HOSTNAME}}:8649
nodemanager.sink.ganglia.servers={{HOSTNAME}}:8649

Remplacez “{{HOSTNAME}}” par le nom de la machine (“master01”, “worker01”, etc.). Plutôt que “localhost”, spécifiez le hostname complet de la machine car ce nom sera utilisé pour étiqueter les métriques.

Metrics2 fournit des connecteurs Ganglia pour services suivants : Namenode, secondarynamenode, datanode, resourcemanager, nodemanager, mrappmaster, maptask et reducetask.

Vous pouvez maintenant redémarrer vos services Hadoop en vous assurant que les gmond sont déjà démarrés.

Navigation dans l’interface

Dans votre navigateur, accédez à l’adresse suivant : http://master01/ganglia/.

L’interface propose de visualiser des données agrégées au niveau du cluster :

Et des nœuds (master01) :

Exemple de métriques HDFS sur le nœud master :

Pour plus d’informations sur cet outil : http://sourceforge.net/projects/ganglia/

Thibaut Marmin

Thibaut Marmin

      Laisser un commentaire