반응형
1. 에러의 원인
- wsl 에서 간단한 spark 테스트를 위해 hadoop 을 설치했으나 datanode 와 namenode 의 clusterID 가 달라 벌어진 현상
- 평상시에는 가상환경 3개를 나누어 데이터 노드, 네임노드를 따로설정하기에 별 문제가 없지만 이번 경우에는 하나의 가상환경에서 테스트를 진행하는 것이기에 데이터 노드와 네임노드가 한곳에 위치했었다.
- 하지만 hadoop 을 설정하는 과정에서 하둡이 자연스럽게 데이터 노드와 네임노드의 clusterID 를 다르게 설정했고, 이로인해 한곳의 장소에서 두개의 다른 아이디가 뜨니 hadoop 입장에서는 에러를 때려서 데이터 노드를 꺼버린 것
2. 해결 방법
1) hadoop log 확인
- 나의 경우에는 hadoop 에 있는 데이터노드의 로그를 체크했다.
2) 로그에서 아래의 에러를 발견했다.
org.apache.hadoop.hdfs.server.common.Storage: java.io.IOException: Incompatible clusterIDs
대충 클러스터 아이디가 겹쳐서 에러가 뜬다는 이야기 이다.
3) root 계정으로 들어가 네임 노드와 클러스터 아이디 일치시킴
- 경로는 /tmp 에 존재하는데 각 계정마다 hadoop- 뒤에 붙는 이름이 다를수 있지만 그 외 경로는 똑같다
- 나는 hadoop- 뒤 이름을 root 로 설정했기에 root 로 했다
- VERSION 에 들어가서 데이터 노드의 클러스터 아이디와 네임노드의 클러스터 아이디를 변경하면 된다.
- 나는 네임노드로 들어갔으니 데이터 노드의 클러스터 아이디와 일치시켰다.
4) /tmp/hadoop-(이름)/dfs 내 data 디렉토리 삭제
- 변경이 일어났으니 기존에 존재하는 data 디렉토리를 삭제해주는 것이 좋다
5) 실행중인 하둡 종료 후, 하둡 포멧하고 다시 시작
- 실행중인 hadoop, yarn 등 서비스들을 종료하고 hadoop을 다시 cli로 포멧해준다
- 그리고 jps 를 입력하면 데이터 노드가 잘 떠잇을 것이다.
3. 참고 링크
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=thislover&logNo=220903444238
https://stackoverflow.com/questions/22316187/datanode-not-starts-correctly
반응형