본 실습은 AWS EMR의 Primary(master) node 에서 진행한다.
HDFS 명령어의 공식 매뉴얼
HDFS DFS (distributed file system)의 공식 매뉴얼
디렉토리의 파일을 출력
hdfs dfs -ls /
permissions number_of_replicas userid groupid filesize modification_date modification_time filename
permissions userid groupid modification_date modification_time dirname
디렉토리와 하위디렉토리의 파일을 출력
hdfs dfs -lsr /
파일 용량을 확인
hdfs dfs -du -h /
summary 용량을 확인
hdfs dfs -du -h -s /
파일 내용을 출력 (텍스트만가능)
hdfs dfs -cat /user/hbase/.tmp/hbase-hbck.lock
파일 내용을 출력, 압축된 형태도 가능
hdfs dfs -text /user/hbase/.tmp/hbase-hbck.lock
디렉토리 생성 mkdir
hdfs dfs -mkdir /data
hdfs dfs -mkdir /data/temp
확인
hdfs dfs -ls /
파일의 시작 또는 끝부분의 1KB 를 확인
hdfs dfs -head /data/metadata/carriers.csv
hdfs dfs -tail /data/metadata/carriers.csv
로컬에 있는 파일 또는 디렉토리를 HDFS 의 지정된 경로로 복사(업로드)한다.
2 에서 세팅한 디렉토리에서 수행
cd hadoop/example/datasource
hdfs dfs -put input /data
hdfs dfs -ls /data
hdfs dfs -ls /data/input
hdfs dfs -copyFromLocal metadata /data
hdfs dfs -ls /data
hdfs dfs -ls /data/metadata
HDFS의 파일을 로컬로 복사(다운로드)한다.
hdfs dfs -get /data/metadata/carriers.csv carriers-copied.csv
소스 디렉토리나 파일을 목적지로 복사한다.
hdfs dfs -cp /data/metadata/carriers.csv /data/metadata/carriers-2.csv
확인
hdfs dfs -ls /data/metadata
지정한 경로의 모든 파일을 합치고, 로컬 파일시스템에 하나의 파일로 복사(다운로드)한다.
hdfs dfs -getmerge -skip-empty-file -nl /data/metadata/carriers-origin.csv /data/metadata/carriers.csv carriers-merged.csv
unix 와 마찬가지로 파일을 삭제한다.
hdfs dfs -rm $file
디렉토리를 삭제한다.
hdfs dfs -rmdir /data/temp
경로에 대한 권한을 변경한다.
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
파일이나 디렉토리의 소유권을 변경한다. -R 옵션은 재귀적으로 실행된다.
hdfs dfs -chown tester:testerGroup /data/metadata/carriers-2.csv
hdfs dfs -ls /data/metadata/carriers-2.csv
파일이나 디렉토리의 소유권그룹만 변경한다.
hdfs dfs -chgrp testerGroup2 /data/metadata/carriers-2.csv
hdfs dfs -ls /data/metadata/carriers-2.csv
0바이트 파일 생성
hdfs dfs -touchz /data/empty_file
hdfs dfs -ls /data
hdfs dfs -head /data/empty_file
경로에 대한 자세한 통계를 조회한다.
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
복제 데이터 갯수 변경. -R 옵션으로 하위 디렉토리까지 적용.
hdfs dfs -setrep -w 3 /data/input/2008.csv
위 stat 명령의 %o 옵션으로 변경된 복제 갯수 확인
dfs.replication
가 기본 설정이다./etc/hadoop/conf/hdfs-site.xml
에서 확인할 수 있다.휴지통을 비운다. HDFS는 삭제한 파일을 바로 지우지 않고 일정기간 동안 휴지통에 보관하고 주기적으로 비운다. expunge 는 이 주기와 관계없이 휴지통을 비운다.
hdfs dfs -expunge