사용하는 데이터 노드를 빼고 다른용도로 사용할 일이 생겼다.
기본적으로 하둡은 장애에 강하기 때문에 그냥 데이터 노드를 죽이고 꺼도 알라서 replication 이 일어나기 때문에 문제가 없다.
하지만 더욱 graceful 하게 처리를 하고 싶다면 아래와 같이 하면된다.
1. datanode 대상 수정
– conf/slaves에 datanode 으로 사용하지 않을 장비목록 삭제
1 2 3 4 5 |
]$ cat $HADOOP_HOME/conf/slaves hadoop001 hadoop002 .... hadoop024 |
– conf/excludes에 datanode 으로 사용하지 않을 장비목록 작성
1 2 3 4 |
]$ cat $HADOOP_HOME/conf/excludes hadoop025 hadoop026 hadoop027 |
2. conf/hdfs-site.xml
1 2 3 4 5 6 7 8 |
]$ cat $HADOOP_HOME/conf/hdfs-site.xml <?xml version="1.0"?> ..... <property> <name>dfs.hosts.exclude</name> <value>conf/excludes</value> </property> ..... |
3. 데이터 노드 목록 갱신
1 |
]$ ./bin/hadoop dfsadmin -refreshNodes |
그리고 네임노드 웹UI( http://namenode:50070/dfshealth.jsp )에서 datanode 가 줄어든것을 확인하고
장비가 down 되면서 Number of Under-Replicated Blocks 이 발생한 것을 확인하고,
Number of Under-Replicated Blocks 블럭이 줄어들면서 다른 datanode 으로 복제가 일어나고 있는 것도 확인
단, 한번에 한 장비씩 빼야하며, 하나의 데이터노드를 제거 후 Number of Under-Replicated Blocks이 0이 되면 다음 장비를 빼면 된다.
한 번에 여러대의 데이터노드를 빼개되면 Missing Block 이 발생할수 있으니 주의!!