Yarn?

Yet Another Resource Negotiator

  • Hadoop 2.0 에서 시작된 Resource 관리 / 스케줄링 하는 Hadoop 컴포넌트
  • Hadoop 1 에서 사용하던 JobTracker, TasksTracker의 역할 대체
    • 완벽하게 동일한 기능은 아니지만 대다수 대체됨
    • 등록 가능 Node수 4000 -> 클러스터 당 10,000개 이상
    • JobTracker -> ResourceManager
    • TasksTracker -> Node Manager, Container(Slot대체?)

아키텍쳐

Pasted image 20230921185436.png
Resouce Manager은 Master , Node Manager은 Slave로 구성된다.

구성

Resource Manager

  • 클러스터의 자원관리 및 Task 스케줄링이 메인 역할
    1. Client가 Application 실행 요청시 Application Manster을 실행
    2. Node Manager와 통신하여 자원상황 체크
    3. Application Master와 통신하여 필요 자원 관리
  • Hadoop 2.4 부터는 Active - stanby로 구성되어 SPOF 위험 제거

Node Manager

  • Node당 1개 존재
  • Yarn 의 Slave daemon으로서 컨테이너의 자원 관리 역할
  • 사용 중인 자원을 모니터링하고, Resource Manger에게 자원 상황 보고
  • Resource Manager의 요청에 따라 Container 생성

Application Master

  • Application당 1개 존재
  • Resource Manager로부터 Container를 할당 받음
  • Application 실행 상태를 모니터링 및 관리하는 역할

Container

  • 리소스 자원
  • cpu, Disk, Memory 등
      - Application 실행하는 Task들은 Container상에서 실행된다.

개인적으로 공부한 내용 포스팅 중
잘못된 정보는 지적해주시면 좋겠습니다!

'프로그래밍 및 IT > Hadoop' 카테고리의 다른 글

Hadoop  (0) 2023.10.05

Apache에서 오픈소스로 제공하는 분산처리 프레임워크
즉, 대용량 데이터를 여러 서버를 클러스터링 하여 분산처리 하는 것이 목적인 프레임워크
현재 hadoop1.x, hadoop2.x, hadoop3.x 로 발전해왔다
Hadoop-Echosystem으로 여러 Framework와 조합하여 사용한다
Pasted image 20230921152112.png

  • 위 사진에 있다고 필수적으로 모두 사용하는 것은 아니다.
  • 사진 출처

HDFS

Hadoop FileSystem의 약자로 Hadoop의 분산 파일 시스템.

  1. Block단위로 파일을 적재한다
    1. 블록의 수가 너무 많아지면 좋지 않다
      1. Block에 관한 Meta정보를 Namenode에서 관리하여 리소스 낭비가 발생할 수 있다.
    2. 안정성, 다중 처리를 위해 replication을 생성하여 사용한다.
    3. Scale-Out이 용이하다

Mapreduce

Pasted image 20230921151917.png

  • Map과 Reduce 2개의 메소드로 구성된 대용량 데이터 처리 분산 프로그래밍 모델
    • 정형 / 비정형 데이터를 동일한 크기로 나두고, 처리 완료 한 데이터를 병합해주는 역할

Hadoop1.x

Pasted image 20230921152300.png
Hadoop 1.x 버전의 구성은 위와 같다.

Client

NameNode를 통해 정보를 받고, DataNode와 직접 통신

NameNode

Datanode 관리, Resource 관리 등을 하는 Node

  1. MasterNode
    1. SlaveNode의 정보를 저장
    2. HDFS의 Meta data 보관
    3. Client가 데이터 요청 시 위치 정보 전달
    4. 안전성을 위해 Editlog 생성
      1. Editlog : 변경 로그
  2. secondary node
    1. MasterNode가 장애 발생시 대체
    2. MasterNode의 Editslog등을 Pull하여 BackUp/Merge를 수행하여 fsimage 생성
      1. fsimage : File System Image
      2. Editlog의 크기와 fsimage의 생성 시간은 반비례 한다.
      3. fsimage를 MasterNode에 전달하여 동기화
  3. JobTracker
    1. 실행할 task를 관리한다
    2. Job이 끝날 때까지 스케줄링/모니터링을 담당
    3. 클러스터 자원 관리

