hadoop fs 명령어 정리

■ 참조 Hadoop File System Shell Guide.
 

■ appendToFile : 로컬 시스템의 파일을 기존에 존재하는 hdfs 파일시스템의 파일에 붙인다.
bash$ hadoop fs -appendToFile [로컬 시스템의 파일] [HDFS 파일시스템 디렉토리] /[파일명]

bash$ hadoop fs -touchz /data/test/sample.txt
bash$ hadoop fs -ls -R /data/test
-rw-r--r--   3          0 /data/test/sample.txt
bash$ hadoop fs -usage appendToFile
Usage: hadoop fs [generic options] -appendToFile <localsrc> ... <dst>
bash$ hadoop fs -appendToFile license.txt /data/test/sample.txt
[nextman@centos01 script]$ hadoop fs -ls /data/test
Found 1 items
-rw-r--r--   3      15459 /data/test/sample.txt

 

■ cat : [파일명] 의 내용을 출력한다.
bash$ hadoop fs -cat /data/[파일명]
 

■ chgrp : 파일의 소유 그룹을 변경한다. ‘-R’ 옵션을 추가하면 디렉토리 하위의 모든 디렉토리와 파일의 소유 그룹을 변경한다.
bash$ hadoop fs -chgrp [변경할 그룹] [변경할 디렉토리 혹은 파일]

