2. 차례
3.1 HDFS설계
3.2 HDFS개념
3.3 명령행 인터페이스
3.4 하둡 파일시스템
3.5 자바 인터페이스
3.6 데이터 흐름
3.7 데이터 이관을 위한 플룸과 스쿱
3.8 distcp 병렬복사
3.9 하둡 아카이브
3. 차례
3.1 HDFS설계
3.2 HDFS개념
3.3 명령행 인터페이스
3.4 하둡 파일시스템
3.5 자바 인터페이스
3.6 데이터 흐름
3.7 데이터 이관을 위한 플룸과 스쿱
3.8 distcp 병렬복사
3.9 하둡 아카이브
4. 3.1 HDFS설계
- HDFS(Hadoop Distributed FileSystem)
- 대용량 파일 시스템
DAS(Direct-Attached Storage) 서버에 직접 연결된 스토리지
ex) 외장하드
NAS(Network-Attached Storage) 파일써버, 별도의 운영체제위에 구동
첨부파일, 이미지 저장
SAN(Storage Area Network) 수십,수백대의 SAN스토리지를 데이터 서
버에 연결해서 총괄적으로 관리해주는 네
트워크
DBMS와 같이 안정적이고 빠른접근이 필요
한 데이터를 저장하는데 적합
5. 3.1 HDFS기초
- 저사양 서버를 이용해 스토리지 구성이 가능
- 여러대를 묶어 하나의 스토리지 처럼 사용
- 파일저장,읽기 제어는 API통해서
- 고성능, 고가용성 -> SAN
- 안정적인 파일 저장 -> NAS
- 대규모 데이터 저장,배치 처리 -> HDFS
6. 3.1 HDFS 설계의 특징
목적 : 범용 하드웨어로 구성된 클러스터에서 실
행되고 데이터 액세스 패턴을 스트리밍 방식으
로 지원하여 매우 커다란 파일을 저장할 수 있도
록 설계된 파일 시스템
7. 3.1 HDFS 설계의 특징
1. 매우 커다란 파일
- 수백 MB, GB, TB파일을 저장
참고. FAT32=4GB NTFS=4~64GB
2. 스트리밍 방식, 데이터 엑세스
The utility allows you to create and run
Map/Reduce jobs with any executable or script
as the mapper and/or the reducer
8. 3.1 HDFS 설계의 특징
3. 장애복구
- 빠른 장애 감지, 데이터 복제
4. 데이터 무결성
- 입력 변경 제한, 한번 저장한 데이터 수정 불가
(0.20)
9. 3.1 HDFS 설계의 특징
5. 많은 수의 작은 파일
- 메타데이터 메모리 관리,
관리하는 파일의 수 증가 -> 메타데이터 증가 ->
자원낭비
10. 3.2 HDFS개념
- 블록이란..?
한 번에 읽고 쓸 수 있는 데이터의 최대량
linux/win = 512bytes ; Block
HDFS =64M ; Chunk
…. 왜 이렇게 큰가..?
11. 3.2 HDFS개념
HDFS블록은 왜 이렇게 큰가..?
- 탐색의 비용 최소화
- 탐색비용 최소 -> 데이터 전송에 집중
- 맵리듀스의 테스크 단위도 블록
- 계산하기 쉽다.
- 복제를 효율적으로 수행
14. 블록 구조 파일 시스템
1 2 3 4 5
320M 파일
1
3
4
2
3
4
1
3
5
2
4
5
1
2
5
15. 블록 구조 파일 시스템
1 2 3 4 5
320M 파일
1
3
4
2
3
4
1
3
5
2
4
5
1
2
5
16. 블록 구조 파일 시스템
- 블록단위(64MB)로 나눈다
- 3개의 복제본을 생성
- 여러 곳에 저장
17. 네임노드와 데이터 노드
- HDFS는 마스터-슬레이브 아키텍처로 구성
- 마스터(네임노드)
- 슬레이브(데이터 노드)
- 네임노드는 HDFS의 메타데이터 관리
- 클라이언트가 데이터 노드에 접근할 수 있게
- linux/win같은 계층형 파일 시스템
- 주기적으로 데이터 노드는 네임노드에
heartbeat/blockreport를 전송
20. 보조네임노드과 고가용성
- 네임노드는 메타데이터를 관리하기 위해
Editlog,FsImage
Editlog : 메타데이터의 변화를 기억,용량 제한X
네임노드의 로컬 시스템에 파일로 저장
FsImage : 네임스페이스와 파일에 대한 블록 매
핑 정보를 저장. 일종의 스냅샷
*네임스페이스(디렉토리명,파일명,상태정보)
21. 보조네임노드과 고가용성
<로그동작 방식>
1. 네임노드가 구동되면 로컬에 저장된 FsImage와 editlog파
일을 조회
2. editlog파일에 있는 내용을 토대로 메모리에 올라와 있는
FsImage와 를 갱신
3. 메모리에 올라와있는 FsImage와 를 로컬 파일에 있는 파
일 시스템 이미지 파일에 적용
4. editlog파일을 초기화