Hadoop
- 여러대의 컴퓨터에서 병렬 분산처리 할 수 있는 오픈소스 프레임워크
- Scale-out 방식 ( 서버 수를 늘림 <-> 서버 용량을 늘림 (scale-up 방식) )
Hadoop 특징
- 서버 추가 -> 선형적 성능 향상 -> 비용 절감
- 대용량 데이터(PB 이상) 저장
- 저장된 데이터 수정 불가(DELETE, INSERT만 가능) -> 데이터 일관성 무결성 보장
- 빠른 장애 복구 및 대응 -> 데이터 유실 방지
- 이중화(High Availability) (namenode, datanode)
- Namenode
- 메타 데이터, 블록 관리 (어떤 블록이 어디에 있는지)
- datanode를 모니터링
- 백업을 위한 file 저장
- Datanode
- 데이터가 실제로 저장되어 있는 장소
- hadoop job ( MapReduce ) 수행 시 작업하는 장소
- namenode에게 주기적으로 상태 정보 전송 (heartbeaet, block report)
- Heartbeat: default) 3초마다 한번씩 namenode에게 신호를 보냄, 10분간 신호가 없으면 장애 서버로 판단한다고 함.
- Block report: 블록 ID 및 생성 스탬프, 사이즈 전송, datanode 등록 즉시, 매 시간마다, 최근 추가/삭제된 블록 정보를 전송한다고 함
- Namenode
- Hadoop Ecosystem 연계 가능 -> 데이터 저장/수집
HDFS
- Hadoop Distribute File System
- 대용량 데이터 분산 병렬 처리 -> File로 저장 ( Block(64MB/ 128MB) 단위 )
- 데이터 유실 방지: Hadoop 기본 복제 개수인 3개의 Block을 각 datanode에 균일하게 복제
- ex) 1,2,3,4 번의 block을 저장해야 할 경우 -> 4개의 datanode에 ( (1,3,4), (1,2,4), (1,2,3), (2,3,4) ) 형식으로 저장됨
- Hadoop에 저장 시 원본 데이터의 약 3배의 크기가 되지만, 어떤 한 datanode에 장애가 발생해도 유실방지에 최적화됨
- File 관리: Namenode(Master), File 저장: Datanode(Slave)
SecondaryNamenode
- 주기적으로 Namenode의 File 블록 저장 상태 기록 (백업)
- 장애 발생 시 기록했던 File로 장애 발생 시점 전의 데이터 복구
MapReduce
- 여러 컴퓨터에 File을 분산 처리하는 프레임워크
- 대용량 데이터 병렬 처리, 안정성이 높음, 성능 좋음
- File 관리: Namenode(JobTracker), File 처리, Datanode(TaskTracker)
- TaskTracker (MapTask(데이터 묶음) + ReduceTask(데이터 집계))
- Map: 입력 데이터 집합을 쪼개서, Key-Value 형태로 만들어줌
- Shuffle: Key별로 데이터 수집
- Reduce: 집계 연산
- ex)td style="width: 25%; text-align: center;">Shuffle
Input Map Reduce [A, B, C, D, A, D] [(A,1), (B,1), (C,1),
(D,1), (A,1), (D,1)][(A,[1,1]), (B,1),
(C,1), (D,[1,1])][(A,2), (B,1),
(C,1), (D,2)]
Hadoop v1
Hadoop v1: JobTracker가 자원 관리, 진행 상황 관리를 모두 담당
Hadoop v2
Hadoop v2: JobTracker의 기능 분리 -> YARN 아키텍쳐
( 자원 관리: 리소스 매니저, 노드 매니저, 작업 관리: 어플리케이션 마스터, 작업처리: 컨테이너 )
작업이 들어오면 애플리케이션 마스터 생성 -> 애플리케이션 마스터가 리소스 매니저에 자원을 요청 -> 실제 작업을 담당하는 컨테이너를 할당받아 작업을 처리한다.
컨테이너는 작업이 요청되면 생성되고, 작업이 완료되면 종료되기 때문에 클러스터를 효율적으로 사용할 수 있다.
YARN 아키텍처는 컨테이너를 할당 받아 동작하므로 Spark, HBase, Storm 등 다양한 컴포넌트를 실행할 수 있다.
Hadoop v3
- 이레이져 코딩 도입 -> 블록 복제 방식 대체 -> HDFS 사용량 감소 (3배 ~> 약 1.4배)
- Stanby Namenode 2개 이상 사용가능
- Java 8 이상만 사용가능
- MapReduce 최적화
'DATA SCIENCE' 카테고리의 다른 글
Data Engineer 로드맵 (-ing...) (0) | 2021.09.01 |
---|---|
HBase ? (0) | 2021.08.23 |
댓글