Resuelva los errores de inicio de HBase HMaster provocados por el error "Cannot seek after EOF" en HBase 2.3.4.
Síntomas
HMaster para HBase 2.3.4 no se reinicia y muestra el siguiente error en los registros:
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)
Causa
El servicio HMaster no inicia porque encuentra un archivo de registro de escritura anticipada (WAL) vacío (0 bytes) durante su proceso de recuperación. Este problema es poco frecuente.
Problema relacionado en la comunidad: WAL replay should ignore 0-length files.
Versiones afectadas
Este problema afecta a la versión 2.3.4 de HBase en clústeres de EMR que ejecutan las siguientes versiones de EMR:
Versiones de EMR anteriores a EMR-5.6.0
De EMR-4.8.0 a EMR-4.10.0 (inclusive)
Solución
Realice una copia de seguridad del archivo JAR antes de reemplazarlo.
-
Descargue hbase-server-2.3.4.jar y reemplace el archivo JAR correspondiente en el nodo maestro del clúster de HBase.
El archivo JAR se encuentra en el directorio /usr/lib/hbase-current/lib/.
-
Reinicie el servicio HMaster.
En la consola de EMR, vaya a la página Status del servicio HBase. En la fila del componente HMaster, haga clic en Restart en la columna Actions.