[Hadoop] 하둡 분산 파일 시스템(HDFS)
programming/hadoop

[Hadoop] 하둡 분산 파일 시스템(HDFS)


3. 하둡 분산 파일 시스템(HDFS)


3.1 하둡 분산 파일 시스템(Hadoop Distributed File System)


 3.1.1 대용량의 파일을 분산된 서버에 저장하고 저장된 데이터를 빠르게 처리할 수 있게 하는 파일 시스템


 3.1.2 저사양의 서버를 이용해서 구성할 수 있음


 3.1.3 블록 구조의 파일 시스템

  블록의 크기는 기존에는 64MB였으나 하둡 2.0부터 128MB로 증가됨


3.2 하둡 분산 파일 시스템의 시작과 종료


 3.2.1 하둡 분산 파일 시스템을 시작하는 명령어

  start-dfs.sh - HDFS를 구동함

  start-yarn.sh - 맵리듀스를 구동함

start-dfs.sh

start-yarn.sh


 3.2.2 하둡 분산 파일 시스템을 중지시키는 명령어

stop-dfs.sh

stop-yarn.sh


3.3 하둡 분산 파일 시스템의 주요 명령어


 형식) hdfs dfs -명령어 옵션


 dfs : Distributed Filesystem Shell (분산 파일시스템 쉘)


 3.3.1 하둡 분산 파일시스템 도움말

hdfs dfs -help


  세부적인 도움말

  ls 명령어에 대한 도움말

hdfs dfs -help ls


 3.3.2 파일목록 보기

  ls (LiSt)


  hdfs dfs -ls [디렉토리]


  경로를 지정하지 않을 경우 사용자 계정의 홈디렉토리 조회

hdfs dfs -ls


  경로를 지정할 경우 해당 디렉토리의 파일 목록 조회

hdfs dfs -ls conf


  -R 옵션 : 하위 디렉토리 목록까지 출력

hdfs dfs -ls -R


 3.3.3 파일용량 확인

  du (Directory Usage) 디렉토리 또는 파일의 사용량을 바이트 단위로 출력

hdfs dfs -du


  du -s : 해당 디렉토리의 전체용량만 출력

hdfs dfs -du -s


 3.3.4 파일내용 보기 : cat, text

  cat (텍스트파일 전용)


  text (텍스트파일과 압축파일도 읽을 수 있음)


  hdfs dfs -cat 디렉토리/파일

hdfs dfs -cat conf/hadoop-env.sh


  hdfs dfs -text 디렉토리/파일

hdfs dfs -text conf/hadoop-env.sh


  텍스트 내용 출력(압축된 파일도 읽을 수 있음)


 3.3.5 디렉토리 생성

  mkdir (MaKe DIRectory)


  hdfs dfs -mkdir [디렉토리]

hdfs dfs -mkdir input


hdfs dfs -ls


replace screenshot 033221


 3.3.6 파일 복사

  hdfs dfs -put 로컬시스템파일 하둡분산파일시스템파일


  $HADOOP_HOME/etc/hadoop 폴더의 core-site.xml 파일을 하둡분산파일시스템의 input 폴더에 복사

hdfs dfs -put $HADOOP_HOME/etc/hadoop/core-site.xml input


  복사된 파일 확인

hdfs dfs -ls input


  hdfs dfs -copyFromLocal 로컬시스템파일 하둡분산시스템파일

  로컬의 core-site.xml을 하둡분산파일시스템의 input 폴더에 a라는 파일이름으로 저장

hdfs dfs -copyFromLocal $HADOOP_HOME/etc/hadoop/core-site.xml input/a


  input 디렉토리의 파일 목록 확인

hdfs dfs -ls input


  hdfs dfs -get 하둡분산파일시스템파일 로컬시스템파일


  하둡분산파일시스템의 파일 a를 로컬시스템의 현재폴더에 a라는 파일이름으로 복사

hdfs dfs -copyToLocal input/a b


cat b


  -로컬시스템으로 한개의 파일로 합쳐서 복사

  hdfs dfs -getmerge    하둡분산파일시스템파일    로컬시스템파일


  하둡의 input 디렉토리의 모든 파일을 로컬의 c 파일로 합쳐서 저장

hdfs dfs -getmerge input c


cat c


  -파일 복사

  hdfs dfs -cp    하둡분산파일시스템소스파일    하둡분산파일시스템복사파일


  하둡분산파일시스템의 conf 디렉토리의 hadoop-env.sh 파일을 하둡분산파일시스템의 /user/사용자 디렉토리의 hadoop-env-copy.sh로 복사

hdfs dfs -cp conf/hadoop-env.sh hadoop-env-copy.sh


hdfs dfs -ls


또는


hdfs dfs -ls /user/root


 3.3.7 파일 이동

  hdfs dfs -mv    이동전경로    이동후경로

   하둡분산파일시스템 내에서 파일을 옮김


  하둡분산파일시스템의 input 폴더 안의 a 파일을 input 폴더 안의 a2 파일로 옮김

hdfs dfs -mv input/a input/a2


hdfs dfs -ls input


  hdfs dfs -moveFromLocal    로컬경로    하둡경로

   로컬시스템에서 하둡분산파일시스템으로 옮김(로컬시스템의 파일은 삭제됨)

hdfs dfs -mkdir temp


hdfs dfs -moveFromLocal a temp/a


hdfs dfs -ls temp