본문 바로가기
DATA SCIENCE

Hadoop 이란?

by 나른한 사람 2021. 8. 22.

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)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

댓글