Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版)-教案 項(xiàng)目3 Zooeeper環(huán)境搭建與應(yīng)用_第1頁(yè)
Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版)-教案 項(xiàng)目3 Zooeeper環(huán)境搭建與應(yīng)用_第2頁(yè)
Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版)-教案 項(xiàng)目3 Zooeeper環(huán)境搭建與應(yīng)用_第3頁(yè)
Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版)-教案 項(xiàng)目3 Zooeeper環(huán)境搭建與應(yīng)用_第4頁(yè)
Hadoop平臺(tái)搭建與應(yīng)用(第2版)(微課版)-教案 項(xiàng)目3 Zooeeper環(huán)境搭建與應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩1頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第③順序節(jié)點(diǎn):順序節(jié)點(diǎn)可以是持久的或臨時(shí)的。當(dāng)一個(gè)新的znode被創(chuàng)建為一個(gè)順序節(jié)點(diǎn)時(shí),ZooKeeper將把一個(gè)10位的序列附加到原始名稱后以設(shè)置znode的路徑。例如,將具有路徑/myapp的znode創(chuàng)建為順序節(jié)點(diǎn),則ZooKeeper會(huì)將路徑更改為/myapp0000000001,并將下一個(gè)序列號(hào)設(shè)置為0000000002。如果兩個(gè)順序節(jié)點(diǎn)是同時(shí)創(chuàng)建的,那么ZooKeeper將對(duì)每個(gè)znode使用不同的數(shù)字序列。順序節(jié)點(diǎn)在鎖定和同步中起到了重要作用。(4)會(huì)話。會(huì)話(Sessions)對(duì)于ZooKeeper的操作非常重要。會(huì)話中的請(qǐng)求按先入先出(FirstInFirstOut,F(xiàn)IFO)順序執(zhí)行。一旦客戶端連接到服務(wù)器,就建立會(huì)話并向客戶端分配會(huì)話ID。客戶端以特定的時(shí)間間隔發(fā)送心跳信號(hào)以保持會(huì)話有效。如果ZooKeeper集群在服務(wù)器開(kāi)啟時(shí)設(shè)定的期間內(nèi)(會(huì)話超時(shí)),沒(méi)有從客戶端接收到心跳信號(hào),則它會(huì)判定客戶端死機(jī)。會(huì)話超時(shí)通常以毫秒為單位。當(dāng)會(huì)話由于任何原因結(jié)束時(shí),在該會(huì)話期間創(chuàng)建的臨時(shí)節(jié)點(diǎn)也會(huì)被刪除。(5)監(jiān)視。監(jiān)視(Watches)是一種簡(jiǎn)單的機(jī)制,可以使客戶端收到關(guān)于ZooKeeper集群中的更改通知??蛻舳丝梢栽谧x取特定znode時(shí)設(shè)置Watches。Watches會(huì)向注冊(cè)的客戶端發(fā)送任何znode(客戶端注冊(cè)表)更改的通知。znode更改是指與znode相關(guān)的數(shù)據(jù)修改,或者znode的子項(xiàng)數(shù)據(jù)修改。其只觸發(fā)一次Watches。如果客戶端想要再次通知,則必須通過(guò)另一個(gè)讀取操作來(lái)完成。當(dāng)連接會(huì)話過(guò)期時(shí),客戶端將與服務(wù)器斷開(kāi)連接,相關(guān)的Watches也將被刪除。3.ZooKeeper工作流ZooKeeper集群?jiǎn)?dòng)后,它將等待客戶端連接。客戶端將連接到ZooKeeper集群中的一個(gè)節(jié)點(diǎn)。它可以是Leader或Follower節(jié)點(diǎn)??蛻舳诉B接成功后,節(jié)點(diǎn)將向特定客戶端分配會(huì)話ID,并向該客戶端發(fā)送確認(rèn)信號(hào)。如果客戶端沒(méi)有收到確認(rèn)信號(hào),則將嘗試連接ZooKeeper集群中的另一個(gè)節(jié)點(diǎn)。連接節(jié)點(diǎn)成功后,客戶端將以有規(guī)律的間隔向節(jié)點(diǎn)發(fā)送心跳信號(hào),以確保連接不會(huì)丟失。如果客戶端想要讀取特定的znode,則其將會(huì)向具有znode路徑的節(jié)點(diǎn)發(fā)送讀取請(qǐng)求,相關(guān)節(jié)點(diǎn)會(huì)從自己的數(shù)據(jù)庫(kù)中查詢znode路徑,并返回信息給請(qǐng)求的znode。因此,在ZooKeeper集合中,讀取速度很快。如果客戶端想要將數(shù)據(jù)存儲(chǔ)在ZooKeeper集合中,則會(huì)將znode路徑和數(shù)據(jù)發(fā)送到服務(wù)器中。連接的服務(wù)器將該請(qǐng)求轉(zhuǎn)發(fā)給Leader,Leader將向所有的Follower重新發(fā)出寫(xiě)入請(qǐng)求。如果大部分節(jié)點(diǎn)成功響應(yīng),則寫(xiě)入請(qǐng)求成功,否則,寫(xiě)入請(qǐng)求失敗。ZooKeeper中各組件的工作流程描述如表3-2所示。表3-2ZooKeeper中各組件的工作流程描述組件描述寫(xiě)入(write)寫(xiě)入過(guò)程由Leader節(jié)點(diǎn)處理。Leader節(jié)點(diǎn)將寫(xiě)入請(qǐng)求轉(zhuǎn)發(fā)回復(fù),則寫(xiě)入過(guò)程完成讀?。╮ead)讀取由特定連接的znode在內(nèi)部執(zhí)行,因此不需要與集群進(jìn)行交互復(fù)制數(shù)據(jù)庫(kù)(ReplicatedDatabase)它用于在ZooKeeper中存儲(chǔ)數(shù)據(jù)。每個(gè)znode都有自己的數(shù)據(jù)庫(kù),每個(gè)znode在一致性的幫助下每次都有相同的數(shù)據(jù)LeaderLeader是負(fù)責(zé)處理寫(xiě)入請(qǐng)求的znodeFollowerFollower從客戶端接收寫(xiě)入請(qǐng)求,并將它們轉(zhuǎn)發(fā)到Leader節(jié)點(diǎn)請(qǐng)求處理器(RequestProcessor)只存在于Leader節(jié)點(diǎn)中。它管理來(lái)自Follower節(jié)點(diǎn)的寫(xiě)入請(qǐng)求原子廣播(AtomicBroadcasts)負(fù)責(zé)廣播從Leader節(jié)點(diǎn)到Follower節(jié)點(diǎn)的變化4.ZooKeeperLeader選舉如何在ZooKeeper集合中選舉Leader節(jié)點(diǎn)呢?考慮一個(gè)集群中有N個(gè)節(jié)點(diǎn),Leader選舉的過(guò)程如下。(1)所有節(jié)點(diǎn)創(chuàng)建具有相同路徑/app/leader_election/guid_的順序、臨時(shí)節(jié)點(diǎn)。(2)(3)對(duì)于給定的實(shí)例,在znode中創(chuàng)建最小數(shù)字的節(jié)點(diǎn)成為L(zhǎng)eader,而其他節(jié)點(diǎn)均為Follower。(4)每個(gè)Follower節(jié)點(diǎn)監(jiān)視下一個(gè)具有最小數(shù)字的znode。例如,創(chuàng)建的znode/app/leader_election/guid_0000000008節(jié)點(diǎn)將監(jiān)視znode/app/leader_

