亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2414 | 回復(fù): 0
打印 上一主題 下一主題

[Zookeeper] zookeeper使用 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-22 08:52 |只看該作者 |倒序?yàn)g覽
<span style="font: 7pt 'Times New Roman';"><span style="font-size: 10pt;"><font size="3"><strong>zookeeper</strong>
</font><span style=""><strong><font size="3">介紹</font><br></strong>
</span>
zookeeper<span style="">是一個(gè)為分布式應(yīng)用提供一致服務(wù)的軟件,它是開(kāi)源的</span>
Hadoop<span style="">項(xiàng)目中的一個(gè)子項(xiàng)目,并且根據(jù)</span>
google<span style="">發(fā)表的</span> 《<font color="#0000F0">The Chubby lock service for loosely-coupled distributed systems</font>》<span style="">論文來(lái)實(shí)現(xiàn)的,接下來(lái)我們首先來(lái)安裝使用下這個(gè)軟件,然后再來(lái)探索下其中比較重要一致性算法。</span>
&nbsp; <br><br></span></span><strong style="font-size: 10pt;">zookeeper<span style="">安裝和使用<br></span>
</strong>
<span style="font-size: 10pt;">zookeeper<span style="">的安裝基本上可以按照</span><br>http://hadoop.apache.org/zookeeper/docs/current/zookeeperStarted.html <span style="">這個(gè)頁(yè)面上的步驟完成安裝,這里主要介紹下部署一個(gè)集群的步驟,因?yàn)檫@個(gè)官方頁(yè)面似乎講得并不是非常詳細(xì)</span>
(Running Replicated Zookeeper)<span style="">。</span></span><br><br><span style="font-size: 10pt;"><span style="">由于手頭機(jī)器不足,所以在一臺(tái)機(jī)器上部署了</span>
3<span style="">個(gè)</span>
server,<span style="">如果你手頭也比較緊,也可以這么做。那么我建了</span>
3<span style="">個(gè)文件夾,如下<br></span>
</span>
<strong><span style="font-size: 10pt;"><strong>server1&nbsp;&nbsp; server2&nbsp;&nbsp; server3<br></strong>
</span>
</strong>
<span style=""><span style="font-size: 10pt;"><span style=""><br>
然后每個(gè)文件夾里面解壓一個(gè)</span>
zookeeper<span style="">的下載包,并且還建了幾個(gè)文件夾,總體結(jié)構(gòu)如下</span>
,<span style="">最后那個(gè)是下載過(guò)來(lái)壓縮包的解壓文件<br></span>
</span>
</span>
<strong><span style="font-size: 10pt;"><strong>data&nbsp;dataLog&nbsp;logs&nbsp;zookeeper-3.3.3<br></strong>
</span>
<br></strong>
<span style=""><span style="font-size: 10pt;"><span style="">那么首先進(jìn)入</span>
data<span style="">目錄,創(chuàng)建一個(gè)</span>
<font color="#0000F0">myid</font><span style="">的文件,里面寫入一個(gè)數(shù)字,比如我這個(gè)是</span>
server1,<span style="">那么就寫一個(gè)</span>
1<span style="">,</span>
server2<span style="">對(duì)應(yīng)</span>
myid<span style="">文件就寫入</span>
2<span style="">,</span>
server3對(duì)應(yīng)myid文件就<span style="">寫個(gè)</span>
3<br></span>
</span>
<br><span style=""><span style="font-size: 10pt;"><span style="">然后進(jìn)入</span>
<strong>zookeeper-3.3.3/conf</strong>
<span style="">目錄,那么如果是剛下過(guò)來(lái),會(huì)有</span>
3<span style="">個(gè)文件,</span>
<strong>configuration.xml, log4j.properties,zoo_sample.cfg</strong>
,<span style="">這</span>
3<span style="">個(gè)文件我們首先要做的就是在這個(gè)目錄創(chuàng)建一個(gè)</span>
zoo.cfg<span style="">的配置文件,當(dāng)然你可以把</span>
zoo_sample.cfg<span style="">文件改成</span>
zoo.cfg<span style="">,配置的內(nèi)容如下所示:</span>
</span>
</span>
&nbsp;<br><span style="color: red;"><span style="font-size: 10pt;"><span style="color: red;">tickTime=2000<br></span>
<span style="color: red;">initLimit=5<br></span>
<span style="color: red;">syncLimit=2<br></span>
<span style="color: red;">dataDir=xxxx/zookeeper/server1/data<br></span>
<span style="color: red;">dataLogDir=xxx/zookeeper/server1/dataLog<br></span>
<span style="color: red;">clientPort=<font color="#0000F0">2181</font><br></span>
</span>
</span>
<span style="font-size: 10pt;">server.1=127.0.0.1:2888:3888<br>
server.2=127.0.0.1:2889:3889<br>
server.3=127.0.0.1:2890:3890<span style=""><br></span>
</span>
<br><span style=""><span style="font-size: 10pt;"><span style="">標(biāo)紅的幾個(gè)配置應(yīng)該官網(wǎng)講得很清楚了,只是需要注意的是</span>
clientPort<span style="">這個(gè)端口如果你是在</span>
1<span style="">臺(tái)機(jī)器上部署多個(gè)</span>
server,<span style="">那么每臺(tái)機(jī)器都要不同的</span>
clientPort<span style="">,比如我</span>
server1<span style="">是</span>
2181,server2<span style="">是</span>
2182<span style="">,</span>
server3<span style="">是</span>
2183<span style="">,</span>
dataDir<span style="">和</span>
dataLogDir<span style="">也需要區(qū)分下。</span>
<br><br><span style="">最后幾行唯一需要注意的地方就是</span>
server.X <span style="">這個(gè)數(shù)字就是對(duì)應(yīng)</span>
data/myid<span style="">中的數(shù)字。你在</span>
3<span style="">個(gè)</span>
server<span style="">的</span>
myid<span style="">文件中分別寫入了</span>
1<span style="">,</span>
2<span style="">,</span>
3<span style="">,那么每個(gè)</span>
server<span style="">中的</span>
zoo.cfg<span style="">都配</span>
server.1,server.2,server.3<span style="">就</span>
OK<span style="">了。因?yàn)樵谕慌_(tái)機(jī)器上,后面連著的</span>
2<span style="">個(gè)端口</span>
3<span style="">個(gè)</span>
server<span style="">都不要一樣,否則端口沖突,其中第一個(gè)端口用來(lái)集群成員的信息交換,第二個(gè)端口是在</span>
leader<span style="">掛掉時(shí)專門用來(lái)進(jìn)行選舉</span>
leader<span style="">所用。<br><br></span>
</span>
</span>
<span style=""><span style="font-size: 10pt;"><span style="">進(jìn)入</span>
zookeeper-3.3.3/bin <span style="">目錄中<span style="">,<strong>./</strong></span></span></span></span><span style=""><span style="font-size: 10pt;"><strong>zkServer.sh start</strong>
</span>
</span>
<span style=""><span style="font-size: 10pt;"><span style="">啟動(dòng)一個(gè)</span>
server,<span style="">這時(shí)會(huì)報(bào)大量錯(cuò)誤?其實(shí)沒(méi)什么關(guān)系,因?yàn)楝F(xiàn)在集群只起了</span>
1<span style="">臺(tái)</span>
server<span style="">,</span>
zookeeper<span style="">服務(wù)器端起來(lái)會(huì)根據(jù)</span>
zoo.cfg<span style="">的服務(wù)器列表發(fā)起選舉</span>
leader<span style="">的請(qǐng)求,因?yàn)檫B不上其他機(jī)器而報(bào)錯(cuò),那么當(dāng)我們起第二個(gè)</span>
zookeeper<span style="">實(shí)例后,</span>
leader<span style="">將會(huì)被選出,從而一致**開(kāi)始可以使用,這是因?yàn)?lt;/span>
3<span style="">臺(tái)機(jī)器只要有</span>
2<span style="">臺(tái)可用就可以選出</span>
leader<span style="">并且對(duì)外提供服務(wù)</span>
(2n+1<span style="">臺(tái)機(jī)器,可以容</span>
n<span style="">臺(tái)機(jī)器掛掉</span>
)<span style="">。<br><br></span>
</span>
</span>
<span style=""><span style="font-size: 10pt;"><span style="">接下來(lái)就可以使用了,我們可以先通過(guò)</span>
zookeeper<span style="">自帶的客戶端交互程序來(lái)簡(jiǎn)單感受下</span>
zookeeper<span style="">到底做一些什么事情。進(jìn)入</span>
zookeeper-3.3.3/bin<span style="">(</span>
3<span style="">個(gè)</span>
server<span style="">中任意一個(gè))下,</span>
<strong>./zkCli.sh&nbsp;–server&nbsp;127.0.0.1:2182</strong>
,<span style="">我連的是開(kāi)著</span>
2182<span style="">端口的機(jī)器。</span></span></span><strong><span style="font-size: 10pt;"><strong><br><br></strong></span></strong><span style=""><span style="font-size: 10pt;"><span style="">那么,首先我們隨便打個(gè)命令,因?yàn)?lt;/span>
zookeeper<span style="">不認(rèn)識(shí),他會(huì)給出命令的</span>
help,<span style="">如下圖</span>
</span>
</span>
&nbsp;&nbsp;<br>
&nbsp;&nbsp; <img src="http://www.blogjava.net/images/blogjava_net/bucketli/dddd.jpg" alt="" border="0"><br><span style="font-size: 10pt;">ls(<span style="">查看當(dāng)前節(jié)點(diǎn)數(shù)據(jù)</span>
),<br>
ls2(<span style="">查看當(dāng)前節(jié)點(diǎn)數(shù)據(jù)并能看到更新次數(shù)等數(shù)據(jù)</span>
) ,<br>
create(<span style="">創(chuàng)建一個(gè)節(jié)點(diǎn)</span>
) ,<br>
get(<span style="">得到一個(gè)節(jié)點(diǎn),包含數(shù)據(jù)和更新次數(shù)等數(shù)據(jù)</span>
),<br>
set(<span style="">修改節(jié)點(diǎn)</span>
)<br>
delete(<span style="">刪除一個(gè)節(jié)點(diǎn)</span>
)<br></span>
<span style=""><br><span style="font-size: 10pt;"><span style="">通過(guò)上述命令實(shí)踐,我們可以發(fā)現(xiàn),</span>
zookeeper<span style="">使用了一個(gè)類似文件系統(tǒng)的樹(shù)結(jié)構(gòu),數(shù)據(jù)可以掛在某個(gè)節(jié)點(diǎn)上,可以對(duì)這個(gè)節(jié)點(diǎn)進(jìn)行刪改。另外我們還發(fā)現(xiàn),當(dāng)改動(dòng)一個(gè)節(jié)點(diǎn)的時(shí)候,集群中活著的機(jī)器都會(huì)更新到一致的數(shù)據(jù)。</span>
<br></span>
</span>
<br><span style="font-size: 10pt;"><strong>zookeeper</strong>
<span style=""><strong>的數(shù)據(jù)模型<br></strong>
</span>
</span>
<span style=""><span style="font-size: 10pt;"><span style="">在簡(jiǎn)單使用了</span>
zookeeper<span style="">之后,我們發(fā)現(xiàn)其數(shù)據(jù)模型有些像操作系統(tǒng)的文件結(jié)構(gòu),結(jié)構(gòu)如下圖所示<br></span>
</span>
</span>
<img src="http://www.blogjava.net/images/blogjava_net/bucketli/XX.jpg" alt="" border="0"><br><br><br><span style="font-size: 10pt;">(1)<span style="line-height: normal; font-variant: normal; font-style: normal; font-family: 'Times New Roman'; font-weight: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span>
<span style="">每個(gè)節(jié)點(diǎn)在</span>
zookeeper<span style="">中叫做</span>
znode,<span style="">并且其有一個(gè)唯一的路徑標(biāo)識(shí),如</span>
/SERVER2<span style="">節(jié)點(diǎn)的標(biāo)識(shí)就為</span>
/APP3/SERVER2<br>
(2)<span style="line-height: normal; font-variant: normal; font-style: normal; font-family: 'Times New Roman'; font-weight: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span>
Znode<span style="">可以有子</span>
znode<span style="">,并且</span>
znode<span style="">里可以存數(shù)據(jù),但是</span>
EPHEMERAL<span style="">類型的節(jié)點(diǎn)不能有子節(jié)點(diǎn)<br></span>
(3)<span style="line-height: normal; font-variant: normal; font-style: normal; font-family: 'Times New Roman'; font-weight: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span>
Znode<span style="">中的數(shù)據(jù)可以有多個(gè)版本,比如某一個(gè)路徑下存有多個(gè)數(shù)據(jù)版本,那么查詢這個(gè)路徑下的數(shù)據(jù)就需要帶上版本。<br></span>
(4)<span style="line-height: normal; font-variant: normal; font-style: normal; font-family: 'Times New Roman'; font-weight: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span>
znode <span style="">可以是臨時(shí)節(jié)點(diǎn),一旦創(chuàng)建這個(gè)</span>
znode <span style="">的客戶端與服務(wù)器失去聯(lián)系,這個(gè)</span>
znode <span style="">也將自動(dòng)刪除,</span>
Zookeeper <span style="">的客戶端和服務(wù)器通信采用長(zhǎng)連接方式,每個(gè)客戶端和&nbsp; 服務(wù)器通過(guò)心跳來(lái)保持連接,這個(gè)連接狀態(tài)稱為</span>
session<span style="">,如果</span>
znode <span style="">是臨時(shí)節(jié)點(diǎn),這個(gè)</span>
session <span style="">失效,</span>
znode <span style="">也就刪除了<br></span>
(5)<span style="line-height: normal; font-variant: normal; font-style: normal; font-family: 'Times New Roman'; font-weight: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span>
znode <span style="">的目錄名可以自動(dòng)編號(hào),如</span>
App1 <span style="">已經(jīng)存在,再創(chuàng)建的話,將會(huì)自動(dòng)命名為</span>
App2&nbsp;<br>
(6)<span style="line-height: normal; font-variant: normal; font-style: normal; font-family: 'Times New Roman'; font-weight: normal;">&nbsp;&nbsp;&nbsp;&nbsp; </span>
znode <span style="">可以被監(jiān)控,包括這個(gè)目錄節(jié)點(diǎn)中存儲(chǔ)的數(shù)據(jù)的修改,子節(jié)點(diǎn)目錄的變化等,一旦變化可以通知設(shè)置監(jiān)控的客戶端,這個(gè)功能是</span>
zookeeper<span style="">對(duì)于應(yīng)用最重要的特性,通過(guò)這個(gè)特性可以實(shí)現(xiàn)的功能包括配置的集中管理,集群管理,分布式鎖等等。</span>
</span>
&nbsp; <br>
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP