[AWS EMR Hadoop 실습] HDFS 명령어 실습

Hyunjun Kim·2025년 8월 14일
0

Data_Engineering

목록 보기
128/153

3 HDFS 명령어 실습

본 실습은 AWS EMR의 Primary(master) node 에서 진행한다.

HDFS 명령어의 공식 매뉴얼

HDFS DFS (distributed file system)의 공식 매뉴얼



3.1 디렉토리, 파일 조회

3.1.1 ls

디렉토리의 파일을 출력

hdfs dfs -ls /
  • For a file ls returns stat on the file with the following format: permissions number_of_replicas userid groupid filesize modification_date modification_time filename
  • For a directory it returns list of its direct children as in Unix. A directory is listed as: permissions userid groupid modification_date modification_time dirname

3.1.2 lsr

디렉토리와 하위디렉토리의 파일을 출력

hdfs dfs -lsr /

3.1.3 du

파일 용량을 확인

hdfs dfs -du -h /

3.1.4 dus

summary 용량을 확인

hdfs dfs -du -h -s /

3.1.5 cat

파일 내용을 출력 (텍스트만가능)

hdfs dfs -cat /user/hbase/.tmp/hbase-hbck.lock

3.1.6 text

파일 내용을 출력, 압축된 형태도 가능

hdfs dfs -text /user/hbase/.tmp/hbase-hbck.lock

3.1.7 mkdir

디렉토리 생성 mkdir

hdfs dfs -mkdir /data
hdfs dfs -mkdir /data/temp

확인

hdfs dfs -ls /

3.1.8 head, tail

파일의 시작 또는 끝부분의 1KB 를 확인

hdfs dfs -head /data/metadata/carriers.csv
hdfs dfs -tail /data/metadata/carriers.csv


3.2 파일 복사, 삭제

3.2.1 put, copyFromLocal

로컬에 있는 파일 또는 디렉토리를 HDFS 의 지정된 경로로 복사(업로드)한다.

2 에서 세팅한 디렉토리에서 수행

cd hadoop/example/datasource
hdfs dfs -put input /data
  • 1.5G 가량되므로 업로드에 꽤 오래걸린다.
hdfs dfs -ls /data
hdfs dfs -ls /data/input
hdfs dfs -copyFromLocal metadata /data
hdfs dfs -ls /data
hdfs dfs -ls /data/metadata

3.2.2 get

HDFS의 파일을 로컬로 복사(다운로드)한다.

  • checksum 숨김파일로 저장하고 이것을 이용해 무결성을 확인한다.
  • -crc 옵션으로 checksum 파일도 복사가능
  • -ignoreCrc 로 체크섬 무시
hdfs dfs -get /data/metadata/carriers.csv carriers-copied.csv

3.2.3 cp, copyToLocal

소스 디렉토리나 파일을 목적지로 복사한다.

hdfs dfs -cp /data/metadata/carriers.csv /data/metadata/carriers-2.csv

확인

hdfs dfs -ls /data/metadata

3.2.4 getmerge

지정한 경로의 모든 파일을 합치고, 로컬 파일시스템에 하나의 파일로 복사(다운로드)한다.

hdfs dfs -getmerge -skip-empty-file -nl /data/metadata/carriers-origin.csv /data/metadata/carriers.csv carriers-merged.csv
  • -skip-empty-file 는 빈파일은 머지대상 제외
  • -nl 옵션은 파일을 newline 추가해서 구분

3.2.5 rm

unix 와 마찬가지로 파일을 삭제한다.

  • -R 은 하위 디렉토리로 recursively
hdfs dfs -rm $file

3.2.6 rmdir

디렉토리를 삭제한다.

hdfs dfs -rmdir /data/temp


3.3 권한 변경

3.3.1 chmod

경로에 대한 권한을 변경한다.

unix의 파일 권한 변경과 유사하다. 권한을 변경하려면 chmod 를 실행하는 사용자가 해당 파일의 소유자 또는 슈퍼유저일 떄만 수정이 가능하다. -R 옵션은 재귀적으로 적용된다.

hdfs dfs -ls /data/metadata/carriers-2.csv
hdfs dfs -chmod 777 /data/metadata/carriers-2.csv
hdfs dfs -ls /data/metadata/carriers-2.csv

3.3.2 chown

파일이나 디렉토리의 소유권을 변경한다. -R 옵션은 재귀적으로 실행된다.

hdfs dfs -chown tester:testerGroup /data/metadata/carriers-2.csv
hdfs dfs -ls /data/metadata/carriers-2.csv

3.3.3 chgrp

파일이나 디렉토리의 소유권그룹만 변경한다.

hdfs dfs -chgrp testerGroup2 /data/metadata/carriers-2.csv
hdfs dfs -ls /data/metadata/carriers-2.csv


3.4 기타 util

3.4.1 toughz

0바이트 파일 생성

hdfs dfs -touchz /data/empty_file
hdfs dfs -ls /data
hdfs dfs -head /data/empty_file

3.4.2 stat

경로에 대한 자세한 통계를 조회한다.

hdfs dfs -stat $foramt $file

format에는 다음 옵션을 쓸수 있다.

Format accepts permissions in octal (%a) and symbolic (%A), filesize in bytes (%b), type (%F), group name of owner (%g), name (%n), block size (%o), replication (%r), user name of owner(%u), access date(%x, %X), and modification date (%y, %Y). %x and %y show UTC date as “yyyy-MM-dd HH:mm:ss”, and %X and %Y show milliseconds since January 1, 1970 UTC. If the format is not specified, %y is used by default.

hdfs dfs -stat "size:%b type:%F filename:%n block_size:%o replication:%r m_date:%y" /data/input/2008.csv

3.4.3 setrep

복제 데이터 갯수 변경. -R 옵션으로 하위 디렉토리까지 적용.

hdfs dfs -setrep -w 3 /data/input/2008.csv

위 stat 명령의 %o 옵션으로 변경된 복제 갯수 확인

  • 복제 갯수는 hdfs-site.xml 의 dfs.replication 가 기본 설정이다.
  • EMR의 경우 /etc/hadoop/conf/hdfs-site.xml 에서 확인할 수 있다.

3.4.4 expunge

휴지통을 비운다. HDFS는 삭제한 파일을 바로 지우지 않고 일정기간 동안 휴지통에 보관하고 주기적으로 비운다. expunge 는 이 주기와 관계없이 휴지통을 비운다.

hdfs dfs -expunge

삭제 주기와 관련된 스펙은 매뉴얼, 매뉴얼2을 참고

profile
Data Analytics Engineer 가 되

0개의 댓글