Hadoop java.io.IOException: Gap in Transactions
Hadoop java.io.IOException: Gap in transactions
Este es un problema que me he encontrado hoy mismo en unos de los entornos de Hadoop (BTW, usamos Hortonworks), que producia que no pudieramos arrancar el Namenode principal y por lo tanto, el cluster entero estuviera caido
Problema
Encontramos este error en el hdfs.log de hadoopjava.io.IOException: Gap in transactions. Expected to be able to read up until at least txid 57555113 but unable to find any edit logs containing txid 57321255 java.io.IOException: Gap in transactions. Expected to be able to read up until at least txid 57555113 but unable to find any edit logs containing txid 57321255
Solucion
Vamos a recuperar en nodo, ejecutamos como usurio hdfs y le damos a a para que vayamos descartando esos bloques
% ./bin/hadoop namenode -recover
1 | 18/07/24 08:34:02 ERROR namenode.MetaRecoveryContext: Failed to apply edit log operation CloseOp [length=0, inodeId=0, path=/user/kosys/streaming/topics/+tmp/consent_content_updates/partition=201807/91c3b2fe-0b63-44c5-a24c-bb9d2f22300f_tmp.orc, replication=3, mtime=1532347563607, atime=1532347495094, blockSize=268435456, blocks=[blk_1077417863_3677675], permissions=kosys:hdfs:rw-r--r--, aclEntries=null, clientName=, clientMachine=, overwrite=false, storagePolicyId=0, opCode=OP_CLOSE, txid=57554877]: error File does not exist: /user/kosys/streaming/topics/+tmp/consent_content_updates/partition=201807/91c3b2fe-0b63-44c5-a24c-bb9d2f22300f_tmp.orc |
Probamos a arrancar el namenode de nuevo, si arranca bien, si no, vamos a ver si nos da este error:
java.io.FileNotFoundException: /hadoop/hdfs/namenode/current/VERSION (Permission denied)
Problemas de persmisos, los arreglamos ejecutando chown -R hdfs:hdfs /hadoop/hdfs/namenode y volvemos a probar…
1 | 2018-07-24 08:44:21,855 INFO blockmanagement.BlockReportLeaseManager (BlockReportLeaseManager.java:registerNode(205)) - Registered DN fd18f58c-2329-4b63-b540-f557006e4d73 (10.25.162.42:50010). |
Dahora error de Safemode, por problemas de recursos, desactivamos el SafeMode una vez que ya tenemos el HDFS funcionando como usuario hdfs
1 | <<< QA >>> root@hadoop-1:/var/log/hadoop/hdfs# su hdfs dfsadmin -safemode leave |
Ahora si, deberia de funcionar todo :)
Bonus:
en nuestro caso ademas de esto, un DataNode estaba prodrido, seguire en otro post como arreglarlo, pero al menos los Namenodes arrancan y podemos arrancar los otros DataNotes y servicios
Listo!
Links
link 1 (Unable to Start the Name Node in hadoop - Stack Overflow)
link 2 (Permission denied error during NameNode start - Hortonworks)