Practice makes perfect

[BIGDATA Platform] 분산 코디네이터 : 주키퍼(ZOOKEEPER) 본문

빅데이터/BIGDATA Platform

[BIGDATA Platform] 분산 코디네이터 : 주키퍼(ZOOKEEPER)

kerpect 2020. 6. 11. 00:11

주키퍼(ZOOKEEPER)란?

: 분산 코디네이션 서비스를 제공하는 오픈소스 프로젝트로, 일관적으로 관리 해주는 프로그램 입니다.

 

주키퍼(ZOOKEEPER) 홈페이지 : zookeeper.apache.org/

 

 

 

주키퍼(ZOOKEEPER)역할

1) 네임서비스를 통해 하나의 서버만 서비스를 수행하지 않고 알맞게 분산해 각각의 클라이언트들이 동시 작업할 수 있도록 지원하여 부하를 분산시킵니다.

 

2) 락(lock)을 통해 하나의 서버에서 처리된 결과가 또 다른 서버들과 동기화할 수 있도록 합니다.

- 결국 주키퍼는 안정적이고 가용성 높은 znode 데이터 시스템을 제공하는 클러스터 서버라고 해도 과언이 아닙니다.

 

 

 

주키퍼(ZOOKEEPER) 주요 구성 요소

 

Client : 주키퍼 ZNode에 담긴 데이터에 대한 쓰기 읽기, 삭제 등의 작업을 요청하는 클라이언트

작업 요청을 실행할 때, client로 들어가면 됩니다. 

 

ZNode(주키퍼의 핵심 구성요소) : 주키퍼 서버에 생성되는 파일시스템의 디렉터리(탐색기) 개념으로, 클라이언트의 요청 정보를 계층적으로 관리(버전, 접근, 상태, 모니터링 객체 관리 등의 기능 지원)

 

Ensemble : 3대 이상의 주키퍼 서버를 하나의 클러스터로 구성한 ha아키텍처 (안정화 기능)

 

LeaderServer : Ensemble 안에는 유일한 리더 서버가 선출되어 존재하며, 클라이언트의 요청을 받은 서버는 해당 요청을 리더 서버에 전달하고, 리더 서버는 모든 팔로워 서버에게 클라이언트 요청이 전달되도록 보장

 

Follower Server : Ensemble 안에서 한 대의 리더 서버를 제외한 나머지 서버로서, 리더 서버와 메세지를 주고받으면서 ZNode의 데이터를 동기화하고 리더 서버에 문제가 발생할 경우 내부적으로 새로운 리더를 선출하는 역할을 수행

 

 

 

 

주키퍼(ZOOKEEPER)가 연동 시켜주는 프로그램들 (하둡, 스톰, hbase, Kafka)

 

1) 하둡(Hadoop)

: 하둡2에 들어와서 하둡1에서 NameNode가 다운되면 모든 시스템이 문제가 생기는 오류를 막기 위해서 NameNode를 이중화 시키는데 주키퍼를 사용하였습니다.

 

2) 스톰(Storm)

: Nimbus에서 만들어진 Topology를 Supervisor와 공유하기 위해서 주키퍼를 사용합니다.

 

3) HBase

:  HMaster와 Client 의 정보를 공유하기 위해서 주키퍼를 사용합니다.

 

4) 카프카(Kafka)

: 카프카의 provider와 consumer 의 저장공간을 서로 공유하기 위해서 주키퍼를 사용합니다.