Zookeeper?

CHAN LIM·2024년 1월 8일
0

Zookeeper

목록 보기
1/3
post-thumbnail

Zookeeper?

Hadoop Eco System의 분산 코디네이션 서비스

  • 분산
    • 여러 위치나 시스템에 걸쳐 분산되어 제공되는 서비스를 의미
    • 중앙 집중화된 구조가 아니라
      여러 지리적 위치나 서버에 분산되어 있는 형태
    • 분산되어 있는 여러 서버를 하나의 서버처럼 다루는 시스템
  • Coordinate
    • 프로세스가 함께 무언가를 해야 한다는 것을 의미하며,
      프로세스는 다른 프로세스가 발전할 수 있도록 조치를 취합니다.
  • 분산 코디네이션 서비스
    • 분산 시스템에서 시스템 간의
      정보 공유, 상태 체크, 서버들 간의 동기화를위한 락 등을 처리해주는 서비스
  • 해당 서비스를 제공하는 오픈소스 프로젝트로,
    직접 애플리케이션 작업을 조율하는 것을 쉽게 개발할 수 있도록 하는 도구
  • API를 이용해 동기화나 마스터 선출 등의 작업을 쉽게 구현
  • 일반적으로 N개의 Zookeeper 서버의 집합인 Ensemble로 구성되고 이 Ensembleleader-follower 구조를 사용한다.
    • Leader가 Follwer에게 동기화를 위한 명령을 내린다.
  • 각 애플리케이션의 정보를 중앙 집중화, 그룹 관리, 네이밍, 동기화
  • Zookeeper의 데이터는 메모리에 저장되고, 영구 저장소에 스냅샷 저장

구조

Zookeeper는 Cluster로 구축한다.

  • 분산 시스템의 일부분이기 떄문에 동작이 멈춘다면 시스템 전체가 멈출 수 있어, 안정성 확보 측면에서 클러스터로 구축한다.
  • 클러스터는 홀수로 구축한다.
    • 어떤 서버에 문제가 생겼을 경우 과반수 이상의 데이터를 기준으로 일관성을 맞추기 때문
  • 서버 여러 대를 앙상블(클러스터)로 구성하고,
    분산 어플리케이션들이 각각 클라이언트가 되어 주키퍼 서버들과 커넥션을 맺은 후 상태 정보 등을 주고 받는다.
  • 상태 정보
    • 주키퍼의 지노드(znode)라고 불리는 곳에 Key-Value 형태로 저장하며, 지노드에 저장된 것을 이용하여 분산 어플리케이션들은 서로 데이터를 주고받게 된다.
      • 지노드(znode)
        • 일반 컴퓨터의 파일이나 폴더 개념
        • 또는 디렉터리

Znode?

https://ssup2.github.io/theory_analysis/ZooKeeper/

Zookeeper가 상태를 저장하는 곳

  • 표준 파일 시스템과 달리,
    Zookeeper 네임스페이스의 각 노드는 자식뿐만 아니라 연결된 데이터를 가질 수 있다.
    • 각 노드에 저장되는 데이터는 일반적으로 바이트에서 킬로바이트 범위
      • Zookeeper의 조정 데이터를 저장하기 때문에,
  • 캐시 유효성 검사 및 조정된 업데이트를 허용하기 위해
    데이터 변경, ACL 변경 및 타임스탬프에 대한 버전 번호 포함하는 상태 구조 유지
  • 네임스페이스의 각 znode에 저장된 데이터는 원자적으로 읽고 쓴다.
  • Persistent Node
    • 영구 저장소
  • Emphermeral Node
    • Client가 종료되면 사라진다.
  • Sequence Node
    • 생성 시 뒤에 숫자가 붙는다.

Zookeeper가 보증하는 것

  • 순차적 일관성
    • 클라이언트의 업데이트는 전송된 순서대로 적용
  • 원자성
    • 업데이터가 성공하거나 실패한다. 즉, 부분 결과는 없다.
  • 단일 시스템 이미지
    • 클라이언트는 연결된 서버에 관계없이 동일한 서비스 보기를 보게 된다.
    • 즉, 클라이언트가 동일한 세션을 사용하여 다른 서버로 장애 조치하더라도 클라이언트는 시스템의 이전 보기를 볼 수 없다.
  • 안정성
    • 업데이트가 적용되면 클라이언트가 업데이트를 완료될 때 까지 해당 시간 지속된다.
  • 적시성
    • 시스템의 클라이언트 보기는 특정 시간 범위 내에서 최신 상태로 보장된다.

출처

Znode Tree

profile
클라우드, 데이터, DevOps 엔지니어 지향 || 글보단 사진 지향

0개의 댓글