hadoop 2.7.4 테스트 클러스터 운영 중에 2대의 데이터노드가 shutdown 됐던 적이 있었습니다. 디스크 고장으로 인해 데이터노드 volume에 문제가 생긴 것이 원인이었습니다.
원인 파악
1. 데이터노드 로그(/var/log/hadoop-hdfs/hadoop-hdfs-datanode-mnode4.dev.com.log)를 확인해보니 데이터노드의 volume(/data1/hdfs/data)에 문제가 생겼다네요.
(참고) 데이터노드는 volume(로컬디스크)에 block 데이터를 저장합니다.
2018-05-29 10:53:44,775 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode:mnode4.dev.com:50010 2018-05-29 10:53:44,775 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Removed volume: /data1/hdfs/data/current 2018-05-29 10:53:44,844 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: DataNode.handleDiskError: Keep Running: false 2018-05-29 10:53:45,798 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Removing block pool BP-2063310560-172.31.200.49-1521439480841 2018-05-29 10:53:47,800 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Exiting Datanode |
2. 그래서 데이터노드의 시스템로그(/var/log/messeges)를 확인해보니 문제가 생긴 볼륨 (/data1/~~)에 마운트 되어 있는 디스크(/dev/sdb1)가 고장이 났었습니다. 하드웨어 문제였던 것입니다.
3. /etc/hadoop/conf/hdfs-site.xml 설정값 중 dfs.datanode.failed.volumes.tolerated 이 0으로 설정되어 있었기 때문에 volume 하나에 문제가 생겨도 datanode 서비스가 멈추게됩니다.
조치
HDFS 설정에서 장애가 있는 볼륨(/data1)을 제거하였습니다. (디스크 교체 후에는 다시 붙여야겠죠!)
- dfs.datanode.data.dir 설정 (/etc/hadoop/conf/hdfs-site.xml)
<before>
<property> <name>dfs.datanode.data.dir</name> <value>file:/data1/hdfs/data, file:/data2/hdfs/data, file:/data3/hdfs/data, file:/data4/hdfs/data, file:/data5/hdfs/data, file:/data6/hdfs/data, file:/data7/hdfs/data, file:/data8/hdfs/data, file:/data9/hdfs/data,file:/data10/hdfs/data</value> </property> |
<after>
<property> <name>dfs.datanode.data.dir</name> <value>file:/data2/hdfs/data, file:/data3/hdfs/data, file:/data4/hdfs/data, file:/data5/hdfs/data, file:/data6/hdfs/data, file:/data7/hdfs/data, file:/data8/hdfs/data, file:/data9/hdfs/data,file:/data10/hdfs/data</value> </property> |
- datanode 재시작
# service hadoop-hdfs-datanode start
참고사항
1.
데이터노드 volume이 여러개 잡혀있는 경우라면 dfs.datanode.failed.volumes.tolerated 설정값을 0보다 높게 잡는 것도 고려해볼만 할 것 같습니다. volume이 1개만 고장나도 데이터노드가 꺼지는 현상을 막고 싶다면요!
2.
hadoop 2.4 버전에서는 dfs.datanode.data.dir 설정을 변경한 후 데이터노드를 재시작했는데 네임노드가 갖고 있는 정보와 불일치되는 현상이 있다고 합니다.(볼륨을 제거했는데 네임노드는 여전히 해당 볼륨에 데이터가 있다고 인식함) 자세한 내용은 링크를 참고해주세요.
'BigData 기술 > Hadoop' 카테고리의 다른 글
Hadoop 클러스터 구축 과정 (4) | 2021.04.01 |
---|---|
[HDFS] 네임노드 구동과정 (Namenode Startup Process) (8) | 2021.01.05 |
[HDFS] Block Pool 개념 정리 (8) | 2021.01.04 |
[HDFS] 하둡 Balancer 과정 (1060) | 2020.07.20 |
[HDFS] Rack Awareness 란 (911) | 2020.07.15 |
댓글