journalnode Can't scan a pre-transactional edit log 異常處理


由於數據磁盤爆滿,達到100%,導致journalnode宕掉,在啟動journalnode以后,查看日志,提示Can't scan a pre-transactional edit log,這個時候namenode已經是不能正常啟動了。

java.io.IOException: Can't scan a pre-transactional edit log.
        at org.apache.hadoop.hdfs.server.namenode.FSEditLogOp$LegacyReader.scanOp(FSEditLogOp.java:4974)
        at org.apache.hadoop.hdfs.server.namenode.EditLogFileInputStream.scanNextOp(EditLogFileInputStream.java:245)
        at org.apache.hadoop.hdfs.server.namenode.EditLogFileInputStream.scanEditLog(EditLogFileInputStream.java:355)
        at org.apache.hadoop.hdfs.server.namenode.FileJournalManager$EditLogFile.scanLog(FileJournalManager.java:551)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.scanStorageForLatestEdits(Journal.java:192)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.<init>(Journal.java:152)
        at org.apache.hadoop.hdfs.qjournal.server.JournalNode.getOrCreateJournal(JournalNode.java:90)
        at org.apache.hadoop.hdfs.qjournal.server.JournalNode.getOrCreateJournal(JournalNode.java:99)
        at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.getEditLogManifest(JournalNodeRpcServer.java:189)
        at

解決辦法:

1、刪除數據磁盤的一些無用的數據,讓磁盤有一定的空間,只要空間>0k,journalnode就可以正常啟動,我這邊就是某一塊盤一點磁盤空間都沒有,可用空間0k。導致在啟動journalnode的時候提示磁盤空間不足,說到底,還是集群在規划的時候沒有預留磁盤空間導致的,給差評。

2、報上述的 Can't scan a pre-transactional edit log  錯誤,就是由於journalnode維護的eidts文件損壞,這個時候,看一下journalnode幾台節點,哪一台是好的,先刪除損壞的journalnode的數據文件,然后把這台好的journalnode文件拷貝到其他的節點。

3、修改拷貝過來的數據文件的權限

4、重啟journalnode。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM