【先定一個小目標】Ubuntu 16.04 搭建 zookeeper

ZooKeeper 是 Apache 的一個頂級項目,爲分佈式應用提供高效、高可用的分佈式協調服務,提供了諸如數據發佈/訂閱、負載均衡、命名服務、分佈式協調/通知和分佈式鎖等分佈式基礎服務。因爲 ZooKeeper 便捷的使用方式、卓越的性能和良好的穩定性,被普遍地應用於諸如 Hadoop、HBase、Kafka 和 Dubbo 等大型分佈式系統中。html

1、運行模式

Zookeeper 有三種運行模式:單機模式、僞集羣模式和集羣模式。apache

一、 單機模式

這種模式通常適用於開發測試環境,一方面咱們沒有那麼多機器資源,另外就是平時的開發調試並不須要極好的穩定性。服務器

在 Linux 環境下運行單機模式須要執行如下步驟:session

1). 準備 Java 運行環境

安裝 Java 1.6 或更高版本的 JDK,並配置好 Java 相關的環境變量 $JAVA_HOME 負載均衡

sudo apt-get install default-jdk

2). 下載 ZooKeeper 安裝包

下載地址:http://zookeeper.apache.org/releases.html。選擇最新的 stable 版本並解壓到指定目錄,咱們用 $ZK_HOME 表示該目錄。分佈式

命令安裝Zookeeperoop

cd /home/tomny/zookeeper
sudo wget http://mirror.bjtu.edu.cn/apache/zookeeper/stable/zookeeper-3.4.9.tar.gz #下載zookeeper
tar xvzf zookeeper-3.4.9.tar.gz #解壓
ln -s zookeeper-3.4.9 zookeeper #創建軟連接

編輯/etc/profile 設置環境變量性能

# zookeeper配置
export ZOOKEEPER_INSTALL=/home/hadoop/zookeeper-3.3.5
export PATH=$PATH:$ZOOKEEPER_INSTALL/bin

3). 配置 zoo.cfg

首次使用 ZooKeeper,須要將 $ZK_HOME 下的 zoo_sample.cfg 文件重命名爲 zoo.cfg,並進行如下配置測試

tickTime=2000    ##Zookeeper最小時間單元,單位毫秒(ms),默認值爲3000
dataDir=/home/tommy/zookeeper-3.4.9/data    ##Zookeeper服務器存儲快照文件的目錄,必須配置
dataLogDir=/home/tomny/zookeeper-3.4.9/log     ##Zookeeper服務器存儲事務日誌的目錄,默認爲dataDir
clientPort=2181    ##服務器對外服務端口,通常設置爲2181
initLimit=5    ##Leader服務器等待Follower啓動並完成數據同步的時間,默認值10,表示tickTime的10倍
syncLimit=2    ##Leader服務器和Follower之間進行心跳檢測的最大延時時間,默認值5,表示tickTime的5倍

4). 啓動服務

使用 $ZK_HOME/bin 目錄下的 zkServer.sh 腳本進行服務的啓動。ui

cd /home/tomny/zookeeper-3.4.9/
bin/zkServer.sh start
bin/zkCli.sh -server localhost:2181

在查看zookeeper狀態時遇到

tomny@tomny-virtual-machine:~/zookeeper-3.4.9$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/tomny/zookeeper-3.4.9/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.

分析方法:

先stop 掉原zk

zkServer.sh stop

而後以start-foreground方式啓動,會看到啓動日誌

zkServer.sh start-foreground
tomny@tomny-virtual-machine:~/zookeeper-3.4.9$ bin/zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/tomny/zookeeper-3.4.9/bin/../conf/zoo.cfg
Mode: standalone

5)、鏈接zookeeper

bin/zkCli.sh -server localhost:2181
Connecting to localhost:2181
如下省略1W字。。
WatchedEvent state:SyncConnected type:None path:null
[zk: localhost:2181(CONNECTED) 0]

6)、鍵入help查看全部支持的命令

[zk: localhost:2181(CONNECTED) 0] help

ZooKeeper -server host:port cmd args

        stat path [watch]

        set path data [version]

        ls path [watch]

        delquota [-n|-b] path

        ls2 path [watch]

        setAcl path acl

        setquota -n|-b val path

        history

        redo cmdno

        printwatches on|off

        delete path [version]

        sync path

        listquota path

        rmr path

        get path [watch]

        create [-s] [-e] path data acl

        addauth scheme auth

        quit

        getAcl path

        close

        connect host:port

 

二、經常使用命令

1)查看當前節點列表

[zk: localhost:2181(CONNECTED) 1] ls /

[zookeeper]

 

2)建立節點

[zk: localhost:2181(CONNECTED) 2] create /test "test"

Created /test

[zk: localhost:2181(CONNECTED) 3] ls /

[zookeeper, test]

3)查看節點數據

[zk: localhost:2181(CONNECTED) 4] get /test

"test"

cZxid = 0x300000007

ctime = Thu Sep 24 05:54:51 PDT 2015

mZxid = 0x300000007

mtime = Thu Sep 24 05:54:51 PDT 2015

pZxid = 0x300000007

cversion = 0

dataVersion = 0

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 6

numChildren = 0

4)設置節點數據

[zk: localhost:2181(CONNECTED) 7] set /test "111111" 

cZxid = 0x300000007

ctime = Thu Sep 24 05:54:51 PDT 2015

mZxid = 0x300000008

mtime = Thu Sep 24 05:57:40 PDT 2015

pZxid = 0x300000007

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 8

numChildren = 0

[zk: localhost:2181(CONNECTED) 8] get /test

"111111"

cZxid = 0x300000007

ctime = Thu Sep 24 05:54:51 PDT 2015

mZxid = 0x300000008

mtime = Thu Sep 24 05:57:40 PDT 2015

pZxid = 0x300000007

cversion = 0

dataVersion = 1

aclVersion = 0

ephemeralOwner = 0x0

dataLength = 8

numChildren = 0

 

5)刪除節點

[zk: localhost:2181(CONNECTED) 9] delete /test

[zk: localhost:2181(CONNECTED) 10] ls /

[zookeeper]

 

三、zookeeper四字命令的使用

傳遞四個字母的字符串給zookeeper,zookeeper會返回一些有用的信息。

zookeeper

四字命令

功能描述

conf

輸出相關服務配置的詳細信息。

cons

列出全部鏈接到服務器的客戶端的徹底的鏈接 /會話的詳細信息。包括「接受 / 發送」的包數量、會話 id 、操做延遲、最後的操做執行等等信息。

dump

列出未經處理的會話和臨時節點。

envi

輸出關於服務環境的詳細信息(區別於 conf命令)。

reqs

列出未經處理的請求

ruok

測試服務是否處於正確狀態。若是確實如此,那麼服務返回「imok 」,不然不作任何相應。

stat

輸出關於性能和鏈接的客戶端的列表。

wchs

列出服務器 watch的詳細信息。

wchc

經過 session列出服務器 watch的詳細信息,它的輸出是一個與watch相關的會話的列表。

wchp

經過路徑列出服務器 watch的詳細信息。它輸出一個與 session相關的路徑。

相關文章
相關標籤/搜索