節(jié)點(diǎn)將監(jiān)視znode/app/leader_election/guid_0000000006。(5)如果Leader關(guān)閉,則其相應(yīng)的znode會(huì)被刪除。(6)下一個(gè)在線Follower節(jié)點(diǎn)將通過(guò)監(jiān)視器獲得關(guān)于Leader移除的通知。(7)下一個(gè)在線Follower節(jié)點(diǎn)將檢查是否存在其他具有最小數(shù)字的znode。如果沒(méi)有,其將承擔(dān)Leader的角色;否則,其找到的創(chuàng)建的具有最小數(shù)字的znode節(jié)點(diǎn)將承擔(dān)Leader的角色。(8)類似的,其他Follower節(jié)點(diǎn)選舉創(chuàng)建的具有最小數(shù)字的znode節(jié)點(diǎn)作為L(zhǎng)eader。Leader選舉是一個(gè)復(fù)雜的過(guò)程,但ZooKeeper服務(wù)使它非常簡(jiǎn)單。5.ZooKeeper的安裝ZooKeeper的安裝分為3種模式:?jiǎn)螜C(jī)模式、偽集群模式和集群模式。(1)ZooKeeper的單機(jī)模式安裝。在這種模式下,沒(méi)有ZooKeeper副本,如果ZooKeeper服務(wù)器出現(xiàn)故障,ZooKeeper服務(wù)將會(huì)停止。這種模式主要應(yīng)用在測(cè)試或Demo情況中,在生產(chǎn)環(huán)境中一般不會(huì)采用。(2)ZooKeeper的偽集群模式安裝。偽集群模式就是在單機(jī)中模擬集群的ZooKeeper服務(wù)。在ZooKeeper的參數(shù)配置中,clientPort參數(shù)用來(lái)配置客戶端連接ZooKeeper的端口。偽集群模式是使用每個(gè)配置文檔模擬一臺(tái)機(jī)器,也就是說(shuō),需要在單臺(tái)機(jī)器中運(yùn)行多個(gè)ZooKeeper實(shí)例,但是必須保證各個(gè)配置文檔的clientPort不沖突。(3)ZooKeeper的集群模式安裝。在這種模式下可以獲得可靠的ZooKeeper服務(wù),只要集群中的大多數(shù)ZooKeeper服務(wù)啟動(dòng)了,那么總的ZooKeeper服務(wù)就是可用的。集群模式與偽集群模式配置最大的不同是,ZooKeeper實(shí)例分布在多臺(tái)機(jī)器上。6.ZooKeeper中的Watcher機(jī)制在ZooKeeper中,引入了Watcher機(jī)制來(lái)實(shí)現(xiàn)分布式的通知功能。ZooKeeper允許客戶端向服務(wù)端注冊(cè)一個(gè)Watcher監(jiān)聽(tīng),當(dāng)服務(wù)器端的一些指定事件觸發(fā)了這個(gè)Watcher時(shí),其會(huì)向指定客戶端發(fā)送一個(gè)事件通知,以便實(shí)現(xiàn)分布式的通知功能。ZooKeeper的Watcher機(jī)制主要包括客戶端線程、客戶端WatchManager和ZooKeeper服務(wù)器3部分。其具體工作流程如下:客戶端在向ZooKeeper服務(wù)器注冊(cè)Watcher的同時(shí),會(huì)將Watcher對(duì)象存儲(chǔ)在客戶端的WatchManager中;當(dāng)ZooKeeper服務(wù)器端觸發(fā)Watcher事件后,會(huì)向客戶端發(fā)送通知,客戶端線程從WatchManager中取出對(duì)應(yīng)的Watcher對(duì)象來(lái)執(zhí)行回調(diào)邏輯。任務(wù)3.2ZooKeeperCLI操作Z集合進(jìn)行交互。要執(zhí)行ZooKeeperCLI操作,首先需要進(jìn)入節(jié)點(diǎn)的zookeeper/bin目錄,執(zhí)行命令“./zkServer.shstart”,啟動(dòng)ZooKeeper集群服務(wù);再執(zhí)行命令“./zkCli.sh”,使客戶端連接ZooKeeper服務(wù)器。1.創(chuàng)建znodes創(chuàng)建節(jié)點(diǎn)的語(yǔ)法格式為create[-s][-e]pathdataacl其中,“path”用于指定路徑,由于ZooKeeper是一個(gè)樹(shù)形結(jié)構(gòu),所以創(chuàng)建“path”就是創(chuàng)建“path”節(jié)點(diǎn);“data”是節(jié)點(diǎn)對(duì)應(yīng)的值,節(jié)點(diǎn)可以保存少量的數(shù)據(jù);[-s]用于指定創(chuàng)建的節(jié)點(diǎn)類型為有序節(jié)點(diǎn);[-e]用于指定創(chuàng)建的節(jié)點(diǎn)類型為臨時(shí)節(jié)點(diǎn),默認(rèn)情況下,所有znode都是持久節(jié)點(diǎn),當(dāng)會(huì)話過(guò)期或客戶端斷開(kāi)連接時(shí),臨時(shí)節(jié)點(diǎn)(-e)將被自動(dòng)刪除;“acl”用來(lái)進(jìn)行權(quán)限控制。2.讀取節(jié)點(diǎn)與讀取相關(guān)的命令有l(wèi)s和get。ls命令可以列出ZooKeeper指定節(jié)點(diǎn)的所有子節(jié)點(diǎn),只能查看指定節(jié)點(diǎn)的第一級(jí)的所有子節(jié)點(diǎn);get命令可以獲取ZooKeeper指定節(jié)點(diǎn)的數(shù)據(jù)內(nèi)容和屬性信息。相關(guān)命令的語(yǔ)法格式分別為lspath[watch]、getpath[watch]、ls2path[watch]。ls2與ls不同的是,它可以查看到time、version等信息。訪問(wèn)順序節(jié)點(diǎn),必須輸入znode的完整路徑(注意順序節(jié)點(diǎn)的命名)。3.設(shè)置數(shù)據(jù)設(shè)置指定znode的數(shù)據(jù)。完成此設(shè)置操作后,可以使用“get”命令檢查數(shù)據(jù)。其語(yǔ)法格式為setpathdata[version]。其中,data就是要更新的內(nèi)容,version表示數(shù)據(jù)版本。如果在“get”命令中分配了watch選項(xiàng),則輸出信息中將包含以下類似內(nèi)容:“WatchedEventstate:SyncConnectedtype:NodeDataChanged”。4.創(chuàng)建znode子節(jié)點(diǎn)創(chuàng)建子節(jié)點(diǎn)類似于創(chuàng)建新的znode。其區(qū)別在于子節(jié)點(diǎn)znode的路徑需包含父路徑。其語(yǔ)法格式為create/parent_path/subnode_pathdata。5.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論