Hadoop HDFS 클러스터를 오랜 기간 운영하다 보면 특정 DataNode에만 데이터가 쏠리는 용량 불균형 현상이 발생할 수 있습니다.
이 경우 읽기/쓰기 성능 저하, 일부 노드의 과부하, 디스크 부족 등이 발생할 수 있으며, HDFS의 장점인 분산성이 약해지게 됩니다.
이를 해결하는 대표적인 방법이 바로 👉 HDFS 리밸런서(Rebalancer) 도구를 사용하는 것입니다.
이 글에서는 Hadoop HDFS에서 리밸런싱이 필요한 이유부터 실행 방법, 주의사항까지 실무 기준으로 깔끔하게 정리해드립니다. 👇
📉 1. 왜 리밸런싱이 필요할까?
HDFS는 데이터를 여러 DataNode에 자동으로 분산 저장하지만,
- 새로운 노드가 추가되었거나,
- 일부 노드의 장애로 인해 블록이 치우쳤거나,
- 불규칙한 파일 업로드로 쏠림이 생긴 경우
👇 이런 상황에서는 일부 노드의 사용량이 80%까지 올라가고, 나머지는 20%로 남는 불균형이 발생합니다.
🔧 해결책: hdfs balancer 명령어를 사용한 자동 블록 재배치
🛠️ 2. 리밸런싱 명령어 실행 방법
hdfs balancer
📌 기본 실행 시 클러스터 전체의 평균 사용률을 기준으로 10% 이내 편차가 되도록 블록을 이동시킵니다.
⚙️ 3. 주요 옵션 설명
hdfs balancer -threshold 5
- -threshold: 허용되는 노드 간 사용량 편차(%)
👉 기본값: 10, 낮출수록 더 균등하게 만듦
👉 예: 5로 설정 시 사용률 5% 이내로 맞춤
hdfs balancer -policy datanode
- -policy: 블록 이동 기준 정책 (기본은 datanode)
hdfs balancer -include file.txt hdfs balancer -exclude file.txt
- 특정 노드만 포함하거나 제외할 수 있음
🚀 4. 실행 예시
hdfs balancer -threshold 7
👉 평균 사용률에서 ±7% 이내로 자동 정리
📊 5. 실행 중 상태 확인
hdfs dfsadmin -report
👉 DataNode별 사용량 및 총 디스크 상태 확인 가능
⚠️ 6. 주의사항
- 리밸런싱은 디스크/네트워크 I/O를 많이 사용하므로
💡 비사용 시간대 (야간, 주말) 에 실행하는 것을 추천합니다. - 중간에 멈추더라도 다시 실행 시 이어서 수행됩니다.
- 리밸런서가 실행 중일 때 다른 작업의 성능이 영향을 받을 수 있음
✅ 마무리 요약
| 항목 | 설명 |
| 목적 | HDFS 블록을 DataNode에 균등 분산 |
| 명령어 | hdfs balancer |
| 주기적 실행 여부 | ✳️ 필요 시만 수동 실행 (정기적 모니터링 권장) |
| 권장 시점 | 서버 사용량이 낮은 야간 또는 주말 |
| 실행 조건 | Hadoop NameNode, DataNode가 모두 정상 상태일 때 |