1. HDFS
- Hadoop Distributed File System
- 범용 하드웨어에서 동작하고, 장애 복구성을 가지는 분산 파일 시스템
- 배치러리를 위해 설계됨
- 빠른 데이터 응답시간이 필요한 작업에 부적합
- 네임노드가 단일 실패 지점(SPOF)이 되기 때문에 네임노드 관리가 중요
- 특징
- 블록 복제를 이용한 장애 복구
- 장애 복구를 위해 각 블록을 복제하여 저장
- 기본 복제 단위는 3개로, 하나의 블록이 3개의 블록으로 복제
- 문제가 생기면 다른 블록을 이용해 데이터 복구
- 읽기 중심
- 데이터를 한 번 쓰면 여러 번 읽는 것이 목적
- 파일의 수정 지원 X
- 데이터 지역성
- 데이터가 있는 곳에서 알고리즘을 처리하여 네트워크를 통해 대용량 데이터를 이동시키는 비용을 줄임
- 블록 복제를 이용한 장애 복구
2. 구조
- 마스터 - 슬레이브 구조
- 하나의 네임노드와 여러 개의 데이터노드로 구성
- 네임노드: 메타데이터 저장
- 데이터노드: 블록 단위의 데이터 저장
3. 네임노드
- 메타데이터 관리
- 각 데이터노드에서 전달하는 메타데이터를 받아서 전체 노드의 메타데이터 정보와 파일 정보를 묶어서 관리
- 메타데이터: 파일이름, 파일 크기, 파일 생성 시간, 파일 접근 권한, 파일이 위치한 블록의 정보 등으로 구성
- 각 데이터노드에서 전달하는 메타데이터를 받아서 전체 노드의 메타데이터 정보와 파일 정보를 묶어서 관리
- 데이터노드 관리
- 데이터노드가 주기적으로 전달하는 하트비트(3초)와 블록리포트(6초)를 이용하여 데이터 노드의 동작상태, 블록상태 관리
- 하트비트를 이용하여 데이터노드의 동작을 확인
- 블록리포트를 이용하여 HDFS에 저장된 파일에 대한 최신 정보를 유지
- 구동 과정
- Fsimage를 읽어 메모리에 적재합니다.
- Edits 파일을 읽어와서 변경내역을 반영
- 현재의 메모리 상태를 스냅샷으로 생성하여 Fsimage 파일 생성
- 데이터 노드로부터 블록리포트를 수신하여 매핑정보 생성
- 서비스 시작
4. 데이터노드
- 파일을 저장하는 역할
- 파일은 블록 단위로 저장
- 네임노드에 주기적으로 하트비트와 블록리포트를 전달
- 상태
- 활성 상태
- 데이터노드가 Live 상태인지 Dead 상태인지를 나타냄
- 운영 상태
- 데이터노드의 업그레이드, 패치 같은 작업을 하기 위해 서비스를 멈춰야 할 경우 블록을 안전하게 보관
- NORMAL: 서비스 상태
- DECOMMISSIONED: 서비스 중단 상태
- DECOMMISSION_INPROGRESS: 서비스 중단 상태로 진행 중
- IN_MAINTENANCE: 정비 상태
- ENTERING_MAINTENANCE: 정비 상태로 진행 중
- 데이터노드의 업그레이드, 패치 같은 작업을 하기 위해 서비스를 멈춰야 할 경우 블록을 안전하게 보관
- 활성 상태
5. 파일 읽기 / 쓰기
- HDFS 파일에 접근하는 방법
- HDFS 명령형 인터페이스를 이용하기
- Java, C API를 구현하여 접근
- 파일 읽기
- 네임노드에 파일이 보관된 블록 위치 요청
- 네임노드가 블록 위치 반환
- 각 데이터 노드에 파일 블록을 요청
- 노드의 블록이 깨져 있으면 네임노드에 이를 통지하고 다른 블록 확인
- 파일 쓰기
- 네임노드에 파일 정보를 전송하고, 파일의 블록을 써야할 노드 목록 요청
- 네임노드가 파일을 저장할 목록 반환
- 데이터 노드에 파일 쓰기 요청
- 데이터 노드간 복제가 진행
'분산처리 > 빅데이터-하둡, 하이브로 시작하기' 카테고리의 다른 글
2-3) HDFS 기능 1 (0) | 2023.07.17 |
---|---|
2-3) 블록과 세컨더리 네임노드 (0) | 2023.07.16 |
2-1) 하둡이란? (0) | 2023.07.16 |
1-3) 빅데이터 에코시스템 (0) | 2023.07.16 |
1-2) 빅데이터 처리 단계 (0) | 2023.07.13 |