HDFS(Hadoop Distributed File System)는 대용량 데이터를 분산 저장하고 처리하는 핵심 인프라입니다. 본 문서에서는 실무에서 자주 사용하는 HDFS 셸 명령어를 정리합니다.
디렉터리 탐색
파일 시스템 구조를 확인하는 기본 명령어입니다.
# 루트 디렉터리 목록 조회
hdfs dfs -ls /
# 하위 디렉터리까지 재귀적으로 조회
hdfs dfs -ls -R /
디렉터리 생성
계층 구조를 한 번에 생성할 수 있습니다.
# /data/logs 경로 생성 (상위 경로가 없으면 자동 생성)
hdfs dfs -mkdir -p /data/logs
파일 전송
업로드 (Local → HDFS)
# 단순 업로드
hdfs dfs -put local_data.csv /data/input/
# 업로드 시 이름 변경
hdfs dfs -put local_data.csv /data/input/processed.csv
# 여러 파일 일괄 업로드
hdfs dfs -put *.log /data/logs/
다운로드 (HDFS → Local)
# 현재 디렉터리로 다운로드
hdfs dfs -get /data/output/result.json ./
# 다운로드 시 이름 지정
hdfs dfs -get /data/output/result.json ./final_result.json
파일 및 디렉터리 삭제
삭제 명령은 되돌릴 수 없으므로 주의가 필요합니다.
# 파일 삭제
hdfs dfs -rm /data/temp/tempfile.txt
# 비어있지 않은 디렉터리 재귀 삭제
hdfs dfs -rm -r /data/temp
# 휴지통 없이 즉시 삭제 (주의)
hdfs dfs -rm -skipTrash /data/large_file.bin
파일 이동 및 복사
이동
# 단일 파일 이동
hdfs dfs -mv /data/staging/raw.csv /data/archive/
# 디렉터리 전체 이동
hdfs dfs -mv /data/staging/ /data/processed/
복사
# 단일 파일 복사
hdfs dfs -cp /data/source/file.parquet /data/backup/
# 동일 클러스터 내 대용량 복사는 distcp 권장
대용량 데이터 복사: distcp
클스터 간 또는 대용량 데이터 복사에 적합한 MapReduce 기반 도구입니다.
# 기본 사용법
hadoop distcp hdfs://source-namenode:8020/data/source hdfs://target-namenode:8020/data/target
# CRC 검사 생략 (클러스터 간 복사 시 권장)
hadoop distcp -skipcrccheck hdfs://cluster-a/data hdfs://cluster-b/data
# 오류 발생 시 계속 진행
hadoop distcp -i hdfs://source/data hdfs://target/data
# 대역폭 제한 (단위: MB/s)
hadoop distcp -bandwidth 50 hdfs://source/data hdfs://target/data
# 복제본 수 지정
hadoop distcp -m 10 -update hdfs://source/data hdfs://target/data
| 옵션 | 설명 |
|---|---|
| -skipcrccheck | 체크섬 검증 생략 |
| -i | 개별 복사 실패 무시 |
| -update | 대상보다 최신인 파일만 복사 |
| -delete | 대상에만 존재하는 파일 삭제 |
| -m | 맵 태스크 수 (기본 20) |
용량 및 메타데이터 조회
디스크 사용량
# 하위 항목별 상세 용량 (human-readable)
hdfs dfs -du -h /data/warehouse
# 디렉터리 전체 총합만 표시
hdfs dfs -du -s -h /data/warehouse
파일 개수 통계
# 기본 통계: DIR_COUNT, FILE_COUNT, SIZE, PATH
hdfs dfs -count /data/warehouse
# 단위 변환 적용
hdfs dfs -count -h /data/warehouse
# 쿼터 정보 포함 (제한, 사용량 등)
hdfs dfs -count -q /data/warehouse
파일 내용 확인
# 텍스트 파일 출력
hdfs dfs -cat /data/logs/app.log
# 압축 파일 자동 해제 출력
hdfs dfs -text /data/logs/app.log.gz
# 앞부분만 확인 (로컬 head 유사)
hdfs dfs -cat /data/large_file.txt | head -n 100
# 뒷부분만 확인 (블록 단위로 효율적)
hdfs dfs -tail /data/logs/streaming.log
빈 파일 생성
# 길이 0인 파일 생성
hdfs dfs -touchz /data/processed/_SUCCESS
접근 권한 관리
권한 변경
# 특정 파일 권한 설정
hdfs dfs -chmod 644 /data/public/dataset.csv
# 디렉터리 재귀 적용
hdfs dfs -chmod -R 755 /data/public/
소유자 변경
# 사용자 및 그룹 동시 변경
hdfs dfs -chown analytics:bi_team /data/reports/
# 하위 항목 모두 변경
hdfs dfs -chown -R analytics:bi_team /data/reports/
고급 활용 팁
여러 명령어 조합
# 특정 패턴 파일 삭제
hdfs dfs -ls /data/temp/ | grep ".tmp" | awk '{print $8}' | xargs -I {} hdfs dfs -rm {}
# 오래된 데이터 정리 (30일 이상)
hdfs dfs -ls -R /data/logs/ | awk '$6 " " $7 < "'$(date -d "30 days ago" +"%Y-%m-%d")'" {print $8}' | xargs hdfs dfs -rm
네임스페이스 조회
# 파일시스템 상태 확인
hdfs dfsadmin -report
# 특정 디렉터리 저장 위치 확인
hdfs fsck /data/critical -files -blocks -locations