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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

溫馨提示

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

評論

0/150

提交評論