如何恢复HDFS日志节点?

时间:2015-04-01 07:22:41

标签: hdfs

我配置了3个日志节点,比方说JN1,JN2,JN3。每个都将编辑日志保存在/ tmp / hadoop / journalnode / mycluster ...

基于此,我开始了我的namenode,secondary namenode和一堆datanode。系统运行良好,直到有一天 JN2 JN3 已经死亡。此外,磁盘已损坏。

然后我购买了新磁盘并重新启动了JN2和JN3。糟糕的是它不再起作用了。

一直在抱怨

org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal Storage Directory /tmp/hadoop/dfs/journalnode/mycluster not formatted
        at org.apache.hadoop.hdfs.qjournal.server.Journal.checkFormatted(Journal.java:457)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.getEditLogManifest(Journal.java:640)
        at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.getEditLogManifest(JournalNodeRpcServer.java:185)
        at org.apache.hadoop.hdfs.qjournal.protocolPB.QJournalProtocolServerSideTranslatorPB.getEditLogManifest(QJournalProtocolServerSideTranslatorPB.java:224)
        at org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocolProtos$QJournalProtocolService$2.callBlockingMethod(QJournalProtocolProtos.java:25431)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:422)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)

无论如何从唯一活着的JN1中恢复JN2和JN3?

真的很感激所有可能的解决方案!

谢谢, 英里

2 个答案:

答案 0 :(得分:2)

我能够通过在Journal主机上创建缺少目录来解决问题,其中namenode将编写其“编辑文件”。

确保创建了VERSION文件,否则您将获得org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException.

或复制目录

中的版本文件

答案 1 :(得分:0)

在我将唯一存在的/ tmp / hadoop / journalnode / mycluster复制到JN2和JN3之后,问题就出现了。