windows中安裝zookeeper

?Zookeeper?分布式服務框架是?Apache Hadoop?的一個子項目,它主要是用來解決分布式應用中經常遇到的一些數據管理問題,如:統一命名服務、狀態同步服務、集群管理、分布式應用配置項的管理等。本文將從使用者角度詳細介紹?Zookeeper?的安裝和配置文件中各個配置項的意義,以及分析?Zookeeper?的典型的應用場景(配置文件的管理、集群管理、同步鎖、Leader?選舉、隊列管理等),用?Java?實現它們并給出示例代碼。

ZooKeeper?是一個為分布式應用所設計的分布的、開源的協調服務。分布式的應用可以建立在同步、配置管理、分組和命名等服務的更高級別的實現的基礎之上。?ZooKeeper?意欲設計一個易于編程的環境,它的文件系統使用我們所熟悉的目錄樹結構。?ZooKeeper?使用Java?所編寫,但是支持?Java??C?兩種編程語言。

眾所周知,協調服務非常容易出錯,但是卻很難恢復正常,例如,協調服務很容易處于競態以至于出現死鎖。我們設計?ZooKeeper?的目的是為了減輕分布式應用程序所承擔的協調任務。

ZooKeeper是一個高可用、高可靠的協同工作系統,分布式程序可以用ZooKeeper保存并更新關鍵共享狀態。

zookeeper是針對分布式應用的分布式協作服務,它的目的就是為了減輕分布式應用從頭開發協作服務的負擔。

Zookeeper?作為一個分布式的服務框架,主要用來解決分布式集群中應用系統的一致性問題,它能提供基于類似于文件系統的目錄節點樹方式的數據存儲,但是?Zookeeper?并不是用來專門存儲數據的,它的作用主要是用來維護和監控你存儲的數據的狀態變化。通過監控這些數據狀態的變化,從而可以達到基于數據的集群管理。

ZooKeeper是一個分布式的,開放源碼的分布式應用程序協調服務,它包含一個簡單的原語集,分布式應用程序可以基于它實現同步服務,配置維護?和命名服務等。Zookeeperhadoop的一個子項目,其發展歷程無需贅述。在分布式應用中,由于工程師不能很好地使用鎖機制,以及基于消息的協?調機制不適合在某些應用中使用,因此需要有一種可靠的、可擴展的、分布式的、可配置的協調機制來統一系統的狀態。Zookeeper的目的就在于此。

zookeeper的下載地址:http://www.apache.org/dyn/closer.cgi/zookeeper/

下載好后的zookeeper解壓到一個地方目錄大概是這樣的




?F:\zookeeper-3.3.6 的目錄


2014/09/16 ?17:04 ? ?<DIR> ? ? ? ? ?.
2014/09/16 ?17:04 ? ?<DIR> ? ? ? ? ?..
2014/09/16 ?16:10 ? ?<DIR> ? ? ? ? ?bin
2012/07/29 ?14:23 ? ? ? ? ? ?59,687 build.xml
2012/07/29 ?14:23 ? ? ? ? ? ?52,566 CHANGES.txt
2014/09/16 ?17:06 ? ?<DIR> ? ? ? ? ?conf
2014/09/16 ?16:10 ? ?<DIR> ? ? ? ? ?contrib
2014/09/16 ?17:09 ? ?<DIR> ? ? ? ? ?data
2014/09/16 ?16:10 ? ?<DIR> ? ? ? ? ?dist-maven
2014/09/16 ?16:10 ? ?<DIR> ? ? ? ? ?docs
2012/07/29 ?14:23 ? ? ? ? ? ? 2,415 ivy.xml
2012/07/29 ?14:23 ? ? ? ? ? ? 1,932 ivysettings.xml
2014/09/16 ?16:10 ? ?<DIR> ? ? ? ? ?lib
2012/07/29 ?14:23 ? ? ? ? ? ?11,358 LICENSE.txt
2014/09/16 ?17:04 ? ?<DIR> ? ? ? ? ?log
2012/07/29 ?14:23 ? ? ? ? ? ? ? 165 NOTICE.txt
2012/07/29 ?14:23 ? ? ? ? ? ? 1,578 README.txt
2014/09/16 ?16:10 ? ?<DIR> ? ? ? ? ?recipes
2014/09/16 ?16:10 ? ?<DIR> ? ? ? ? ?src
2012/07/29 ?14:23 ? ? ? ? 1,031,338 zookeeper-3.3.6.jar
2012/07/29 ?14:25 ? ? ? ? ? ? ? 198 zookeeper-3.3.6.jar.asc
2012/07/29 ?14:23 ? ? ? ? ? ? ? ?33 zookeeper-3.3.6.jar.md5
2012/07/29 ?14:23 ? ? ? ? ? ? ? ?41 zookeeper-3.3.6.jar.sha1
? ? ? ? ? ? ? 11 個文件 ? ? ?1,161,311 字節
? ? ? ? ? ? ? 12 個目錄 94,507,941,888 可用字節


