ZooKeeper系列(二)—— Zookeeper 單機環境和叢集環境搭建
阿新 • • 發佈:2019-08-16
一、單機環境搭建
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 開源專案: 大資料入門指南