Data Engineering/HDFS

[ Zookeeper ] 주키퍼(Zookeeper) 에 대한 간단한 스터디

쟈누이 2021. 6. 11. 16:56
반응형

 

 

 

1. Zookeeper 란 ?


분산 시스템 설계시 문제 중 하나는 것은 아래와 같다

  • 분산된 시스템 간에 정보를 어떻게 공유할 것인가
  • 클러스터에 있는 서버들의 상태를 어떻게 체크할 것인가
  • 분산된 서버들 간에 도기화를 위한 락(Lock) 을 어떻게 처리할 것인가

 

위 문제를 해결하는 시스템을 코디네이션 시스템 이라고 한다. 이를 대표하는 서비스는 Apache Zookeeper 이다. 코디네이션 시스템은 분산 시스템 네이서 중요한 상태 정보나 설정 정보 등을 유지하기 때문에, 코디네이션 서비스의 장애는 전체 시스템의 장애를 유발할 수 있기에, 이중화 등을 통한 고가용성을 제공해서 문제가 발생하지 않게 해야한다.

 

Zookeeper 는 이런 코디네이션 시스템의 이런 특성을 잘 제공하고 있다.  Zookeeper 는 자체적으로 클러스터링을 제공하며, 장애에도 데이터 유실 없이 fail over / fail back 이 가능하다

 

 

 

 

 

 

2. Zookeeper 의 특징


주키퍼의 설계 목표는 간단하고, 복제되고, 순서가 있고 빠르다 이 4가지이다. 주키퍼는 간단하게 설계되어 있으며 아래의 이미지와 같은 형테로 계층형 네임스페이스를 가지고 데이터를 저장한다.

 

이때, 데이터를 메모리상에서 유지하여 높은 처리량과 낮은 지연률을 가능하게 했다.

  • 각 계층의 네임 스페이스를 znode 라고 하며 이곳에 데이터를 저장한다

 

  • 서버들끼리 서로 연결되어 데이터가 복제되는데, 주키퍼 서비스는 메모리와 영속적인 저장소에 트랜잭션 로그, 스냅샷을 유지하며 서버의 과반수가 살아있으면 서비스 유지가 가능
  • 각 업데이터 순서를 기록하며, 이 순서는 주키퍼 트랜잭션에 사용됨(동기화가 가능)
  • 읽는 작업에서 빠르며, 쓰는 작업보다 읽기에 적합하다.

 

 

 

 

 

 

3. Zookeeper 작동방식


쓰기 요청을 받으면 브로드캐스트를 통해 연결된 서버들에게 데이터를 보내고 데이터베이스에 저장된다. 그리고 읽기 요청이 된, 그 데이터베이스에 요청을 보낸 후 응답을 받는다. 

 

반응형