Hadoop 이란?

Hadoop 이란?

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 등록 즉시, 매 시간마다, 최근 추가/삭제된 블록 정보를 전송한다고 함

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) Input Map td style="width: 25%; text-align: center;">Shuffle 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배)

YARN 타임라인 서비스를 도임하여 기존 타임라인 서비스 보다 많은 정보를 확인가능 (HBase 활용)

Stanby Namenode 2개 이상 사용가능

Java 8 이상만 사용가능

MapReduce 최적화

from http://daruiniji.tistory.com/60 by ccl(A) rewrite - 2021-08-23 00:26:09