• 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。

  • 相关阅读:
    [转] websocket新版协议分析+python实现 & websocket 通信协议
    [转] html5演示
    新浪网内部讲师进阶研习会之笔记
    css3 animation属性
    【转】python多线程编程
    搭建selenium自动化环境步骤
    win10下搭建QTP测试环境
    cocos2dx跨平台环境
    Cocos2dx运行win32工程
    原型模式(prototype)
  • 原文地址:https://www.cnblogs.com/yjt1993/p/10996494.html
Copyright © 2020-2023  润新知