SlaveNode

데이터가 적재되어있고, 연산 작업을 수행하는 Node

  1. TaskTracker
    1. Task를 수행한다
    2. Map/Reduce Task로 나누어짐
      1. 병렬 처리 작업 단위 : Slot
      2. Map/Reduce slot은 개수가 정해져 있다.
      3. Map/Reduce은 역할이 정해지면 용도 변경이 불가
        1. 작업을 하지 않으면 대기 상태
        2. 클러스터가 100% 활용되지 않을 경우가 존재
  2. DataNode
    1. 데이터를 분산하여 가지고 있따.
    2. 데이터는 Block단위로 적재된다
    3. Fault Recovery를 위해 Duplication을 유지한다
      1. Default : 3
    4. NameNode에게 HeartBeat를 통해 파일위치 및 장애여부 전송

실행 순서 (MapReduce)

  1. client node : M/R 를 수행하기 위해 Job Client를 실행시킴
  2. Job Client : Job을 할당 및 수행하기 위해 JobTracker에게 새로운 Job ID를 수령
  3. Job Client : Jar,Config,Input Split Data을 HDFS에 Job ID디렉토리로 복사
  4. Job Client : JobTracker에게 시작 준비 완료 알림
  5. JobTracker : 실행할 Job 객체 생성
  6. JobTracker : 수행할 Task List 생성을 위해 Job Client가 계산한 Input Split Data를 기반으로 Task 생성
  7. Job,Task Tracker : 상호 Heartbeat 교환
    • task tracker : task 수행 가능여부
    • job tacker : task 가 존재하면 task 반환 후 task tracker가 task를 수행하게 만듦
  8. task tracker : Input Split (Job JAR File)를 HDFS에 복사 후 task runner instance를 생성 후 task수행
  9. task tracker : 각 task를 수행하면서 n초마다 수행 감시

MapReduce의 단일 고장점

  • JobTracker는 모든 MapReduce의 요청을 받는다
    • JobTracker에 문제 발생시 MapReduce는 수행할 수 없다 ( Fail Point )
    • JobTracker가 독점적으로 작업 수령 및 리소스 관리하여 SPOF 위험이 있다.
      • SPOF (Single Point Of Failure) : 1곳에서 장애 발생 시 전 시스템이 중단

클러스터 확장성

종류 최대치
단일 클러스터 4,000
동시 실행 테스크 40,000

리소스 관리

Slot으로 자원 관리하여 Mapper / Reducer의 자원을 효율적으로 사용하지 못 한다P
MapReduce가 아닌 다른 서비스로 인한 자원 영향 파악 불가

HADOOP2.x

Hadoop1 과 차이점

  1. JobTracker, TasksTracker의 역할을 Yarn으로 대체됨
    • 완벽하게 동일한 기능은 아니지만 대다수 대체됨
    • 등록가능 Node수 4000 -> 클러스터 당 10,000개 이상
    • JobTracker -> ResourceManager
    • TasksTracker -> Node Manager, Container(Slot대체?)
  2. Spark, Hive 등 M/R 이외의 분산 처리 모델 지원

Hadoop HA

대표적인 방법으로 2가지가 존재한다

  1. QJM
    1. Journal node를 이용한 HA구성
  2. NFS
    1. Nas를 이용하여 HA를 구성
      Pasted image 20230921185909.png

NFS

