您好,登錄后才能下訂單哦!
Java大數(shù)據(jù)開發(fā)中ZooKeeper的入門操作是怎樣的,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
1.1 概述
ZooKeeper翻譯中文名稱是動(dòng)物園管理員。那是不是就代表和動(dòng)物有關(guān)呢?答案說是也是,說不是也不是。為什么這么說呢?動(dòng)物園管理員管理的其實(shí)不是真正的動(dòng)物,而是很多以動(dòng)物命名的框架運(yùn)行會(huì)用到ZooKeeper,大數(shù)據(jù)中很多框架都與動(dòng)物有關(guān),比如pig,hive等等,這就是奇葩之處。老外們對(duì)框架的命名也太隨意了,想一出是一出。
ZooKeeper是一個(gè)開源的分布式的,為分布式應(yīng)用提供協(xié)調(diào)服務(wù)的Apache項(xiàng)目,Apache出品,所以肯定差不到哪去咯。
1.2 工作機(jī)制
Zookeeper從設(shè)計(jì)模式角度來理解:是一個(gè)基于觀察者模式設(shè)計(jì)的分布式服務(wù)管理框架,它負(fù)責(zé)存儲(chǔ)和管理大家都關(guān)心的數(shù)據(jù),然后接受觀察者的注冊(cè),一旦這些數(shù)據(jù)的狀態(tài)發(fā)生變化,Zookeeper就將負(fù)責(zé)通知已經(jīng)在Zookeeper上注冊(cè)的那些觀察者做出相應(yīng)的反應(yīng),從而實(shí)現(xiàn)集群中類似Master/Slave管理模式,不好理解,我們看下圖:
我們?cè)敿?xì)來介紹工作機(jī)制里的每一步:
① 圖中1表示,服務(wù)器啟動(dòng)的時(shí)候,都會(huì)向ZooKeeper(以下簡稱ZK)進(jìn)行注冊(cè)信息;
② 圖中2表示,客戶端獲取到當(dāng)前在線服務(wù)器列表,并且注冊(cè)監(jiān)聽;
③ 圖中3表示,有一個(gè)哥們手殘,搞掛了一臺(tái)服務(wù)器,服務(wù)器2現(xiàn)在掛掉;
④ 圖中4表示,ZK一段時(shí)間內(nèi),沒有接收到服務(wù)器2發(fā)射的小biubiu,會(huì)通過服務(wù)器上下線事件通知客戶端
⑤ 圖中5表示,重新獲取服務(wù)器列表,并注冊(cè)監(jiān)聽。
1.3 ZK特點(diǎn)
上圖是一個(gè)ZK集群,我們看一下他們的特點(diǎn):
① ZK集群,是由一個(gè)領(lǐng)導(dǎo)者(leader),多個(gè)追隨者(follower)組成
② 只要有半數(shù)以上的節(jié)點(diǎn)存活,ZK集群就能正常使用,肯定有小可愛會(huì)有疑問,那如果四個(gè)機(jī)器掛掉兩個(gè)呢?這樣的話,我們的集群就剩了一個(gè)半數(shù),不叫“半數(shù)以上”好嗎,所以四個(gè)掛掉兩個(gè)也是不能用滴。為了區(qū)分什么是半數(shù)以上,大家記好了,搭建集群的時(shí)候,我們搭建奇數(shù)臺(tái),不就好辦了么。
③ 每個(gè)服務(wù)端都會(huì)保存一份數(shù)據(jù)副本,客戶端無論連接哪一個(gè)服務(wù)端,數(shù)據(jù)都是一致的。小伙伴們要搞清楚咯:這里的數(shù)據(jù)指的是集群服務(wù)器的狀態(tài)信息,與你數(shù)據(jù)庫那些數(shù)據(jù)沒有半毛錢關(guān)系。
④ 來自同一個(gè)客戶端的更新請(qǐng)求,按期發(fā)送順序,依次執(zhí)行。
⑤ 原子性:集群機(jī)器一次數(shù)據(jù)更新,要么全部成功,要么全部失敗。
⑥ 在一定時(shí)間范圍內(nèi),客戶端能讀到最新數(shù)據(jù)。
這么些特點(diǎn)至少要理解半數(shù)以上喲(當(dāng)然,主要是前幾條了)
1.4 應(yīng)用場景
1.4.1 統(tǒng)一命名服務(wù)
分布式環(huán)境下,需要對(duì)應(yīng)用/服務(wù)進(jìn)行統(tǒng)一命名,便于識(shí)別。
1.4.2 統(tǒng)一配置管理
分布式環(huán)境下,要求集群中,所有節(jié)點(diǎn)的配置信息是一致的,對(duì)配置文件修改后也需要快速同步到各個(gè)節(jié)點(diǎn)上。配置管理就可交由ZK實(shí)現(xiàn),過程如下:
① 可將配置信息寫入ZK的一個(gè)節(jié)點(diǎn)
② 每個(gè)客戶端服務(wù)器監(jiān)聽這個(gè)節(jié)點(diǎn)
③ 一旦節(jié)點(diǎn)數(shù)據(jù)被修改,ZK將通知每個(gè)客戶端服務(wù)器
1.4.3 統(tǒng)一集群管理
分布式環(huán)境中需要實(shí)時(shí)掌握每個(gè)節(jié)點(diǎn)的狀態(tài),并且根據(jù)實(shí)時(shí)狀態(tài)做一些調(diào)整。ZK就可以實(shí)時(shí)監(jiān)控節(jié)點(diǎn)狀態(tài)的變化。實(shí)現(xiàn)過程如下:
① 可將節(jié)點(diǎn)信息,寫入ZK的一個(gè)節(jié)點(diǎn)
② 監(jiān)聽節(jié)點(diǎn),實(shí)時(shí)獲取節(jié)點(diǎn)狀態(tài)信息
1.4.4 軟負(fù)載均衡
可以根據(jù)每臺(tái)服務(wù)器的訪問數(shù),選擇訪問數(shù)最少的服務(wù)器進(jìn)行訪問。
1.5 軟件下載
官網(wǎng)下載頁面地址:https://zookeeper.apache.org/releases.html
1.6 ZK安裝(單機(jī)模式,非正式環(huán)境,可用于測試)
1.6.1 安裝前準(zhǔn)備
① 安裝JDK
② 拷貝ZK安裝包到Linux
③ 解壓到指定目錄
在opt目錄下創(chuàng)建dev文件夾,以后將解壓文件,解壓到此處。
1.6.2 配置修改
① 將/opt/dev/zookeeper-3.4.10/conf這個(gè)路徑下zoo_sample.cfg修改為zoo.cfg
② 編輯zoo.cfg,修改dataDir路徑
1.6.3 操作ZK
① 啟動(dòng)ZK
命令:[root@hadoop100 bin]# ./zkServer.sh start
② 查看進(jìn)程是否啟動(dòng)
命令:jps
③ 查看狀態(tài)
命令:[root@hadoop100 bin]# ./zkServer.sh status
④ 啟動(dòng)客戶端
命令:[root@hadoop100 bin]# ./zkCli.sh
⑤ 退出客戶端
命令:[root@hadoop100 bin]# quit
⑥ 停止ZK
命令:[root@hadoop100 bin]# ./zkServer.sh stop
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。