ZooKeeper系列(二)—— Zookeeper 單機環境和集群環境搭建

  • 2019 年 10 月 3 日
  • 筆記

一、單機環境搭建

1.1 下載

下載對應版本 Zookeeper,這裡我下載的版本 3.4.14。官方下載地址:https://archive.apache.org/dist/zookeeper/

# wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz

1.2 解壓

# tar -zxvf zookeeper-3.4.14.tar.gz

1.3 配置環境變數

# vim /etc/profile

添加環境變數:

export ZOOKEEPER_HOME=/usr/app/zookeeper-3.4.14  export PATH=$ZOOKEEPER_HOME/bin:$PATH

使得配置的環境變數生效:

# source /etc/profile

1.4 修改配置

進入安裝目錄的 conf/ 目錄下,拷貝配置樣本並進行修改:

# cp zoo_sample.cfg  zoo.cfg

指定數據存儲目錄和日誌文件目錄(目錄不用預先創建,程式會自動創建),修改後完整配置如下:

# The number of milliseconds of each tick  tickTime=2000  # The number of ticks that the initial  # synchronization phase can take  initLimit=10  # The number of ticks that can pass between  # sending a request and getting an acknowledgement  syncLimit=5  # the directory where the snapshot is stored.  # do not use /tmp for storage, /tmp here is just  # example sakes.  dataDir=/usr/local/zookeeper/data  dataLogDir=/usr/local/zookeeper/log  # the port at which the clients will connect  clientPort=2181  # the maximum number of client connections.  # increase this if you need to handle more clients  #maxClientCnxns=60  #  # Be sure to read the maintenance section of the  # administrator guide before turning on autopurge.  #  # http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance  #  # The number of snapshots to retain in dataDir  #autopurge.snapRetainCount=3  # Purge task interval in hours  # Set to "0" to disable auto purge feature  #autopurge.purgeInterval=1

配置參數說明:

  • tickTime:用於計算的基礎時間單元。比如 session 超時:N*tickTime;
  • initLimit:用於集群,允許從節點連接並同步到 master 節點的初始化連接時間,以 tickTime 的倍數來表示;
  • syncLimit:用於集群, master 主節點與從節點之間發送消息,請求和應答時間長度(心跳機制);
  • dataDir:數據存儲位置;
  • dataLogDir:日誌目錄;
  • clientPort:用於客戶端連接的埠,默認 2181

1.5 啟動

由於已經配置過環境變數,直接使用下面命令啟動即可:

zkServer.sh start

1.6 驗證

使用 JPS 驗證進程是否已經啟動,出現 QuorumPeerMain 則代表啟動成功。

[root@hadoop001 bin]# jps  3814 QuorumPeerMain

二、集群環境搭建

為保證集群高可用,Zookeeper 集群的節點數最好是奇數,最少有三個節點,所以這裡演示搭建一個三個節點的集群。這裡我使用三台主機進行搭建,主機名分別為 hadoop001,hadoop002,hadoop003。

2.1 修改配置

解壓一份 zookeeper 安裝包,修改其配置文件 zoo.cfg,內容如下。之後使用 scp 命令將安裝包分發到三台伺服器上:

tickTime=2000  initLimit=10  syncLimit=5  dataDir=/usr/local/zookeeper-cluster/data/  dataLogDir=/usr/local/zookeeper-cluster/log/  clientPort=2181    # server.1 這個1是伺服器的標識,可以是任意有效數字,標識這是第幾個伺服器節點,這個標識要寫到dataDir目錄下面myid文件里  # 指名集群間通訊埠和選舉埠  server.1=hadoop001:2287:3387  server.2=hadoop002:2287:3387  server.3=hadoop003:2287:3387

2.2 標識節點

分別在三台主機的 dataDir 目錄下新建 myid 文件,並寫入對應的節點標識。Zookeeper 集群通過 myid 文件識別集群節點,並通過上文配置的節點通訊埠和選舉埠來進行節點通訊,選舉出 Leader 節點。

創建存儲目錄:

# 三台主機均執行該命令  mkdir -vp  /usr/local/zookeeper-cluster/data/

創建並寫入節點標識到 myid 文件:

# hadoop001主機  echo "1" > /usr/local/zookeeper-cluster/data/myid  # hadoop002主機  echo "2" > /usr/local/zookeeper-cluster/data/myid  # hadoop003主機  echo "3" > /usr/local/zookeeper-cluster/data/myid

2.3 啟動集群

分別在三台主機上,執行如下命令啟動服務:

/usr/app/zookeeper-cluster/zookeeper/bin/zkServer.sh start

2.4 集群驗證

啟動後使用 zkServer.sh status 查看集群各個節點狀態。如圖所示:三個節點進程均啟動成功,並且 hadoop002 為 leader 節點,hadoop001 和 hadoop003 為 follower 節點。

更多大數據系列文章可以參見 GitHub 開源項目大數據入門指南