bash$ hadoop fs -ls /data/test
Found 2 items
-rw-r--r--   3 nextman supergroup /data/test/sample.log
-rw-r--r--   3 nextman supergroup /data/test/sample.txt
bash$ hadoop fs -chgrp root /data/test/sample.log
bash$ hadoop fs -ls /data/test
Found 2 items
-rw-r--r--   3 nextman root       /data/test/sample.log
-rw-r--r--   3 nextman supergroup /data/test/sample.txt
bash$ hadoop fs -chgrp root /data/test/*
bash$ hadoop fs -ls /data/test
Found 2 items
-rw-r--r--   3 nextman root /data/test/sample.log
-rw-r--r--   3 nextman root /data/test/sample.txt
bash$ hadoop fs -chgrp supergroup /data/test/*
bash$ hadoop fs -ls /data/test
Found 2 items
-rw-r--r--   3 nextman supergroup /data/test/sample.log
-rw-r--r--   3 nextman supergroup /data/test/sample.txt

 

■ chmod : 파일의 모드(drwxrwxrwx)를 변경한다. ‘-R’ 옵션을 사용하면 하위 디렉토리에도 같이 반영된다.
bash$ hadoop fs -chmod [MODE CHANGE RULE] [hdfs 파일시스템 디렉토리 혹은 파일명]

bash$ hadoop fs -ls /data/test/sample.log
-r--r--r--   3 913785 /data/test/sample.log
bash$ hadoop fs -chmod +w /data/test/sample.log
bash$ hadoop fs -ls /data/test/sample.log
-rw-rw-rw-   3 913785  /data/test/sample.log
bash$ hadoop fs -chmod o-w /data/test/sample.log
bash$ hadoop fs -ls /data/test/sample.log
-rw-rw-r--   3 913785 /data/test/sample.log
bash$ hadoop fs -chmod 755 /data/test/sample.log
bash$ hadoop fs -ls /data/test/sample.log
-rwxr-xr-x   913785 /data/test/sample.log

 

■ chown : 파일의 소유권을 변경한다. ‘-R’ 옵션을 사용하면 하위 디렉토리에도 같이 반영된다.
bash$ hadoop fs -chown [이전할 소유자] [hdfs 파일시스템 디렉토리 혹은 파일명]

$ hadoop fs -chown root /data/test/sample.log
bash$ hadoop fs -ls /data/test/sample.log
-rwxr-xr-x   3 root root     913785 2016-03-13 17:57 /data/test/sample.log
bash$ hadoop fs -ls /data/test
Found 2 items
-rwxr-xr-x   3 root    root /data/test/sample.log
-rw-r--r--   3 nextman root /data/test/sample.txt
bash$ hadoop fs -ls -R /data/test
-rwxr-xr-x   3 root    root /data/test/sample.log
-rw-r--r--   3 nextman root /data/test/sample.txt
bash$ hadoop fs -ls -R /data
drwxr-xr-x   - nextman root /data/test
-rwxr-xr-x   3 root    root /data/test/sample.log
-rw-r--r--   3 nextman root /data/test/sample.txt
drwxr-xr-x   - nextman root /data/wiki
drwxr-xr-x   - nextman root /data/wiki/input
drwxr-xr-x   - nextman root /data/wordcount
drwxr-xr-x   - nextman root /data/wordcount/input
-rw-r--r--   3 nextman root /data/wordcount/input/sample.txt
drwxr-xr-x   - nextman root /data/wordcount/output

 

■ copyFromLocal : 로컬 파일시스템에서 HDFS 파일 시스템으로 파일 복사(-copyFromLocal), /home/nextman/sample.txt : 로컬 파일 시스템의 디렉토리, /data/wordcount/input : HDFS 파일 시스템의 디렉토리.
bash$ hadoop fs -copyFromLocal [로컬파일시스템 디렉토리]/[파일명] [HDFS 파일시스템 디렉토리]/
bash$ hadoop fs -copyFromLocal /home/nextman/sample.txt /data/wordcount/input
 

■ copyToLocal : HDFS 파일시스템에서 로컬 파일 시스템으로 파일 복사(-copyToLocal), /data/wordcount/input/sample.txt : HDFS 파일 시스템의 파일, /home/nextman/tmp : 로컬 시스템의 파일 디렉토리.
bash$ hadoop fs -copyToLocal [HDFS 파일시스템 디렉토리] /[파일명] [로컬파일시스템 디렉토리] /
bash$ hadoop fs -copyToLocal /data/wordcount/input/sample.txt /home/nextman/tmp
 

■ cp : HDFS 파일시스템내에서 파일을 복사한다. -f 옵션은 목적지 디렉토리에 같은 파일이 있을 경우 덮어 쓴다.
bash$ hadoop fs -cp [HDFS 파일시스템 파일] [HDFS 파일시스템 디렉토리]

 

■ df : 디렉토리의 여유 저장 공간을 알려준다. -h 옵션을 추가하면 사람이 읽기 쉽게 보여준다.
bash$ hadoop fs -df [HDFS 파일시스템 디렉토리]
bash$ hadoop fs -df -h [HDFS 파일시스템 디렉토리]

bash$ hadoop fs -df /data
Filesystem                    Size     Used     Available  Use%
hdfs://centos01:9000  701299851264  6529024  662186717184    0%
bash$ hadoop fs -df -h /data
Filesystem               Size   Used  Available  Use%
hdfs://centos01:9000  653.1 G  6.2 M    616.7 G    0%

 

■ du : 지정한 디렉토리의 하위 디렉토리가 사용하고 있는 데이터의 크기를 알려준다. -h 옵션을 추가하면 사람이 읽기 쉽게 보여주고 -s 옵션은 그 디렉토리 자체(자식포함)의 디스크 사용량을 알려준다.
bash$ hadoop fs -du [HDFS 파일시스템 디렉토리]
bash$ hadoop fs -du -h [HDFS 파일시스템 디렉토리]
bash$ hadoop fs -du -s [HDFS 파일시스템 디렉토리]

$ hadoop fs -du /data
1858488  /data/test
0        /data/wiki
47898    /data/wordcount
bash$ hadoop fs -du -s /data
1906386  /data
bash$ hadoop fs -du -h /data
1.8 M   /data/test
0       /data/wiki
46.8 K  /data/wordcount

 

■ dus : 이 명령어는 deprecated되었다. 대신 du -s 명령어를 사용하면 된다.
 

■ get : hdfs 파일시스템의 파일을 로컬 파일시스템으로 복사한다. 아래의 예에서는 hdfs 파일시스템의 ‘/data/test’디렉토리의 ‘sample.txt’ 파일을 로컬 파일시스템의 ‘/home/nextman’ 디렉토리에 ‘xx.txt’라는 파일명으로 복사한다.
bash$ hadoop fs -get [hdfs 파일시스템의 파일] [로컬 파일시스템의 파일]

$ hadoop fs -get /data/test/sample.txt /home/nextman/xx.txt

 

■ help : hdfs 파일 시스템 관련 도움말을 확인한다
bash$ hadoop fs -help
 

■ ls -R : hdfs 파일 시스템의 ‘/data’ 디렉토리의 파일 리스트를 조회한다. 2번째처럼 ‘-R’ 옵션을 추가하면 하위 디렉토리를 포함한 전체 파일 리스트를 확인할 수 있다.
bash$ hadoop fs -ls /data
bash$ hadoop fs -ls -R /data
 

■ mkdir : ‘/'(root) 디렉토리 하위에 ‘data’ 디렉토리를 생성한다.
bash$ hadoop fs -mkdir /data
 

■ moveFromLocal : put 명령어와 유사하며 로컬 시스템의 파일이 hdfs파일 시스템으로 복사가 된 후 로컬 시스템의 파일은 삭제된다.
bash$ hadoop fs -moveFromLocal [로컬 파일시스템의 파일] [hdfs 파일시스템의 디렉토리]
 

■ moveToLocal : 아직 구현이 되지 않았다.(not implemented)

$ hadoop fs -moveToLocal /data/test/sample.txt
moveToLocal: Option '-moveToLocal' is not implemented yet.

 

■ mv : hdfs 파일 시스템내에서 디렉토리 혹은 파일(들)을 이동한다.
bash$ hadoop fs -mv [hdfs 파일시스템의 디렉토리 혹은 파일] [hdfs 파일시스템의 디렉토리]

bash$ hadoop fs -ls -R /data
drwxr-xr-x   -          0 2016-03-13 17:57 /data/test
-rw-r--r--   3     913785 2016-03-13 17:57 /data/test/sample.log
-rw-r--r--   3     944703 2016-03-13 17:14 /data/test/sample.txt
drwxr-xr-x   -          0 2016-03-09 07:40 /data/wiki
drwxr-xr-x   -          0 2016-03-09 07:40 /data/wiki/input
bash$ hadoop fs -mv /data/wiki /data/test
bash$ hadoop fs -ls -R /data
drwxr-xr-x   -          0 2016-03-13 18:17 /data/test
-rw-r--r--   3     913785 2016-03-13 17:57 /data/test/sample.log
-rw-r--r--   3     944703 2016-03-13 17:14 /data/test/sample.txt
drwxr-xr-x   -          0 2016-03-09 07:40 /data/test/wiki
drwxr-xr-x   -          0 2016-03-09 07:40 /data/test/wiki/input

 

■ put : 로컬 파일시스템의 파일을 hdfs 파일시스템으로 복사한다. copyFromLocal 명령어와 유사하다.
bash$ hadoop fs -put [로컬시스템의 파일] [hdfs 파일시스템의 디렉토리]

hadoop fs -put sample.log /data/test

 

■ rm : [파일명] 을 삭제한다.
bash$ hadoop fs -rm /data/[파일명]
 

■ rm -r : 디렉토리 삭제 명령어. -r 옵션은 삭제하려는 디렉토리에 파일이 있더라도 삭제한다.
bash$ hadoop fs -rm -r /home/data/hadoop/dfs/data/wordcount2
 

■ rmdir : ‘data’ 디렉토리를 삭제한다. 만약 삭제하려는 ‘data’디렉토리 하위에 디렉토리나 파일이 있으면 ‘data’디렉토리를 삭제하지 않는다.
bash$ hadoop fs -rmdir /data
 

■ rmr : 이 명령어는 deprecated 되었다. 대신 rm -r 명령어를 사용하자.
 

■ tail : 파일의 마지막 1 kilobyte를 stdout(표준출력, 콘솔)에 표시한다. ‘-f’ 옵션은 파일이 계속 증가하는 경우에 확인하기 편리하다.
bash$ hadoop fs -tail [HDFS시스템 파일명]
bash$ hadoop fs -tail -f [HDFS시스템 파일명]

bash$ hadoop fs -tail -f /data/test/sample.txt

 

■ touchz : 파일 크기가 0인 파일을 생성한다.
bash$ hadoop fs -touchz [생성할 HDFS시스템 파일명]
bash$ hadoop fs -touchz /data/test/sample.txt

bash$ hadoop fs -touchz /data/test/sample.txt
bash$ hadoop fs -ls /data/test/sample.txt
-rw-r--r--   3          0 /data/test/sample.txt

 

■ usage : hadoop fs의 각 명령어에 대한 간단한 사용법을 알 수 있다. 아래는 createSnapshot에 대한 사용법을 확인하고 있다.
bash$ hadoop fs -usage [명령어]

bash$ hadoop fs -usage createSnapshot
Usage: hadoop fs [generic options] -createSnapshot <snapshotDir> [<snapshotName>]

 
 
 

checksum
count
createSnapshot
deleteSnapshot
expunge

find
getfacl
getfattr
getmerge
renameSnapshot

setfacl
setfattr
setrep
stat
test

text
truncate

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다