Zookeeper自探
自己的話:每天都要保持前進,我勢必要有強勁的實力再跟全新的自己問好。
多認識更加優秀的人,你會討厭現在的自己。
Zookeeper安裝及配置
一、分佈式安裝部署
1.集羣規劃
在 hadoop1、hadoop2 和 hadoop3 三個節點上部署 Zookeeper
2.安裝前準備
(1)安裝 Jdk
(2)拷貝 Zookeeper 安裝包到 Linux 系統下
(3)解壓到指定目錄
[hadoop1 software]$ tar -zxvf zookeeper-3.4.10.tar.gz -C /opt/module/
3.配置服務器編號
(1)在/opt/module/zookeeper-3.4.10/這個目錄下創建 zkData
[hadoop1 zookeeper-3.4.10]$ mkdir zkData
(2)在/opt/module/zookeeper-3.4.10/zkData 目錄下創建一個 myid 的文件
[hadoop1 zkData]$ touch myid
添加 myid 文件,注意一定要在 linux 裏面創建,在 notepad++裏面很可能亂碼
(3)編輯 myid 文件
[hadoop1 zkData]$ vi myid
在文件中添加與 server 對應的編號:
1
4.配置 zoo.cfg 文件
(1)重命名/opt/module/zookeeper-3.4.10/conf 這個目錄下的 zoo_sample.cfg 爲 zoo.cfg
[atguigu@hadoop102 conf]$ mv zoo_sample.cfg zoo.cfg
(2)打開 zoo.cfg 文件
[hadoop102 conf]$ vim zoo.cfg
修改數據存儲路徑配置
dataDir=/opt/module/zookeeper-3.4.10/zkData
打開倒數第一、第三行autopurge的註釋
增加如下配置:
#######################cluster##########################
server.1=hadoop1:2888:3888
server.2=hadoop2:2888:3888
server.3=hadoop3:2888:3888
(3)拷貝配置好的 zookeeper 到其他機器上
[hadoop1 module]# scp -r zookeeper-3.4.14/ hadoop2:$PWD
[hadoop1 module]# scp -r zookeeper-3.4.14/ hadoop3:$PWD
並分別在 hadoop2、hadoop3 上修改 myid 文件中內容爲2、3
5.集羣操作
(1)分別啓動 Zookeeper
[hadoop1 zookeeper-3.4.10]$ bin/zkServer.sh start
[hadoop2 zookeeper-3.4.10]$ bin/zkServer.sh start
[hadoop3 zookeeper-3.4.10]$ bin/zkServer.sh start
(2)查看狀態
[hadoop1 zookeeper-3.4.10]$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-
3.4.10/bin/../conf/zoo.cfg
Mode: follower
[hadoop2 zookeeper-3.4.10]$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-
3.4.10/bin/../conf/zoo.cfg
Mode: leader
[hadoop3 zookeeper-3.4.5]$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/module/zookeeper-
3.4.10/bin/../conf/zoo.cfg
Mode: follower
二、配置參數解讀
Zookeeper中的配置文件zoo.cfg中參數含義解讀如下:
1. tickTime =2000:通信心跳數Zookeeper 服務器與客戶端心跳時間,單位毫秒
Zookeeper使用的基本時間,服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個tickTime時間就會發送一個心跳,時間單位爲毫秒。
它用於心跳機制,並且設置最小的session超時時間爲兩倍心跳時間。(session的最小超
時時間是2*tickTime)
2. initLimit =10:LF 初始通信時限
集羣中的Follower跟隨者服務器與Leader領導者服務器之間初始連接時能容忍的最多心跳數(tickTime的數量),用它來限定集羣中的Zookeeper服務器連接到Leader的時限。
3. syncLimit =5:LF 同步通信時限
集羣中Leader與Follower之間的最大響應時間單位,假如響應超過syncLimit * tickTime,Leader認爲Follwer死掉,從服務器列表中刪除Follwer。
4. dataDir:數據文件目錄+數據持久化路徑
主要用於保存 Zookeeper 中的數據。
5. clientPort =2181:客戶端連接端口
監聽客戶端連接的端口。
6. server.A=B:C:D
- A 是一個數字,表示這個是第幾號服務器;
集羣模式下配置一個文件 myid,這個文件在 dataDir 目錄下,這個文件裏面有一個數據就是 A 的值,Zookeeper 啓動時讀取此文件,拿到裏面的數據與 zoo.cfg 裏面的配置信息比較從而判斷到底是哪個server。 - B 是這個服務器的地址;
- C 是這個服務器 Follower 與集羣中的 Leader 服務器交換信息的端口;
- D 是萬一集羣中的 Leader 服務器掛了,需要一個端口來重新進行選舉,選出一個新的Leader,而這個端口就是用來執行選舉時服務器相互通信的端口。