進到conf目錄下復制一個名字為zoo_sample.cfg的文件并修改名字為zoo.cfg

添加如下內容

# The number of milliseconds of each tick 維持心跳的時間間隔
tickTime=2000
# The number of ticks that the initial?
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between?
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot isstored. ?鏡像數據位置
dataDir=F:\\zookeeper-3.3.6\\data
#日志位置
dataLogDir=F:\\zookeeper-3.3.6\\log
# the port at which the clients will connect 客戶端連接的端口
clientPort=2181


這里簡單的說明一下,這些配置只是做一個簡單的測試并未做分布式處理

dataDir就是zookeeper的鏡像數據位置,這個文件需要用戶自行設置博主暫時將其放在zookeeper的子目錄下的data文件中

dataLogDir就是zookeeper的日志記錄位置,這個文件同樣需要用戶自行設置博主暫時將其放在zookeeper的子目錄下log文件中


做完上面的這些后就可以啟動zookeeper了啟動的方式就是執行zookeeper/bin目錄下的zkServer.cmd文件即可

啟動完成后就可以重啟一個命令窗口連接zookeeper了

連接zookeeper的命令同樣是bin目錄下的zkCli.sh?–server?127.0.0.1:2182

連接成功后就可以輸入相關的命令了

剛開始由于我們不知道輸入什么命令zookeeper會給出一個help

?connect host:port
?get path [watch]
?ls path [watch]
?set path data [version]
?delquota [-n|-b] path
?quit
?printwatches on|off
?create [-s] [-e] path data
?stat path [watch]
?close
?ls2 path [watch]
?history
?listquota path
?setAcl path acl
?getAcl path
?sync path
?redo cmdno
?addauth scheme auth
?delete path [version]
?setquota -n|-b val path


ls(查看當前節點數據),
ls2(查看當前節點數據并能看到更新次數等數據) ,
create(創建一個節點) ,
get(得到一個節點,包含數據和更新次數等數據),
set(修改節點)
delete(刪除一個節點)

通過上述命令實踐,我們可以發現,zookeeper使用了一個類似文件系統的樹結構,數據可以掛在某個節點上,可以對這個節點進行刪改。另外我們還發現,當改動一個節點的時候,集群中活著的機器都會更新到一致的數據。?


zookeeper的數據模型
在簡單使用了zookeeper之后,我們發現其數據模型有些像操作系統的文件結構,結構如下圖所示



