2. 1. Zookeeper Basics
분산 파일 시스템과 연동되어 SPOF 제거 및 Lock 관리용으로 활용되며, 자체 메타 정보를 저
장할 수 있는 저장 메커니즘을 가지고 있음.
용도 특징
동기화(락 관리) 형상 : File System Model
Configuration information 저장 znode는 이름 변경 및 저장 매체에 의
(sharding functions, system 미를 부여하지 못함
configs, etc) Path의 기본 단위는 znode
네이밍 서비스 znode에는 ., .., 공백 등을 사용할 수 없
High Availability 음
- Automagic Failover znode 타입 : ephemeral, persistent
- Scalability "zookeeper" 문자열은 예약어로 사용
클러스터 멤버쉽 관리 불가
데이터는 key-value 형태로 저장
Atomicity : Single Node Operations,
Small Data
High speed
- 50,000 updates per second
- 200,000 reads per second
하호진
2
3. 2. Zookeeper Architecture
Leader/Follower 구조로, 각 서버는 Read/Write가 가능하며 클라이언트가 Follower에 Write
했을 경우 그 이벤트는 Leader에게 전달되어 다른 Follower들이 데이터를 전달하는 구조.
Zookeeper Architecture
Zookeeper Service
Follower Follower Leader Follower Follower
Write
Client Client Client Client Client Client Client
모든 서버는 데이터 카피본을 저장하고 있음
리더는 구동 시 zookeeper 내부 알고리즘에 의해 자동 선정됨
Followers 서버들은 클라이언트로부터 받은 모든 업데이트 이벤트는 리더에게 전달됨
업데이트 응답은 모든 서버들에게 데이터가 저장완료 되었을 때 전달됨
하호진
3
4. 3. Z-Nodes Basics
Znode는 Zookeeper 구성 요소의 Unique Absolute Paths(≒ file system)를 식별할 수 있는
최소 단위.
Z-nodes hierarchy
Z-Nodes
/
pepsi@paran.com mimul@paran.com
바탕화면 내문서 바탕화면 내문서
top.location
PATH=“/mimul@paran.com/바탕화면/프로젝트1.doc”
프로젝트1.doc
DATA=“cd=20101220134451&sz=1567120”
위험관리.txt
※ Znode는 1M를 넘지 못하며, data를 가질 수 있다.
- Ephemeral : 세션 종료 시 znode 삭제되고, Children 가질 수 없음
- Persistent : 세션 종료되어도 정보 유지
하호진
4
5. 4. ZooKeeper 9 Basic Operations
9개의 내부 operation으로 이루어져 있고, 각 node들은 ACL을 갖고 있으며, ACL은
Create/Read/Write/Delete/Admin으로 구성됨.
Operation ACL Description
create Create Creates a znode. (parent must already exist)
delete Delete Deletes a znode (must not have any children)
exists Read Tests whether a znode exists and retrieves its metadata
getACL, setACL Admin Gets/Sets the ACL(permissions) for a znode
getChildren Read Gets a list of the children of a znode
getData, setData Read/Write Gets/Sets the data associated with a znode
sync - Synchronizes a client’s view of a znode
하호진
5
6. 5. ZooKeeper Watches
Zookeeper가 Znode가 변경 시 Noti를 Client로 trigger 해주어, Zookeeper내에서 어떤 상
황이 발생했는지 알 수 있음.
create delete
Operation setData
znode child znode child
exists NodeCreated NodeDeleted NodeDataChanged
getData NodeDeleted NodeDataChanged
getChildren NodeChildrenChanged NodeDeleted NodeChildrenChanged exists
하호진
6
7. 6. Zookeeper Install
다운로드
– wget http://mirror.apache-kr.org//hadoop/zookeeper/zookeeper-3.3.2/zookeeper-3.3.2.tar.gz
zoo.cfg 설정 추가
– tickTime=10000 # heartbeats용, 세션 타임 관련 있음
– dataDir=/database/zookeeper/data #데이터 저장 디렉토리 지정
– maxClientCnxns=0 #클라이언트 제한을 unlimit로 설정
– server.1=mimul:2888:3888 # ZooKeeper Servers, 포트는 ZooKeeper가 동작하기 위해서 필요한 포트
# 앞 포트 : 서버 갂의 통싞, 뒤에 포트는 Leader 선출에 사용
Zookeeper 서버 실행
– ./zkServer.sh start
Zookeeper 클라이언트 실행
– /zkCli.sh -server 127.0.0.1:2181
– ls/get/set [path] 등등의 커맨드 확인
하호진
7