Zookeeper #1. 개요

Zookeeper #1. 개요
Zookeeper #2. 설치와 설정
Zookeeper #3. 구동과 확인

Kafka #1. 개요
Kafka #2. 설치

아파치 주키퍼(Apache ZooKeeper)는 아파치 소프트웨어 재단 프로젝트중의 한 소프트웨어 프로젝트로서 공개 분산형 구성 서비스, 동기 서비스 및 대용량 분산 시스템을 위한 네이밍 레지스트리를 제공한다. 주키퍼는 하둡의 한 하위 프로젝트이었으나 지금은 독립적인 상위 프로젝트이다. 주키퍼의 아키텍처는 중복 서비스를 이용한 고가용성을 제공한다. 클라이언트는 주키퍼 마스터가 응답을 하지 않으면 다른 주키퍼 마스터에게 요청을 한다. 주키퍼 노드들은 파일 시스템이나 trie 데이터구조와 비슷한 구조의 네임 스페이스안에 데이터들을 저장한다. 클라이언트들은 이 노드들에게서 읽거나 쓴다. 1 https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EC%A3%BC%ED%82%A4%ED%8D%BC

쉬운 이해를 위해 설명하자면 ‘Hadoop Eco System’ 등의 고가용성 제공을 위한 도구이다. 즉, Hadoop 네임노드 이중화, Kafka 클러스터, NiFi 클러스터링 등을 위한 관리 기능을 제공한다.

기본적으로 1개 이상 21개로 구성은 가능하지만 이는 단순히 zookeeper의 관리 기능을 이용하는 것이지 고가용성 확보를 위한 구성은 아니다. 의 홀수개 노드(인스턴서,서버)들로 구성되며 주 용도는 다음과 같다.
– 설정 관리 : 클러스터의 설정 정보 관리
– 클러스터 관리 : 클러스터의 서버가 추가되거나 제외될 때 그 정보를 클러스터 노드 간 공유
– 리더 선출 : 흔한 이중화 개념에서 ‘액티브’ 노드로 사용할 노드를 선택
– 락 관리 및 동기화 서비스 : 클러스터 쓰기,연산 과다 등으로 인한 데이터 불일치를 최소화 하기 위한 락(Lock) 수행 및 동기화

이후 진행할 NiFi 클러스터 설정, Kafka, Hadoop 설정을 위한 최소한의 개념을 살펴보자면

① zookeeper 노드 간 정보를 확인하고 Leader가 선택된다.
② kafka broker들이 zookeeper 에 연결된다.
zookeeper는 kafka broker 3개 중 하나를 리더로 선출한다.
zookeeper 노드들은 kafka broker 정보들을 공유한다.
③ consumer는 메시지를 읽기 위해 zookeeper로부터 kafka broker 중 리더가 누구인지 확인한다.
④ consumer는 리더로 선출된 broker로부터 메시지를 받는다.
※ consumer, broker 등에 대한 이야기는 kafka 에 대해 이야기 할 때 설명하겠다.
위 과정은 실제 동작과는 차이가 있다. 단지 이해를 쉽게 하기 위해 서술하였다.

쉽게 설명하자면 노드가 여러개일 경우 노드들 중 실제 동작을 하게 될 노드를 선택하고 사용자가 통신하기 위한 노드의 정보를 관리하고 사용자에 전달해 주는 역할을 한다.
당연한 이야기지만 노드에 장애가 있을 경우 다음 노드를 지정해주는 역할도 한다.