(1)?????每個節點在zookeeper中叫做znode,并且其有一個唯一的路徑標識,如/SERVER2節點的標識就為/APP3/SERVER2
(2)?????Znode可以有子znode,并且znode里可以存數據,但是EPHEMERAL類型的節點不能有子節點
(3)?????Znode中的數據可以有多個版本,比如某一個路徑下存有多個數據版本,那么查詢這個路徑下的數據就需要帶上版本。
(4)?????znode?可以是臨時節點,一旦創建這個?znode?的客戶端與服務器失去聯系,這個?znode?也將自動刪除,Zookeeper?的客戶端和服務器通信采用長連接方式,每個客戶端和? 服務器通過心跳來保持連接,這個連接狀態稱為?session,如果?znode?是臨時節點,這個?session?失效,znode?也就刪除了
(5)?????znode?的目錄名可以自動編號,如?App1?已經存在,再創建的話,將會自動命名為?App2?
(6)?????znode?可以被監控,包括這個目錄節點中存儲的數據的修改,子節點目錄的變化等,一旦變化可以通知設置監控的客戶端,這個功能是zookeeper對于應用最重要的特性,通過這個特性可以實現的功能包括配置的集中管理,集群管理,分布式鎖等等。
??

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273381.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273381.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273381.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL Event

一、前言自MySQL5.1.6起&#xff0c;增加了一個非常有特色的功能–事件調度器(Event Scheduler)&#xff0c;可以用做定時執行某些特定任務&#xff08;例如&#xff1a;刪除記錄、對數據進行匯總等等&#xff09;&#xff0c;來取代原先只能由操作系統的計劃任務來執行的工作。…

Java中實現統計一個字符串在另一個字符串中出現的次數統計

public int getSubNum(String a,String b){int num0;String stra;int indexa.indexOf(b);while(index!-1){num;strstr.substring(indexb.length()-1);indexstr.indexOf(b);}return num;}

【編程練習】正整數分解為幾個連續自然數之和

題目&#xff1a;輸入一個正整數&#xff0c;若該數能用幾個連續正整數之和表示&#xff0c;則輸出所有可能的正整數序列。 一個正整數有可能可以被表示為n(n>2)個連續正整數之和&#xff0c;如&#xff1a; 1512345 15456 1578 有些數可以寫成連續N&#xff08;>1&am…

IOS-C語言第12天,(函數指針)Point and macro(宏)

轉載于:https://www.cnblogs.com/xiangrongsu/p/4309366.html

c# 兩個數的加減乘除

