zookeeper的默認配置文件為zookeeper/conf/zoo_sample.cfg,需要將其修改為zoo.cfg。其中各配置項的含義,解釋如下:
1.tickTime:Client-Server通信心跳時間
Zookeeper 服務器之間或客戶端與服務器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。tickTime以毫秒為單位。
tickTime=2000
2.initLimit:Leader-Follower初始通信時限
集群中的follower服務器(F)與leader服務器(L)之間初始連接時能容忍的最多心跳數(tickTime的數量)。
initLimit=5
3.syncLimit:Leader-Follower同步通信時限
集群中的follower服務器與leader服務器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=2
4.dataDir:數據文件目錄
Zookeeper保存數據的目錄,默認情況下,Zookeeper將寫數據的日志文件也保存在這個目錄里。
dataDir=/home/michael/opt/zookeeper/data
5.clientPort:客戶端連接端口
客戶端連接 Zookeeper 服務器的端口,Zookeeper 會監聽這個端口,接受客戶端的訪問請求。
clientPort=2181
6.服務器名稱與地址:集群信息(服務器編號,服務器地址,LF通信端口,選舉端口)
這個配置項的書寫格式比較特殊,規則如下:
server.N=YYY:A:B
server.1=itcast05:2888:3888
server.2=itcast06:2888:3888
server.3=itcast07:2888:3888
7.ZK為什么設置為奇數個?
zookeeper有這樣一個特性:集群中只要有過半的機器是正常工作的,那么整個集群對外就是可用的。也就是說如果有2個zookeeper,那么只要有1個死了zookeeper就不能用了,因為1沒有過半,所以2個zookeeper的死亡容忍度為0;同理,要是有3個zookeeper,一個死了,還剩下2個正常的,過半了,所以3個zookeeper的容忍度為1;同理你多列舉幾個:2 -> 0; 3 -> 1; 4 - >1; 5 -> 2; 6 -> 2會發現一個規律,2n和2n-1的容忍度是一樣的,都是n-1,所以為了更加高效,何必增加那一個不必要的zookeeper呢。
8.ZK集群安裝
1.上傳zk安裝包 2.解壓 3.配置(先在一台節點上配置) 3.1將文件/conf/zoo_sample.cfg改為/conf/zoo.cfg mv zoo_sample.cfg zoo.cfg 3.2修改配置文件(zoo.cfg) dataDir=/hadoop/zookeeper-3.4.5/tmp server.1=hadoop04:2888:3888 server.2=hadoop05:2888:3888 server.3=hadoop06:2888:3888 3.3在(dataDir=/hadoop/zookeeper-3.4.5/tmp)創建一個myid文件,里面內容是server.N中的N(server.2里面內容為2) echo "1" > myid 3.4將配置好的zk拷貝到其他節點 scp -r /hadoop/zookeeper-3.4.5/ hadoop05:/hadoop/ scp -r /hadoop/zookeeper-3.4.5/ hadoop06:/hadoop/ 3.5注意:在其他節點上一定要修改myid的內容 在hadoop05應該講myid的內容改為2 (echo "2" > myid) 在hadoop06應該講myid的內容改為3 (echo "3" > myid) 4.啟動集群 分別啟動zk ./zkServer.sh start