본문 바로가기
Hadoop

HDFS 명령어 (feat. Ubuntu)

by 집못가는프로그래머 2021. 9. 7.

*앞에 hdfs dfs을 붙혀줌으로서 local system 명령어(리눅스)와 구분한다.*

e.g. (HDFS 명령어) hdfs dfs -ls  vs   ls  (Local 명령어)

 

<HDFS 디렉토리 만들기>

hdfs dfs -mkdir /user

*앞에 hdfs를 붙힌것은 리눅스 명령어가 아니라 hdfs(하둡) 명렁어를 사용한다는 의미

 

hdfs dfs -mkdir /user/tmp   -> 위에서 만든 /user 디렉토리 안에 tmp 디렉토리 생성

 

hdfs dfs -mkdir -p /user/data/csv  -> Local 명령어와는 다르게 HDFS에서는 디렉토리를 만들때 적어준 경로에 모든 부모 디렉토리가 존재해야 한다. 예를들어 csv디렉토리를 data 디렉토리 안에 만들때는 data가 존재하여야한다. Local에서는 자동으로 부모 디렉토리가 생성되지만 HDFS에서는 -p 를 적어줌으로서 없는 부모 디렉토리를 모두 만들 수 있다.

없는 부모 디렉토리에 대한 에러
-p 를 적어줌으로서 csv의 부모 디렉토리로 data가 자동 생성되었다


<HDFS 디렉토리 조회>

hdfs dfs -ls /   -> hdfs에서 관리중인 디렉토리 목록

 

hdfs dfs -ls -R /   -> (-R) 옵션을 이용하여 현 디렉토리 및 모든 하위 디렉토리의 리스트를 표시


<HDFS 파일 옮기기>

hdfs dfs -copyFromLocal '로컬파일경로' '옮기고자하는 hdfs디렉토리 경로'

-> Local 디렉토리에 있는 파일을 HDFS관리 디렉토리로 옮기는 명령어 (-copyFromLocal)

e.g. hdfs dfs -copyFromLocal sample/test.txt /user/    -> Local의 sample디렉토리의 test.txt 파일을  HDFS 디렉토리의 /user 안에 test.txt라는 이름으로 복사해온다(이름을 따로 지정 가능)

 

hdfs dfs -put 옮길파일(로컬) 옮길위치(hdfs)   =  hdfs dfs -copyFromLocal 옮길파일(로컬) 옮길위치(hdfs)

 

hdfs dfs -copyToLocal 'hdfs경로' '로컬경로'

-> HDFS 디렉토리에서 Local 디렉토리로 파일을 복사함

e.g. hdfs dfs -copyToLocal /user/test.txt /sample/test2.txt  -> HDFS user디렉토리의 test.txt파일을 Local의 sample디렉토리 아래에 test2.txt라는 이름으로 파일을 복사한다

 

hdfs dfs -get 옮길파일(hdfs) 옮길위치(local)   =  -copyToLocal 옮길파일(hdfs) 옮길위치(local)


<HDFS 파일에 Local파일의 내용 추가(누적)>

hdfs dfs -appendToFile 로컬파일내용 hdfs파일   -> Local파일의 내용을 HDFS파일에 내용을 추가(누적) 한다

e.g. hdfs dfs -appendToFile test.txt /user/test.txt  -> Local의 현 디렉토리에 있는 test.txt파일의 내용을 HDFS user디렉토리의 test.txt파일에 누적(추가)한다

 

hdfs dfs -getmerge 복사할파일(hdfs) 누적할파일(local) < 반대 > hdfs dfs -appendToFile

 

hdfs dfs -cat /user/test.txt   -> /user/test.txt 파일의 내용을 표준출력


<HDFS 파일 권한 변경>

hdfs dfs -chmod (권한) (변경할 파일)  -> HDFS 영역 내 디렉토리의 권한 변경


<HDFS 영역 내에서 파일 복사>

hdfs dfs -mv /user/test.txt /user/data/   -> HDFS 내에서 user/test.txt 파일을 user/data/ 안에 test.txt로 옮긴다

or

hdfs dfs -cp

 

hdfs dfs -moveFromLocal 옮길파일(local) 옮길위치(hdfs) - 로컬 디렉토리의 파일을 HDFS 영역의 디렉토리로 옮긴다(복사x)


<HDFS 영역 내에서 디렉토리 삭제>

hdfs dfs -rm -r

hdfs dfs -rm

hdfs dfs -rmdir


<로컬에서 파일 압축하기> 

gzip 파일 

 

<HDFS 영역에서 파일 압축하기>

hdfs dfs -gzip 파일

 


<HDFS 영역에서 휴지통 관련 설정 변경>

nano $HADOOP_HOME/etc/hadoop/core-site.xml   -> core-site.xml 파일에 휴지통 관련 속성을 추가한다

<property>
    <name>fs.trash.interval</name>               
    <value>1440</value>                      <<< 쓰레기통 비우는 주기 1440(24시간)
</property>
<property>
    <name>fs.trash.checkpoint.interval</name>
    <value>120</value>                        <<< 쓰레기통 검사주기 120 (2시간)
</property>

 

hdfs dfs -expunge   -> 쓰래기통 비우기

 

hdfs dfs -rm -skipTrash 디렉토리명   -> 디렉토리가 삭제되어 휴지통으로 가지 않고 바로 완전 삭제됨

파일을 만들고 삭제된것이 확인된다

HDFS 쓰래기통 경로 :  /user/hdoop(HDFS 계정이름)/.Trash

쓰래기통 조회

hdfs dfs -mv (복원할 디렉토리 경로) (복원시킬 위치)

-> HDFS 쓰래기통의 디렉토리를 다시 복원하기

*결국 -mv를 통해 쓰래기통에서 다른 디렉토리로 옮겨주는 것

 

 

 

 

댓글