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가 모두 정상 상태일 때