Namenode ссылается на неправильный путь к журнальному узлу - PullRequest
0 голосов
/ 17 января 2020

мы запускаем кластер Had oop с 2 наменодами, 3 датодами и 1 журнальным узлом в нашей настройке тестирования.

Имеет oop версия -2.7.3 Версия Zookeeper - 3.4.10

В узле журнала я настроил, как показано ниже, на hdfs-сайте. xml

<configuration>

   <!--property>
             <name>dfs.permissions</name>
     <value>false</value>
   </property-->
<!-- Local edits to be stored in the journal nodes!-->
<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/user/journal_hadoop_data/clustername/journal_edits</value>
</property>



<property>
     <name>dfs.journalnode.rpc-address</name>
              <value>0.0.0.0:8485</value>
                       </property>
<property>
     <name>dfs.journalnode.http-address</name>
                   <value>0.0.0.0:8480</value>
                                          </property>
<property>
     <name>dfs.journalnode.https-address</name>
                        <value>0.0.0.0:8481</value>
</property>

</configuration>

В Наменоде я настроил hdfs-site. xml, как показано ниже

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://192.168.4.5:8485/clustername</value>
</property>

<!--the Java class that HDFS clients use to contact the Active NameNode-->
<property>
  <name>dfs.client.failover.proxy.provider.clustername</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

Но когда я запустил namenode, он был автоматически убит путем ссылки пути редактирования как " / tmp / hadoop / dfs / journalnode / имя_кластера / current "

2020-01-10 16:46:39,519 INFO org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager: Using longest log: 192.168.4.5:8485=segmentState {
  startTxId: 1924750
  endTxId: 1924750
  isInProgress: true
}
lastWriterEpoch: 14
lastCommittedTxId: 1924749

2020-01-10 16:46:39,560 FATAL org.apache.hadoop.hdfs.server.namenode.FSEditLog: Error: recoverUnfinalizedSegments failed for required journal (JournalAndStream(mgr=QJM to [192.168.4.5:8485], stream=null))
org.apache.hadoop.hdfs.qjournal.client.QuorumException: Got too many exceptions to achieve quorum size 1/1. 1 exceptions thrown:
192.168.4.5:8485: /tmp/hadoop/dfs/journalnode/clustername/current/paxos/1924750.tmp (No such file or directory)
        at java.io.FileOutputStream.open(Native Method)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
        at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
        at org.apache.hadoop.hdfs.util.AtomicFileOutputStream.<init>(AtomicFileOutputStream.java:58)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.persistPaxosData(Journal.java:971)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.acceptRecovery(Journal.java:846)
        at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.acceptRecovery(JournalNodeRpcServer.java:205)
        at org.apache.hadoop.hdfs.qjournal.protocolPB.QJournalProtocolServerSideTranslatorPB.acceptRecovery(QJournalProtocolServerSideTranslatorPB.java:249)
        at org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocolProtos$QJournalProtocolService$2.callBlockingMethod(QJournalProtocolProtos.java:25435)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043)

        at org.apache.hadoop.hdfs.qjournal.client.QuorumException.create(QuorumException.java:81)
        at org.apache.hadoop.hdfs.qjournal.client.QuorumCall.rethrowException(QuorumCall.java:223)
        at org.apache.hadoop.hdfs.qjournal.client.AsyncLoggerSet.waitForWriteQuorum(AsyncLoggerSet.java:142)
        at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.recoverUnclosedSegment(QuorumJournalManager.java:345)
        at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.recoverUnfinalizedSegments(QuorumJournalManager.java:455)
        at org.apache.hadoop.hdfs.server.namenode.JournalSet$8.apply(JournalSet.java:624)
        at org.apache.hadoop.hdfs.server.namenode.JournalSet.mapJournalsAndReportErrors(JournalSet.java:393)
        at org.apache.hadoop.hdfs.server.namenode.JournalSet.recoverUnfinalizedSegments(JournalSet.java:621)
        at org.apache.hadoop.hdfs.server.namenode.FSEditLog.recoverUnclosedStreams(FSEditLog.java:1439)
        at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.startActiveServices(FSNamesystem.java:1112)
        at org.apache.hadoop.hdfs.server.namenode.NameNode$NameNodeHAContext.startActiveServices(NameNode.java:1715)
        at org.apache.hadoop.hdfs.server.namenode.ha.ActiveState.enterState(ActiveState.java:61)
        at org.apache.hadoop.hdfs.server.namenode.ha.HAState.setStateInternal(HAState.java:64)
        at org.apache.hadoop.hdfs.server.namenode.ha.StandbyState.setState(StandbyState.java:49)
        at org.apache.hadoop.hdfs.server.namenode.NameNode.transitionToActive(NameNode.java:1588)
        at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.transitionToActive(NameNodeRpcServer.java:1500)
        at org.apache.hadoop.ha.protocolPB.HAServiceProtocolServerSideTranslatorPB.transitionToActive(HAServiceProtocolServerSideTranslatorPB.java:107)
        at org.apache.hadoop.ha.proto.HAServiceProtocolProtos$HAServiceProtocolService$2.callBlockingMethod(HAServiceProtocolProtos.java:4460)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616)
        at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049)
        at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:415)
        at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698)
        at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043)

После этого, когда я проверил папку tmp /, все изменения были записаны туда, а VERSION отсутствует в ней. Затем я скопировал VERSION из namenode и изменил имя узла и blockid в нем. Потом началось наменоде. Но все правки были записаны в папку / tmp

В Наменоде, где был указан путь редактирования журнала. Как это изменить без форматирования. Пожалуйста, помогите

...