É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
Créez cet annuaire factice à l’aide de la commande suivante :
sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000
.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
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>'
Supprimez l’entrée
hbase: namespace
. Cette entrée peut être à l’origine de l’erreur signalée quand la tablehbase: namespace
est analysée.Redémarrez le service HMaster actif à partir de l’interface utilisateur Ambari pour rétablir le fonctionnement de HBase.
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
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
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-site
zookeeper.session.timeout
, mais également le paramètre Zookeeper zoo.cfg
maxSessionTimeout
.
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.
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 à HBasezookeeper.session.timeout
.Key: maxSessionTimeout Value: 120000
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.