如何恢复HDFS日志节点?

Mil*_*hen 5 hdfs

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

在此基础上,我启动了我的名称节点、辅助名称节点和一堆数据节点。系统运行良好,直到有一天JN2JN3死掉了。此外,磁盘已损坏。

然后我购买了新磁盘并重新启动了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)
Run Code Online (Sandbox Code Playgroud)

有没有办法从唯一活着的 JN1 中恢复 JN2 和 JN3?

非常感谢所有可能的解决方案!

谢谢,迈尔斯

Mil*_*hen 0

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