Resolva falhas de inicialização do HMaster do HBase causadas pelo erro "Cannot seek after EOF" no HBase 2.3.4.
Sintomas
O HMaster do HBase 2.3.4 não reinicia e apresenta o seguinte erro nos logs:
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
O service HMaster falha ao iniciar porque encontra um arquivo de write-ahead log (WAL) vazio (0 bytes) durante a recuperação. Esse problema é raro.
Issue relacionada na comunidade: WAL replay should ignore 0-length files.
Versões afetadas
Esse problema afeta o HBase 2.3.4 em clusters EMR nas seguintes versões:
Anteriores à EMR-5.6.0
Da EMR-4.8.0 à EMR-4.10.0 (inclusive)
Resolução
Faça backup do arquivo JAR antes de substituí-lo.
-
Baixe o arquivo hbase-server-2.3.4.jar e substitua o arquivo JAR correspondente no nó mestre do cluster HBase.
O arquivo JAR está no diretório /usr/lib/hbase-current/lib/.
-
Reinicie o service HMaster.
No console do EMR, acesse a página Status do service HBase. Na linha do componente HMaster, clique em Restart na coluna Actions.