Network File System

  • 위 그림은 QJM구성인데, JN부분에 SS로 구성된다면 NFS라고 볼 수 있다.
  • SS ( Shared Storage)
    • NAS ( Network Attached Storeage) 의 묶음
      • Network를 이용한 원격 저장소
    • Namenode의 Journaling 정보를 Nas에 저장 후 동기화 시킴
      • Network, Cpu 등의 문제로 Split Brain이 발생할 수 있다.
        • Split Brain : Context Switch 시 동시에 접근하여 정보 불일치가 발생한는것
          • 이곳에서는 Active Node의 정보가 충돌하여 Node의 정보 불일치

QJM

Quorum Journal Manager

상단의 그림이 QJM이다

  • JN ( Jounal Node)
    • Active NN 과 Standby NN간 동기화를 유지하기 위해 사용되는 Daemon 그룹
      • Daemon : Background 프로그램
    • Active NN 의 Journaling 정보를 지속적으로 기록한다
      • journaling 정보 : 시스템 변경사항 (e.g Edit log)
    • Failover시 Standby NN가 jounaling 정보를 읽었는지 확인 후 Active NN로 성격
    • Quorum을 위해 홀수를 권장
      • 서버 다운을 대비해 JN은 서로 다른 서버에 구성

공통

  • NN ( Name Node)

    • Split Brain 방지를 위해 Active Node와 Standby Node중 Active Node만 동작함
    1. Active Node ( Master Node )
      1. 활동중인 NN
    2. Standby Node ( Slave Node )
      1. Failover을 위해 Active Node와 동기화
        1. Active Node 장애 발생 시 Active로 승격
      2. NFS 의 SS, QJM의 JN를 이용하여 동기화
      3. Standby Node가 존재하면 SecondName / Checkpoin / Backup Node 불필요
        1. 위 3개와 동시에 동작 시 Error 발생
    3. Observer Node ( Hadoop 3.x 이후 추가)
      1. Hadoop Cluster의 규모가 커지면서 Active Node가 관리하는 Object가 증가함
        1. OverHead가 증가하여 Active Node의 부하가 증가
      2. Active Node의 과부하 방지를 위해 Active Node의 Read역할을 대신 해준다
        1. Traffic 분산
  • DN ( Data Node )

    • Data를 분산 저장하는 Node
    • Darta는 기본값으로 3개의 replication을 가지고 있다
  • ZK( Zookeeper )

    • Coordinator로써 Server의 Leader선정시 사용
  • ZKFC( Zookeeper Failover Controller )

    • ZK - NN 사이에서 모니터링 , 세션관리, 장애 복구를 수행하는 프로세스
      • Health Monitoring
        • NN과 ping 즉 heartbeat를 주고 받으면서 상태 확인 ( Timeout 기반)
        • NN의 장애 (충돌, 정지, …) 발생시 NN비정상 표기
      • Session Management
        • NN 정상
          • Session이 열린 상태를 유지한다
            • Active NN가 임시 Lock ZNode를 사용
        • NN 비정상
          • Session 종료 후 ZK에 알람
        • NN 종료
          • 자동으로 할당한 임시 Lock ZNode를 삭제
      • zookeeper-based Election
        • ZK기반으로 Active NN 선정
        • Active NN 장애 발생 시 Standby NN는 Lock Node를 선점 시도
          • 1+N개의 Standby NN가 존재하면 최초 선점함 NN가 Active로 승격
      • Fencing
        • Standby NN가 Active NN로 승격하는 과정에서 기존 Active NN가 죽지 않아 2개의 Active NN가 되는 걸 방지하기 위해 기존 Active NN를 죽이는 기법
        • Active NN를 Standby NN로 변경하거나 Kill한다
    • NN과 같은 Host에 구성된 ZK와 상호장용하는 Controller

개인적으로 공부한 내용 포스팅 중
잘못된 정보는 지적해주시면 좋겠습니다!

'프로그래밍 및 IT > Hadoop' 카테고리의 다른 글

Yarn  (0) 2023.10.05

+ Recent posts