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