從事大數(shù)據(jù),還不知道Zookeeper是啥?帶你安裝Zookeeper集群
zookeeper概述
什么是zookeeper?為什么zookeeper在大數(shù)據(jù)領(lǐng)域如此重要?下面我們從最基礎(chǔ)的開始了解。
zookeeper是一個(gè)分布式協(xié)調(diào)服務(wù)的開源框架。其主要作用是用來(lái)解決分布式集群中的數(shù)據(jù)一致性問題。zookeeper本質(zhì)上是一個(gè)小文件系統(tǒng)。其數(shù)據(jù)結(jié)構(gòu)類似于文件系統(tǒng)的目錄樹,zookeeper可以對(duì)這些節(jié)點(diǎn)進(jìn)行有效的管理。通過節(jié)點(diǎn)管理,來(lái)達(dá)到監(jiān)控和維護(hù)節(jié)點(diǎn)數(shù)據(jù)的目標(biāo)。通過監(jiān)控?cái)?shù)據(jù)的變化,來(lái)達(dá)到管理集群的目的。常見的應(yīng)用如:配置管理、名稱服務(wù)、分布式消息隊(duì)列、分布式鎖、分布式協(xié)調(diào)服務(wù)等。

zookeeper特性
數(shù)據(jù)一致性:在zookeeper集群中,每個(gè)server都保存著一份相同的數(shù)據(jù)副本,client無(wú)論連接到哪一個(gè)server,展示的數(shù)據(jù)都是一致的,這是zookeeper一個(gè)非常重要的特性,也是其在大數(shù)據(jù)領(lǐng)域廣泛應(yīng)用的基礎(chǔ)。
可靠性:如果客戶端請(qǐng)求被任意一個(gè)server接受,那么該請(qǐng)求就會(huì)被整個(gè)集群接受。
順序性:有全局有序和偏序兩種。全局有序是指如果在一臺(tái)server上,消息a在消息b先發(fā)布,那么在所有server上,消息a都在消息b先發(fā)布。而偏序是指消息a在消息b前被同一個(gè)server發(fā)布,那么消息a必定在消息b的前面。
數(shù)據(jù)更新的原子性:一次數(shù)據(jù)更新要么成功,要么失敗,不存在中間狀態(tài)。
實(shí)時(shí)性:zookeeper保證客戶端在一定的時(shí)間間隔內(nèi)獲得服務(wù)器的響應(yīng),無(wú)論是成功還是失敗。
zookeeper角色

leader:是集群正常工作的核心。事務(wù)性(寫操作)請(qǐng)求的唯一處理者和調(diào)度者。集群內(nèi)部的管理者和調(diào)度者。
follower:處理非事務(wù)性請(qǐng)求,參與集群leader選舉,轉(zhuǎn)發(fā)事務(wù)性請(qǐng)求給leader.
observer:處理非事務(wù)性請(qǐng)求,不參與leader選舉,轉(zhuǎn)發(fā)事務(wù)性請(qǐng)求給leader。如果集群的讀請(qǐng)求很多,可以添加observer角色,提高集群的非事務(wù)處理能力。
zookeeper安裝
zookeeper的安裝分為單機(jī)版和集群版,單機(jī)版主要用來(lái)調(diào)試。下面我們演示在虛擬機(jī)中安裝集群版。zookeeper集群通常由奇數(shù)個(gè)節(jié)點(diǎn)組成,這是為了保證集群leader的選舉(基于paxos算法,此篇文章不做介紹)。本次演示使用3臺(tái)機(jī)器如何安裝zookeeper集群。
1.安裝jdk,三臺(tái)機(jī)器都要安裝
- 下載地址https://www.oracle.com/technetwork/java/javase/downloads
- /index.htmljdk-8u211-linux-x64.rpm#安裝rpm -ivh jdk-8u211-linux-
- x64.rpm#切換javaalternatives --config java
2.下載zookeeper安裝包
- 下載地址:https://archive.apache.org/dist/zookeeper/安裝包版本:zookeeper-3.4.5.tar.gz
3.配置主機(jī)名映射
- vim /etc/hosts192.168.80.10 node1192.168.80.11 node2192.168.80.12 node3
4.修改zookeeper配置文件
- tar -zxvf zookeeper-3.4.5.tar.gz -C /servers/cd /serversln -s
- zookeeper-3.4.5/ zookeepercd /servers/zookeeper/confcp zoo_sample.cfg
- zoo.cfgvim zoo.cfg#在zoo.cfg中添加如下配置信息
- tickTime=2000dataDir=/servers/zookeeper
- /dataclientPort=2181server.1=node1:2888:3888server.2=node2:2888:3888s
- erver.3=node3:2888:3888
5.設(shè)置myid文件
myid文件只包含一個(gè)數(shù)字,數(shù)值范圍在1-255,myid文件的位置在數(shù)據(jù)目錄下,由dataDir參數(shù)指定
- cd /servers/zookeeper/dataecho 1 > myid注意myid中的值必須是唯一的,在
- 這里我們?nèi)_(tái)機(jī)器分別設(shè)置為1,2,3
6.啟動(dòng)zookeeper
- ./zkServer.sh start
7.查看角色狀態(tài)
- /servers/zookeeper/bin/zkServer.sh status
zookeeper集群環(huán)境已經(jīng)搭建好了,下一篇文章我們看看如何使用zookeeper,zookeeper又有哪些有趣的特性。