HDFS CLI 명령어 실전 활용 가이드

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

태그: HDFS hadoop Big Data Data Engineering Distributed Storage

7월 12일 17:33에 게시됨