Échec du démarrage d’Apache HBase Master (HMaster) dans Azure HDInsight

Cet article décrit les éventuelles solutions à appliquer pour résoudre les problèmes rencontrés lors d’interactions avec des clusters Azure HDInsight.

Scénario : Master startup cannot progress, in holding-pattern until region comes online

Problème

HMaster ne parvient pas à démarrer en raison de l’avertissement suivant :

hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined. 

Par exemple, les valeurs des paramètres peuvent varier dans le message réel :

hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

Cause

HMaster consulte le répertoire WAL sur les serveurs de la région avant de remettre en ligne les régions OUVERTES. Dans ce cas, en l’absence de cet annuaire, le service n’a pas démarré.

Résolution

  1. Créez cet annuaire factice à l’aide de la commande suivante : sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000.

  2. Redémarrez le service HMaster à partir de l’interface utilisateur Ambari.

Si vous utilisez hbase-2.x, obtenez plus d’informations sur l’utilisation de l’outil hbck2 pour affecter un espace de noms et une table meta.

Scénario : défaillance renommage atomique

Problème

Fichiers inattendus identifiés au cours du processus de démarrage.

Cause

Pendant le processus de démarrage, HMaster effectue de nombreuses étapes d’initialisation, notamment le déplacement des données du dossier temporaire (. tmp) vers le dossier de données. HMaster examine également le dossier de journaux d’activité WAL (write-ahead log) pour voir s’il existe des serveurs régionaux ne répondant pas.

HMaster effectue une commande de liste de base sur les dossiers WAL. S’il rencontre un fichier inattendu dans l’un de ces dossiers, il envoie une exception et ne démarre pas.

Résolution

Vérifiez la pile des appels et essayez de déterminer quel dossier pourrait être responsable du problème (par exemple le dossier de journaux WAL ou le dossier .tmp). Ensuite, dans Explorateur Stockage Azure ou à l’aide de commandes HDFS, tentez de localiser le fichier posant problème. En règle générale, ce fichier est appelé *-renamePending.json. (Le fichier *-renamePending.json est un fichier journal utilisé pour implémenter l’opération de renommage atomique dans le pilote WASB. En raison des bogues dans cette implémentation, ces fichiers peuvent être abandonnés après le blocage d’un processus, etc.) Forcez la suppression de ce fichier dans Cloud Explorer ou en utilisant les commandes HDFS.

Dans certains cas, cet emplacement contient également un fichier temporaire nommé $$$.$$$. Vous devez utiliser la commande HDFS ls pour voir ce fichier ; vous ne pouvez pas le voir dans Explorateur Stockage Azure. Pour supprimer ce fichier, utilisez la commande HDFS hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$.

Après avoir exécuté ces commandes, HMaster devrait démarrer immédiatement.


Scénario : aucune adresse de serveur répertoriée

Problème

Vous pouvez voir un message indiquant que la table hbase: meta n’est pas en ligne. L’exécution de hbck peut indiquer hbase: meta table replicaId 0 is not found on any region. Dans les journaux d’activité HMaster, vous pouvez voir le message: No server address listed in hbase: meta for region hbase: backup <region name>.

Cause

HMaster n’a pas pu être initialisé après le redémarrage de HBase.

Résolution

  1. Entrez la commande suivante dans l’interpréteur de commandes HBase (modifiez les valeurs le cas échéant) :

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. Supprimez l’entrée hbase: namespace. Cette entrée peut être à l’origine de l’erreur signalée quand la table hbase: namespace est analysée.

  3. Redémarrez le service HMaster actif à partir de l’interface utilisateur Ambari pour rétablir le fonctionnement de HBase.

  4. Dans l’interpréteur de commandes HBase, exécutez la commande suivante pour afficher toutes les tables hors connexion :

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Scénario : java.io.IOException: Timedout

Problème

HMaster arrive à expiration avec une exception irrécupérable similaire à java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned.

Cause

Vous pourriez rencontrer ce problème si plusieurs tables et régions n’ont pas été vidées lors du redémarrage de vos services HMaster. Le délai d’attente est un défaut connu de HMaster. Les tâches générales de démarrage du cluster peuvent prendre beaucoup de temps. HMaster s’arrête si la table namespace n’a pas encore été affectée. Les tâches de démarrage fastidieuses se produisent quand une grande quantité de données n’a pas été vidée et qu’un délai d’attente de cinq minutes est insuffisant.

Résolution

  1. Dans l’interface utilisateur d’Apache Ambari, accédez à HBase>Configs. Dans le fichier hbase-site.xml personnalisé, ajoutez le paramètre suivant :

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. Redémarrez les services requis (HMaster et éventuellement d’autres services HBase).


Scénario : fréquent redémarrages de serveurs régionaux

Problème

Les nœuds redémarrent périodiquement. Dans les journaux des serveurs régionaux, vous pouvez voir des entrées similaires à celles-ci :

2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms

Cause : expiration de session zookeeper

Longue pause de nettoyage de la mémoire de machine virtuelle Java de regionserver. La pause entraîne l’absence de réponse de regionserver et l’impossibilité d’envoyer une pulsation à HMaster dans les 40 secondes de délai d’expiration de la session zookeeper. HMaster croit que regionserver est inactif, l’abandonne et redémarre.

Pour atténuer ce problème, modifiez le délai d’expiration de la session Zookeeper : modifiez non seulement le paramètre hbase-sitezookeeper.session.timeout, mais également le paramètre Zookeeper zoo.cfgmaxSessionTimeout.

  1. Dans l’interface utilisateur Ambari, accédez à HBase -> Configs -> Paramètres, dans la section Délais d’expiration, modifiez la valeur du délai d’expiration de la session Zookeeper.

  2. Dans l’interface utilisateur Ambari, accédez à Zookeeper -> Configs -> Custom (Personnalisée)zoo.cfg, puis ajoutez ou modifiez le paramètre suivant. Vérifiez que la valeur est identique à HBase zookeeper.session.timeout.

    Key: maxSessionTimeout Value: 120000  
    
  3. Redémarrez les services requis.

Cause : RegionServer surchargé

Consultez Number of regions per RS - upper bound (Nombre de régions par serveur de régions : limite supérieure) pour calculer la limite supérieure. Par exemple : 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

Pour atténuer ce problème, effectuez un scale-up de votre cluster HBase.


Scénario : défaillance fractionnement de journaux

Problème

HMaster n’apparaît pas sur un cluster HBase.

Cause

Paramètres HDFS et HBase mal configurés pour un compte de stockage secondaire.

Résolution

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase et redémarrez les services sur Ambari.


Étapes suivantes

Si votre problème ne figure pas dans cet article ou si vous ne parvenez pas à le résoudre, utilisez un des canaux suivants pour obtenir de l’aide :

  • Obtenez des réponses de la part d’experts Azure en faisant appel au Support de la communauté Azure.

  • Connectez-vous à @AzureSupport, le compte Microsoft Azure officiel pour améliorer l’expérience client. Connexion de la communauté Azure aux ressources appropriées : réponses, support technique et experts.

  • Si vous avez besoin d’une aide supplémentaire, vous pouvez envoyer une requête de support à partir du Portail Microsoft Azure. Sélectionnez Support dans la barre de menus, ou ouvrez le hub Aide + Support. Pour plus d’informations, consultez Création d’une demande de support Azure. L’accès au support relatif à la gestion et à la facturation des abonnements est inclus avec votre abonnement Microsoft Azure. En outre, le support technique est fourni avec l’un des plans de support Azure.