본문 바로가기

빅데이터/Zookeeper

주키퍼(1)

주키퍼란 분산 시스템을 위한 코디네이터로, 분산 시스템의 메타 정보 관리하고, 마스터/코디네이터 등을 선출합니다. 카프카 경우는 컨트롤러, NIFI는 코디네이터, 하둡은 NN 선출합니다. 그 외, 락/동기화 서비스, 클러스터 설정 정보 최신 유지 등 역할 합니다.

클러스터에 쓰기 연산이 빈번할 경우 경쟁상태에 들어갈 가능성이 커집니다. 이는 데이터 불일치를 발생시킵니다. 이 때, 클러스터 전체를 대상을 동기화해( 락을 검 ) 경쟁상태에 들어갈 경우를 사전에 방지합니다.

Master-Slve 아키텍처 기반의 여러 주기퍼 서버로 이루어진 앙상블, 그리고 앙상블 데이터 불일치 방지하고자 쿼럼 그리고 데이터를 트리 형태로 key-value 구조로 갖는 znode로 이루어져있습니다.

znode는 key를 통해 접근 가능하고, API를 통해서 데이터 저장, 디렉토리 생성 등 작업이 가능합니다.

리더 채택 / 클러스터 관리

 

znode에 상태정보를 저장하게 되고, 해당 데이터를 통해서 분산 어플리케이션들과 데이터를 주고 받습니다. znode는 데이터 변경이나 유효성 검사 등을 위해 버전 번호를 관리합니다.(메모리)

 

Master-slave 처리

1. Leader에게 Request 전달

새로운 트랜잭션 요청이 Follower에게 도착하였을 경우, Follower는 Leader에게 요청을 전달한다.

2. Propose

Propose는 Leader가 Quorum을 구성하는 서버들에게 트랙잭션을 수행해도 되는지 여부를 요청하는 과정을 의미한다.

3. Ack

Quorum을 구성하는 서버들은 Leader로 부터 Propose 요청을 받으면, 트랙잭션을 수행해도 된다는 Ack 응답을 Leader에게 전송한다.

4. Commit

모든 Quorum으로 부터 Ack를 받으면, Leader는 트랙잭션을 처리하라는 Commit 명령을 broadcast 형태로 모든 Follower에 전파한다. ZooKeeper에서는 Commit 명령을 전달할 때, ZAB(ZooKeeper Atomic Broadcast) 알고리즘을 사용한다. Atomic Broadcast는 broacast 방식 중 하나로, 멀티 프로세스 시스템에서 모든 프로세스에게 동일한 순서로 메시지가 전달된다는 것을 의미한다.

 

쿼럼

쿼럼은 한 서버에서 일어난 변경이 앙상블 내의 다른 서버로 전파되어 복제될 때, 복제가 이용가능한 수준까지 이루어졌다는 최소 기준이다.

https://hamait.tistory.com/193

Reference)

https://engkimbs.tistory.com/660

 

[주키퍼, Zookeeper] 아파치 주키퍼(Apache Zookeeper) 소개 및 아키텍처

| 대규모 분산 시스템과 코디네이션 시스템의 필요성? 과거에는 한 대의 컴퓨터에서 동작하는 단일 프로그램이 대다수였지만, 현재 빅데이터와 클라우드 환경에서 대규모의 시스템들이 동작

engkimbs.tistory.com

https://blog.seulgi.kim/2014/05/zookeeper-1-znode-zookeeper-data.html

 

[ZooKeeper] (1) ZNode - ZooKeeper가 data를 저장하는 방법.

What is a znode in ZooKeeper

blog.seulgi.kim

https://xangmin.tistory.com/169

 

[데이터베이스] 주키퍼 (zookeeper)란?

 분산 코디네이션 서비스를 제공하는 오픈소스 프로젝트로 직접 어플리케이션 작업을 조율하는 것을 쉽게 개발할 수 있도록 도와주는 도구이다. API를 이용해 동기화나 마스터 선출 등의 작업

xangmin.tistory.com

https://xangmin.tistory.com/169

'빅데이터 > Zookeeper' 카테고리의 다른 글

주키퍼(2)  (0) 2022.12.23