SlideShare a Scribd company logo
1 of 8
Download to read offline
A Review Of Zookeeper
            Mimul.com : 하호진
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
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
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
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
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
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
7. Demo




              하호진
8

More Related Content

What's hot

실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은jieun kim
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기JeongHun Byeon
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은jieun kim
 
MySQL_Fabric_운영시유의사항
MySQL_Fabric_운영시유의사항MySQL_Fabric_운영시유의사항
MySQL_Fabric_운영시유의사항I Goo Lee
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs근호 최
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기Minchul Jung
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7Ji-Woong Choi
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱Jong Wook Kim
 
[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemdJi-Woong Choi
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개흥배 최
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석Daeyong Shin
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법Ji-Woong Choi
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기NAVER D2
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례NAVER D2
 
카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox떠리 이
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shellJay Park
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Daum DNA
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.NAVER D2
 

What's hot (20)

실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
20150502 unix v6로 배우는 커널의 원리와 구조 1 김지은
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기
 
150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은150625 마이크로커널 운영체제 김지은
150625 마이크로커널 운영체제 김지은
 
MySQL_Fabric_운영시유의사항
MySQL_Fabric_운영시유의사항MySQL_Fabric_운영시유의사항
MySQL_Fabric_운영시유의사항
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
실무로 배우는 시스템 성능 최적화 - 4부. 프로세스 이해하기
 
[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7[오픈소스컨설팅]systemd on RHEL7
[오픈소스컨설팅]systemd on RHEL7
 
이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱이것이 리눅스다 - 김종욱
이것이 리눅스다 - 김종욱
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
 
[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd[오픈소스컨설팅]About RHEL7 systemd
[오픈소스컨설팅]About RHEL7 systemd
 
Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개Mongodb2.2와 2.4의 신 기능 소개
Mongodb2.2와 2.4의 신 기능 소개
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
 
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
[오픈소스컨설팅]Day #1 MySQL 엔진소개, 튜닝, 백업 및 복구, 업그레이드방법
 
[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기[234]멀티테넌트 하둡 클러스터 운영 경험기
[234]멀티테넌트 하둡 클러스터 운영 경험기
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례
 
카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox카산드라를 설치해서 테스트 해보자 with virtualbox
카산드라를 설치해서 테스트 해보자 with virtualbox
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell
 
Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012Cassandra 멘붕기 | Devon 2012
Cassandra 멘붕기 | Devon 2012
 
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
[135] 오픈소스 데이터베이스, 은행 서비스에 첫발을 내밀다.
 

Viewers also liked

메시지 발송 브로커를 만들어보자
메시지 발송 브로커를 만들어보자메시지 발송 브로커를 만들어보자
메시지 발송 브로커를 만들어보자Bongki Seo
 
Best work so far (new)
Best work so far (new)Best work so far (new)
Best work so far (new)shannonaharris
 
채팅서버의 부하 분산 사례
채팅서버의 부하 분산 사례채팅서버의 부하 분산 사례
채팅서버의 부하 분산 사례John Kim
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례Taehyeon Oh
 
Mqtt 소개
Mqtt 소개Mqtt 소개
Mqtt 소개Junho Lee
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기iFunFactory Inc.
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장Dylan Ko
 

Viewers also liked (8)

메시지 발송 브로커를 만들어보자
메시지 발송 브로커를 만들어보자메시지 발송 브로커를 만들어보자
메시지 발송 브로커를 만들어보자
 
Best work so far (new)
Best work so far (new)Best work so far (new)
Best work so far (new)
 
채팅서버의 부하 분산 사례
채팅서버의 부하 분산 사례채팅서버의 부하 분산 사례
채팅서버의 부하 분산 사례
 
빅데이터 구축 사례
빅데이터 구축 사례빅데이터 구축 사례
빅데이터 구축 사례
 
HBase란
HBase란HBase란
HBase란
 
Mqtt 소개
Mqtt 소개Mqtt 소개
Mqtt 소개
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
[우리가 데이터를 쓰는 법] 모바일 게임 로그 데이터 분석 이야기 - 엔터메이트 공신배 팀장
 

Similar to A review of zookeeper 2010.12

서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드KwangSeob Jeong
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍Yong Joon Moon
 
kubernetes from beginner to advanced
kubernetes  from beginner to advancedkubernetes  from beginner to advanced
kubernetes from beginner to advancedOracle Korea
 
kubernetes : From beginner to Advanced
kubernetes : From beginner to Advancedkubernetes : From beginner to Advanced
kubernetes : From beginner to AdvancedInho Kang
 
Hadoop High Availability Summary
Hadoop High Availability SummaryHadoop High Availability Summary
Hadoop High Availability SummaryChan Shik Lim
 
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Seungmin Yu
 
Monitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnMonitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnDataya Nolja
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Androidtaeinkim6
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안Lee Ji Eun
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02정출 김
 
110922 oracle ap
110922 oracle ap110922 oracle ap
110922 oracle apCana Ko
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용Youngjae Kim
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdfSeokju Hong
 
Redis Overview
Redis OverviewRedis Overview
Redis Overviewkalzas
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 

Similar to A review of zookeeper 2010.12 (20)

서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
파이썬 병렬프로그래밍
파이썬 병렬프로그래밍파이썬 병렬프로그래밍
파이썬 병렬프로그래밍
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
kubernetes from beginner to advanced
kubernetes  from beginner to advancedkubernetes  from beginner to advanced
kubernetes from beginner to advanced
 
kubernetes : From beginner to Advanced
kubernetes : From beginner to Advancedkubernetes : From beginner to Advanced
kubernetes : From beginner to Advanced
 
Hadoop High Availability Summary
Hadoop High Availability SummaryHadoop High Availability Summary
Hadoop High Availability Summary
 
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
Custom DevOps Monitoring System in MelOn (with InfluxDB + Telegraf + Grafana)
 
Monitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOnMonitoring System for DevOps - Case of MelOn
Monitoring System for DevOps - Case of MelOn
 
MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Android
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
ARTIK 710 IoT class 02
ARTIK 710 IoT class 02ARTIK 710 IoT class 02
ARTIK 710 IoT class 02
 
110922 oracle ap
110922 oracle ap110922 oracle ap
110922 oracle ap
 
Image Deep Learning 실무적용
Image Deep Learning 실무적용Image Deep Learning 실무적용
Image Deep Learning 실무적용
 
쓰레드.pdf
쓰레드.pdf쓰레드.pdf
쓰레드.pdf
 
Redis Overview
Redis OverviewRedis Overview
Redis Overview
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 

A review of zookeeper 2010.12

  • 1. A Review Of Zookeeper Mimul.com : 하호진
  • 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
  • 8. 7. Demo 하호진 8