# HDFS ( Hadoop Distributed File System )
1. 개요
- 4가지 목표
- 장애복구
- 스트리밍 방식 데이터 접근 >> batch 작업에 적합
- 대용량 데이터 저장
- 데이터 무결성 : 한번 쓴 데이터는 변하지 않는다 >> 수정이 불가능 하다 but append 는 가능하다
- 기존 대용량 파일 시스템 와 비교
- DAS : 서버 - 스토리지 , HBA(HostBasedAdaptor) 를 이용해 스토리지를 연결
- NAS : 서버 - 네트워크 스토리지 , 동영상, 문서 등의 공유를 목적으로 한 스토리지, 비용문제+
- SAN : 서버 - 네트워크 스위치 - 스토리지 , DAS 의 한계 극복.
- HDFS : 단일 HDFS 에는 RAID 구성이 필요없다. but 마스터노드 는 RAID1, 10 를 걸어줄 필요가 있다
cf) RAID 개념 : 단일 시스템에서 동작한다
- RAID0 : striping , I/O 성능 좋아짐. but 망가지면 끝
- RAID1 : mirroring, 복제본 . but 하나가 망가져도 사용가능
- RAID 0+1 : 절때 사용하면 안됨 >> 하나 fail 시 전체 rebuild 필요
- RAID 10 : HDFS 가 동작하는 방식가 비슷
- Oracle RAC (Real application Clusters) : 슈퍼돔 * 4 + SAN , 어마어마한 가격
2. 아키텍처
- 단일 데이터를 여러개의 블락으로 나누어 (128M) 저장한다
- why 128 M : memory -bus-> disk (100MB 전달할 수있는 버스가 생겼다)
- 깨진 데이터는 자동으로 복구하지 못한다 >> ( Client ) 깨진 데이터를 지워준다 >> 자동으로 replica 만큼 생성하여 복사본을 유지한다
- 슬레이브 ( Datanode ) 가 많다 == 더 많은 병렬처리가 가능하다 ( 이론상 6000대 클러스터 생성가능 )
3. 구성요소 별 데이터 구조
- Namenode
- 경로 : {{hadoop_install_path}}/hadoop-data/dfs/name/current
- 파일 :
- fsimage_xxxx : 데이터의 메타정보 저장 : 최초 hadoop 이 구동 할 때 읽어 올라간 뒤 ** 이후에 다시 쓰지 않는다 **
- edits_xxxxx : 변화되는 이력을 기록 한다
- Datanode
- 경로 : {{hadoop_install_path}}/hadoop-data/dfs/data/current/BP-495131824-192.168.56.101-1432616015420
- 파일
- blk_1073741832 >> 실제 블락
- blk_1073741832_1008.meta >> 블락의 체크썸 ( 상태확인 )
※ BP : Block Pool 로서 하나의 HDFS 에 여러 namenode 를 사용하여 여러개의 pool 로 나누어 사용가능 하다
4. Operation 매커니즘
- write
- Datanode 에서 데이터 복제하는 과정은 파이프라인에 의한 병렬처리로 이루어진다 == 복제 갯수만큼 이루어지지 않으면 쓰기 실패이다
- 블럭의 배치 순서 : 1. 로컬노드 2. 원격 Rack 노드 3. 2번과 같은 Rack 의 다른 노드
- read
- Namenode 는 client 가 요청하는 data 의 Datanode 와 그 위치 를 알아야한다
- 복제본을 가지고 있는 Datanode 중에서 가장 여유있는 노드로 유도한다 : Namenode 와 Datanode 는 heart-bit 를 통해 상태를 확인하고 있으므로...
5. 체크포인팅 매커니즘
- 작업 :
- 세컨터리 네임노드 : 로그롤링 요청
- 네임노드 : 신규 에디트 로그 작성
- 세컨더리 네임노드 : 로그를 받아 디스크 동기화 및 파일시스템 이미지 신규작업 전달
- 네임노드 : 에디트 로그를 유지 ...
- 구성 시, Namenode 와 Secondary Namenode 는 같은 크기의 메모리를 부여하여 fsimg 를 생성 전달할 수 있도록 한다
- 상황
- Namenode 죽었을 시, 마지막 체크포인트 발생 시점까지 복구가 가능하다
- Secondory Namenode 죽었을 시, 운영은 되지만 edit log 가 무한히 길어지면 namenode 가 죽는다
6. Namenode - Secondary Namenode
- 설정 (2.0 이후 버전) : etc/hadoop/masters 파일에 secondary name 를 설정한다 . 미작성시 namenode 에 함께 뜬다
- 데이터
[hadoop@hadoop01 ~]$ ls hadoop/hadoop-data/dfs/*name*/current/
seen_txid VERSION
edits_0000000000000000001-0000000000000000002 fsimage_0000000000000000115
edits_0000000000000000003-0000000000000000103 fsimage_0000000000000000115.md5
edits_0000000000000000104-0000000000000000113 fsimage_0000000000000000117
edits_0000000000000000114-0000000000000000115 fsimage_0000000000000000117.md5
edits_0000000000000000116-0000000000000000117 >> 체크포인트 작업으로 사용된 log 로 프리징 되어있다
edits_inprogress_0000000000000000118 >> 롤링 된 신규 에디트 로그
[hadoop@hadoop01 ~]$ ls hadoop/hadoop-data/dfs/*namesecondary*/current/
edits_0000000000000000001-0000000000000000002 fsimage_0000000000000000115
edits_0000000000000000003-0000000000000000103 fsimage_0000000000000000115.md5
edits_0000000000000000104-0000000000000000113 fsimage_0000000000000000117
edits_0000000000000000114-0000000000000000115 fsimage_0000000000000000117.md5
edits_0000000000000000116-0000000000000000117 VERSION
'BigData' 카테고리의 다른 글
Hadoop - MapReducer (0) | 2016.08.02 |
---|---|
Hadoop 설치 (0) | 2016.08.01 |
Hadoop 기초 (0) | 2016.08.01 |