ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HA 구성 클러스터에서 발생한 Journal Node 오류
    프로그래밍/hadoop 2018. 11. 15. 11:02
    728x90


    Test Cluster 에서 HA를 구성 했는데 뜬금없이 NameNode가 죽고 StandbyNamenode가 Namenode로 전환되는 일이 있었다.

    일단 원인은

    java.lang.Thread.run(Thread.java:745)
        Number of suppressed write-lock reports: 0
        Longest write-lock held interval: 22184
    

    Write-lock 이 걸린 것이다. 그로 인해

    org.apache.hadoop.ipc.RemoteException(java.io.IOException): IPC's epoch 10 is less than the last promised epoch 11
        at org.apache.hadoop.hdfs.qjournal.server.Journal.checkRequest(Journal.java:428)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.checkWriteRequest(Journal.java:456)
        at org.apache.hadoop.hdfs.qjournal.server.Journal.journal(Journal.java:351)
        at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.journal(JournalNodeRpcServer.java:152)
        at org.apache.hadoop.hdfs.qjournal.protocolPB.QJournalProtocolServerSideTranslatorPB.journal(QJournalProtocolServerSideTranslatorPB.java:158)
        at org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocolProtos$QJournalProtocolService$2.callBlockingMethod(QJournalProtocolProtos.java:25421)
        at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)
    

    대략 위와 같은 에러가 발생했다.

    HA 구성시 Journal Node 가 추가 되는데 이건 namenode가 hdfs에 파일 기록시 동기화를 맞추기 위한 일종의 기록 보관실이다.

    그래서 해당 namenode가 죽었을 때 standbynamenode가 전화 되면서 정확히 동기화 하여 실행 되는 것이다.

    그런데 위의 로그 내용을 보면 journal node에 기록 되어야 할 예약 번호가 있는데 10번이 11번 보다 늦었다고 나온다.

    즉 write-lock이 발생하면서 10번 보다 11번이 먼저 기록 되었고

    당연히 순서가 바뀌면서 에러가 발생

    결국은 OOM까지 발생한 것이다. 그러면서 재빨리 namenode를 전환 한 것이다.

    write-lock 문제는 정확히 알수가 없다는...

    빈번히 발생하면 관련 문제를 확인해 봐야 겠다.

    728x90
Designed by Tistory.