Console.Title "加減乘除"; double x, y,z0; string m; int n0; Console.WriteLine("第一個數&#xff1a;"); x Convert.ToDouble(Console.ReadLine()); Console.WriteLine("運算符(默認為加)&#xff1a;"); m Console.ReadLine(); m (m &…

mysql建表語句

在sql語句中注意“約束的概念": 1.實體完整性約束(主鍵--唯一且非空) primary key()違約處理:No action(拒絕執行)2.參照完整性約束(外鍵約束)foregin key() references tableName(filedName) [on delete|update casecade | no action]違約處理:級聯更新或拒絕執行3.用戶自…

HTTP協議(1)—HTTP的連接

一、TCP連接過程:a.瀏覽器解析出主機名b.瀏覽器查詢出這個主機名的IP地址c.瀏覽器獲得端口號d.瀏覽器發起到ip:port的連接(TCP連接)e.瀏覽器向服務器發送一條HTTP報文f.瀏覽器從服務器讀取HTTP響應報文g.瀏覽器關閉連接1.TCP的可靠數據管道從TCP連接一端填入的字節會從另一端以…

Apache POI使用詳解

1.POI結構與常用類(1)POI介紹Apache POI是Apache軟件基金會的開源項目&#xff0c;POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能。 .NET的開發人員則可以利用NPOI (POI for .NET) 來存取 Microsoft Office文檔的功能。(2)POI結構說明包名稱 說明HSSF 提供讀寫M…

Http協議(3)—HTTP實體和編碼

HTTP實體實現目標.可以被正確識別(通過Content-Type和Content-Launage).可以被正確解包(通過Content-Lenght首部和Content-Encoding首部).是最新的(通過實體驗證碼和緩存過期控制).符合用戶需要(基于Accept系列的內容協商首部).在網絡上可以快速有效的傳輸(通過范圍請求、差異編…

架構之美—軟件架構6大步驟(開篇)

1> 需求分析2> 領域建模3> 確定關鍵需求4> 概念架構設計5> 細化架構設計6 架構驗證 轉載于:https://www.cnblogs.com/kool/p/6695766.html

Http協議(2)—客戶端的識別與cookie機制

一、Http用戶識別的機制1.承載用戶身份的http首部2.客戶端IP地址跟蹤,根據客戶端IP地址進行識別3.用戶登錄,用認證方式識別用戶4.胖URL&#xff0c;一種在URL中嵌入識別信息的技術5.cookie,一種持久身份識別技術二、HTTP首部1.From包含用戶的Email地址2.User_Agent將用戶所用瀏…

經典PCB軟件比較闡述—Cadence和Mentor(整理)

PCB(Printed Circuit Board&#xff09;設計軟件經過多年的發展、不斷地修改和完善&#xff0c;或優存劣汰、或收購兼并、或強強聯合&#xff0c;現在只剩下Cadence和Mentor兩家公司獨大。 Cadence公司的推出的SPB(Silicon Package Board)系列&#xff0c;原理圖工具采…

RHEL 集群(RHCS)配置小記 -- 文檔記錄

1、RHEL 6 集群配置官方管理手冊 https://access.redhat.com/site/documentation/zh-CN/Red_Hat_Enterprise_Linux/6/pdf/Cluster_Administration/Red_Hat_Enterprise_Linux-6-Cluster_Administration-zh-CN.pdf 2、官方講解Fencing設備原理 https://access.redhat.com/documen…

Http協議(5)—HTTP摘要認證

一、摘要認證的改進1.用摘要保護密碼客戶端不發送密碼,而是發送一個摘要&#xff0c;服務端只需驗證這個摘要是否和密碼相匹配2.單向摘要a.摘要是一種單向函數,將無限的輸入值轉化為有限的b.常見的摘要為MD5&#xff1a;將任意長度的字節序列轉換為一個128位的摘要;MD5的128位摘…

c#常用正則表達式

public class RegexUtil {private RegexUtil() { }private static RegexUtil instance null;/// <summary>/// 靜態實例化單體模式/// 保證應用程序操作某一全局對象&#xff0c;讓其保持一致而產生的對象/// </summary>/// <returns></returns>publi…

Http協議(4)—HTTP認證機制

一、認證1.HTTP質詢/響應認證框架服務器收到一條請求并沒有按照請求執行動作,而是以一個認證質詢執行響應,要求用戶提供一個保密信息說明他是誰,當用戶再次發送請求時要附上保密證書,如果證書匹配則執行請求,否則返回一條錯誤信息2.認證協議與首部官方的兩個認證協議:基本認證、…

C#加密解密DES字符串轉

using System; using System.Collections.Generic; using System.Text; using System.Security.Cryptography; using System.IO;namespace Component {public class Security{public Security(){ }//默認密鑰向量private static byte[] Keys { 0x12, 0x34, 0x56, 0x78, 0x90, …

Http協議(6)—安全HTTP

一、保護HTTP的安全1.功能:.服務器認證:客戶端知道它是在與真正的服務器進行通信.客戶端認證:服務器知道它是在與真正的客戶端進行通信.完整性:服務器與客戶端的數據不會被修改.加密:客戶端與服務器的對話是私密的,不會被竊聽.效率:運行足夠快的算法.普適性:所有客戶端和服務器…

restful處理

重寫/覆蓋 HTTP 方法 一些HTTP客戶端僅能處理簡單的的GET和POST請求&#xff0c;為照顧這些功能有限的客戶端&#xff0c;API需要一種方式來重寫HTTP方法. 盡管沒有一些硬性標準來做這事&#xff0c;但流行的慣例是接受一種叫 X-HTTP的請求頭&#xff0c;重寫是用一個字符串值…

Http協議(7)—Http緩存

一、冗余的數據傳輸有些客戶端訪問服務器頁面時,服務器會多次響應同一個頁面的副本給客戶端&#xff0c;這會產生冗余數據&#xff0c;故使用緩存就可以保留第一條相應的副本&#xff0c;以后就響應緩存的數據二、帶寬瓶頸在需要下載大型文件時,如果在局域網中放入該文件的一個…