본문 바로가기
빅데이터/hadoop

[hdfs] HA 구성된 HDFS의 journalnode 3대 중 1대의 서버가 장애가 발생했을 때 대응 (Journal Storage Directory /hadoop/hdfs/journal/edit/user-hadoop not formatted ; journal id: user-hadoop)

by hs_seo 2024. 7. 18.

장애 상황

HA 구성 된 하둡은 3대의 저널 노드(journalnode)를 필요로 하는데 그 중 1대의 노드에 장애가 발생하여 서버가 포맷 되었습니다. 이로 인해 1대의 저널 노드를 새로 구축해야 하는 상황이 되었습니다.

 

오류를 해결하기 위해서 서버를 새로 설치하고 실행하니 다음과 같은 오류가 발생하였습니다.

 

2024-07-18 06:31:25,405 INFO org.apache.hadoop.ipc.Server (IPC Server handler 3 on default port 8485): IPC Server handler 3 on default port 8485, call Call#944181936 Retry#0 org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocol.startLogSegment from 10.189.162.52:37885
org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal Storage Directory /hadoop/hdfs/journal/edit/user-hadoop not formatted ; journal id: user-hadoop
    at org.apache.hadoop.hdfs.qjournal.server.Journal.checkFormatted(Journal.java:516)
    at org.apache.hadoop.hdfs.qjournal.server.Journal.startLogSegment(Journal.java:557)
    at org.apache.hadoop.hdfs.qjournal.server.JournalNodeRpcServer.startLogSegment(JournalNodeRpcServer.java:178)
    at org.apache.hadoop.hdfs.qjournal.protocolPB.QJournalProtocolServerSideTranslatorPB.startLogSegment(QJournalProtocolServerSideTranslatorPB.java:188)
    at org.apache.hadoop.hdfs.qjournal.protocol.QJournalProtocolProtos$QJournalProtocolService$2.callBlockingMethod(QJournalProtocolProtos.java:26743)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:528)
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:498)
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1038)
    at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:1003)
    at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:931)
    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:1938)
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2855)

 

해결 방법

저널 노드가 포맷되지 않아서 발생한 오류인데, 이미 HDFS가 실행 중이고 동작하는 상황이기 때문에 다시 포맷하거나, 초기화를 하기에는 부담 스러운 상황이었습니다.

 

그래서 기존에 동작하는 저널노드의 디렉토리에서 VERSION 파일의 내용을 동일하게 복사하여 주고, 저널노드를 실행하여 문제를 해결할 수 있었습니다.

 

다음과 같이 hdfs-site.xml 에 설정한 저널노드의 경로에 가면 VERSION 파일이 존재합니다. HDFS 구성을 위한 메타 정보가 들어 있는 파일인데 이 파일의 내용을 cat 명령으로 확인하여, 장애가 발생한 노드에 동일하게 생성하고 실행하면 됩니다.

 

deploy@host-10-0-0-1:/hadoop/hdfs/journal/edit/user-hadoop/current$ ll
total 20
drwxr-xr-x 2 deploy deploy 4096 Jul 18 06:33 ./
drwxr-xr-x 3 deploy deploy 4096 Jul 18 06:33 ../
-rw-r--r-- 1 deploy deploy  167 Jul 18 06:33 VERSION
-rw-r--r-- 1 deploy deploy    8 Jul 18 06:33 committed-txid
-rw-r--r-- 1 deploy deploy    2 Jul 18 06:32 last-promised-epoch
반응형