Résolvez les échecs de démarrage d'HMaster HBase causés par l'erreur « Cannot seek after EOF » dans HBase 2.3.4.
Symptômes
HMaster pour HBase 2.3.4 ne parvient pas à redémarrer et affiche l'erreur suivante dans les journaux :
java.io.EOFException: Cannot seek after EOF
at org.apache.hadoop.hdfs.DFSInputStream.seek(DFSInputStream.java:1447)
at org.apache.hadoop.fs.FSDataInputStream.seek(FSDataInputStream.java:65)
at org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.initInternal(ProtobufLogReader.java:211)
at org.apache.hadoop.hbase.regionserver.wal.ProtobufLogReader.initReader(ProtobufLogReader.java:173)
Cause
Le service HMaster ne démarre pas car il rencontre un fichier WAL (write-ahead log) vide (0 octet) lors de sa récupération. Ce problème est rare.
Problème connexe dans la communauté : WAL replay should ignore 0-length files.
Versions concernées
Ce problème affecte HBase version 2.3.4 sur les clusters EMR exécutant les versions EMR suivantes :
Versions EMR antérieures à EMR-5.6.0
EMR-4.8.0 à EMR-4.10.0 (incluses)
Résolution
Sauvegardez le fichier JAR avant de le remplacer.
-
Téléchargez hbase-server-2.3.4.jar et remplacez le fichier JAR correspondant sur le nœud maître du cluster HBase.
Le fichier JAR se trouve dans le répertoire /usr/lib/hbase-current/lib/.
-
Redémarrez le service HMaster.
Dans la console EMR, accédez à la page Status du service HBase. Sur la ligne du composant HMaster, cliquez sur Restart dans la colonne Actions.