2.1 하둡이란?
하둡: 적당한 성능의 범용 컴퓨터 여러 대 클러스터화, 큰 크기의 데이터 클러스터에서 병렬로 동시에 처리 ➡️ 처리 속도 ⬆️
하둡의 구성 요소
- Hadoop Common: 공통 컴포넌트 모듈(하둡의 다른 모듈 지원)
- Hadoop HDFS: 분사너장 처리 모듈, 여러개의 서버 ➡️ 하나의 서버처럼 묶어서 데이터 저장
- Hadoop YARN: 클러스터 자원관리 및 스케줄링
- Hadoop Mapreduce: 분산 처리 모듈(분산 데이터 병렬처리)
- Hadoop Ozone: 오브젝트 저장소
장점
- 오픈소스 라이선스 ➡️ 비용 부담 ⬇️
- 시스템 중단X 장비 추가 용이
- 일부 장비 장애 발생해도 전체 시스템 사용성 영향 ⬇️
- 비용대비 빠른 데이터 처리
- 오프라인 배치 프로세싱 최적화
단점
- 저장된 데이터 변경 불가
- 신속하게 처리해야 하는 작업 부적합
- 버전 多, 서포트 부실
- 설정 난해
2.2 HDFS
HDFS 목표: 범용 하드웨어에서 동작, 장애 복구성을 갖는 분산 파일 시스템
특징
- 블록 단위 저장 ➡️ 단일 디스크 데이터보다 큰 파일 저장 가능(블록 단위로 나누어 저장)
- 블록 복제 ➡️ 장애 복구: 하나의 블록 ➡️ 3개의 블록, 같은 랙의 서버 & 다른 랙의 서버로 복제 ➡️ 1G데이터 저장 시 3G 저장공간 필요
- 데이터 지역성: 데이터가 있는 곳에서 알고리즘 처리 ➡️ 대용량 데이터 이동 비용⬇️
2.2.1 구조
HDFS = 유일 네임노드+ 네이터노드 多(마스터 슬레이브 구조)
네임노드: 메타데이터( = 파일이름 + 크기 + 생성시간 + 접근권한 + 소유자/그룹 유자 + 위치한 블록 정보) & 데이터노드 관리
- 각 데이터 노드: 메타데이터 전달 ➡️ 네임노드: 전체 노드의 메타데이터 정보 & 파일 정보 묶어서 관리
- 데이터노드 주기적으로 전달 하트비트(3초) ➡️ 데이터노트 동작상태 관리(하트비트 없을 시 IO 발생 X)
- 데이터노드 주기적으로 전달 블록 리포트(6시간) ➡️ HDFS 저장 파일 최신 정보 유지
데이터노드: 블록단위로 파일 저장, 주기적으로 네임노드에 하트비트 + 블록리포트 전달
- 활성상태: 하트비트 확인 ➡️ Live | 하트비트 확인 X ➡️ Stale | 지정한 시간동안 응답 X ➡️ Dead
- 운영상태: 서비스 중단 시 블록 안전하게 보관
네임노드 구동 과정
1. Fsimage 읽기 ➡️ 메모리 적재
2. Edits 파일 읽기 ➡️ 변경내역 반영
3. 현재 메모리 상태 스냅샷 생성 ➡️ Fsimage 파일 생성
4. 데이터노트에서 블록리포트 수신 ➡️ 매핑정보 생성
5. 서비스 시작
파일 읽기
1. 네임노드 파일 內 블록 위치 요청
2. 네임노드 블록 위치 반환
3. 각 데이터 노드에 파일 블록 요청
파일 쓰기
1. 파일정보 ➡️ 네임노드, 파일의 블록을 써야할 노드 목록 요청
2. 네임노드: 파일 저장할 목록 반환
3. 데이터노드에 파일 쓰기 요청
2.2.1.1 블록
블록 추상화 이점
- 파일 하나의 크기 > 단일 디스크의 용량
- 스토리지 서브 시스템 단순화 가능(사이즈 고정 ➡️ 구현 수월)
- 복제(내고장성 제공시 필요) 구현 적합
블록 지역성 ➡️ 성능 ⬆️
- 네트워크 ➡️ 데이터 전송 시간 ⬇️
- 디스크 탐색 시간 ⬇️
- CPU 처리시간 ⬆️
블록 지역성을 위한 작업 우선 순위
1. 같은 노드에 있는 데이터
2. 같은 랙의 노드에 있는 데이터
3. 다른 랙의 노드에 있는 데이터
2.2.1.2 세컨더리 네임노드
네임노드 구동 ➡️ Edits 파일 주기적으로 생성(트랜잭션할 때) ➡️ 多 생성 시 네임노드 디스크 부족, 재구동 시간 ⬆️
➡️ 세컨더리 네임노드: Fsimage & Edits 파일 주기적 머지 ➡️ 최신 블록의 상태로 파일 생성
2.2.2 HDFS Federation
2.2.3 HDFS HA
2.2.4 HDFS 세이프모드
2.2.5 HDFS 데이터 블록
2.2.6 HDFS 휴지통
2.2.7 HDFS 명령어
2.2.8 WebHDFS REST
2.2.9 HDFS 암호화
2.2.10 HDFS 사용량 제한
2.2.11 데이터 압축
2.2.12 RPC
2.2.13 이레이져 코딩
2.2.14 Rack Awareness
2.2.15 밸런서
'Data > Hadoop' 카테고리의 다른 글
[하둡, 하이브로 시작하기] 2. 하둡(hadoop) (~2.4 YARN) (0) | 2024.07.04 |
---|---|
[하둡, 하이브로 시작하기] 2. 하둡(hadoop) (~2.3 맵리듀스) (1) | 2024.06.30 |
[하둡, 하이브로 시작하기] 1. 빅데이터 (0) | 2024.05.26 |
[하둡 완벽 가이드] Chapter 6 맵리듀스 프로그래밍 (0) | 2024.05.08 |
[하둡 완벽 가이드] Chapter 4 하둡 I/O (0) | 2024.05.05 |