日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Zookeeper學(xué)習(xí)之路 (二)集群搭建

 HK123COM 2019-02-14

目錄

 

正文

ZooKeeper 軟件安裝須知

鑒于 ZooKeeper 本身的特點(diǎn),服務(wù)器集群的節(jié)點(diǎn)數(shù)推薦設(shè)置為奇數(shù)臺。我這里我規(guī)劃為三臺, 為別為 hadoop1,hadoop2,hadoop3

ZooKeeper 的集群安裝

ZooKeeper 的下載

下載地址:http://mirrors./apache/ZooKeeper/

此處使用的是3.4.10版本

解壓安裝到自己的目錄

[hadoop@hadoop1 ~]$ tar -zxvf zookeeper-3.4.10.tar.gz -C apps/

ZooKeeper 運(yùn)行最重要的四個(gè)東西

修改配置文件

[hadoop@hadoop1 zookeeper-3.4.10]$ cd conf/
[hadoop@hadoop1 conf]$ mv zoo_sample.cfg zoo.cfg
[hadoop@hadoop1 conf]$ vi zoo.cfg 

基本配置

tickTime

心跳基本時(shí)間單位,毫秒級,ZK基本上所有的時(shí)間都是這個(gè)時(shí)間的整數(shù)倍。

initLimit

tickTime的個(gè)數(shù),表示在leader選舉結(jié)束后,followers與leader同步需要的時(shí)間,如果followers比較多或者說leader的數(shù)據(jù)灰常多時(shí),同步時(shí)間相應(yīng)可能會增加,那么這個(gè)值也需要相應(yīng)增加。當(dāng)然,這個(gè)值也是follower和observer在開始同步leader的數(shù)據(jù)時(shí)的最大等待時(shí)間(setSoTimeout)

syncLimit

tickTime的個(gè)數(shù),這時(shí)間容易和上面的時(shí)間混淆,它也表示follower和observer與leader交互時(shí)的最大等待時(shí)間,只不過是在與leader同步完畢之后,進(jìn)入正常請求轉(zhuǎn)發(fā)或ping等消息交互時(shí)的超時(shí)時(shí)間。

dataDir

內(nèi)存數(shù)據(jù)庫快照存放地址,如果沒有指定事務(wù)日志存放地址(dataLogDir),默認(rèn)也是存放在這個(gè)路徑下,建議兩個(gè)地址分開存放到不同的設(shè)備上。

clientPort

配置ZK監(jiān)聽客戶端連接的端口

在配置文件末尾添加

server.serverid=host:tickpot:electionport

server:固定寫法
serverid:每個(gè)服務(wù)器的指定ID(必須處于1-255之間,必須每一臺機(jī)器不能重復(fù))
host:主機(jī)名
tickpot:心跳通信端口
electionport:選舉端口

高級配置

dataLogDir

將事務(wù)日志存儲在該路徑下,比較重要,這個(gè)日志存儲的設(shè)備效率會影響ZK的寫吞吐量。

globalOutstandingLimit

(Java system property: zookeeper.globalOutstandingLimit)默認(rèn)值是1000,限定了所有連接到服務(wù)器上但是還沒有返回響應(yīng)的請求個(gè)數(shù)(所有客戶端請求的總數(shù),不是連接總數(shù)),這個(gè)參數(shù)是針對單臺服務(wù)器而言,設(shè)定太大可能會導(dǎo)致內(nèi)存溢出。

preAllocSize

(Java system property: zookeeper.preAllocSize)默認(rèn)值64M,以KB為單位,預(yù)先分配額定空間用于后續(xù)transactionlog 寫入,每當(dāng)剩余空間小于4K時(shí),就會又分配64M,如此循環(huán)。如果SNAP做得比較頻繁(snapCount比較小的時(shí)候),那么請減少這個(gè)值。

snapCount

(Java system property: zookeeper.snapCount)默認(rèn)值100,000,當(dāng)transaction每達(dá)到snapCount/2+rand.nextInt(snapCount/2)時(shí),就做一次SNAPSHOT,默認(rèn)情況下是50,000~100,000條transactionlog就會做一次,之所以用隨機(jī)數(shù)是為了避免所有服務(wù)器可能在同一時(shí)間做snapshot.

traceFile (Java system property: requestTraceFile)

maxClientCnxns

默認(rèn)值是10,一個(gè)客戶端能夠連接到同一個(gè)服務(wù)器上的最大連接數(shù),根據(jù)IP來區(qū)分。如果設(shè)置為0,表示沒有任何限制。設(shè)置該值一方面是為了防止DoS攻擊。

clientPortAddress

與clientPort匹配,表示某個(gè)IP地址,如果服務(wù)器有多個(gè)網(wǎng)絡(luò)接口(多個(gè)IP地址),如果沒有設(shè)置這個(gè)屬性,則clientPort會綁定到所有IP地址上,否則只綁定到該設(shè)置的IP地址上。

minSessionTimeout

最小的session time時(shí)間,默認(rèn)值是2個(gè)tick time,客戶端設(shè)置的session time 如果小于這個(gè)值,則會被強(qiáng)制協(xié)調(diào)為這個(gè)最小值。

maxSessionTimeout

最大的session time 時(shí)間,默認(rèn)值是20個(gè)tick time. ,客戶端設(shè)置的session time 如果大于這個(gè)值,則會被強(qiáng)制協(xié)調(diào)為這個(gè)最大值。

集群配置選項(xiàng)

electionAlg

領(lǐng)導(dǎo)選舉算法,默認(rèn)是3(fast leader election,基于TCP),0表示leader選舉算法(基于UDP),1表示非授權(quán)快速選舉算法(基于UDP),2表示授權(quán)快速選舉算法(基于UDP),目前1和2算法都沒有應(yīng)用,不建議使用,0算法未來也可能會被干掉,只保留3(fast leader election)算法,因此最好直接使用默認(rèn)就好。

initLimit

tickTime的個(gè)數(shù),表示在leader選舉結(jié)束后,followers與leader同步需要的時(shí)間,如果followers比較多或者說leader的數(shù)據(jù)灰常多時(shí),同步時(shí)間相應(yīng)可能會增加,那么這個(gè)值也需要相應(yīng)增加。當(dāng)然,這個(gè)值也是follower和observer在開始同步leader的數(shù)據(jù)時(shí)的最大等待時(shí)間(setSoTimeout)

syncLimit

tickTime的個(gè)數(shù),這時(shí)間容易和上面的時(shí)間混淆,它也表示follower和observer與leader交互時(shí)的最大等待時(shí)間,只不過是在與leader同步完畢之后,進(jìn)入正常請求轉(zhuǎn)發(fā)或ping等消息交互時(shí)的超時(shí)時(shí)間。

leaderServes

(Java system property: zookeeper.leaderServes)  如果該值不是no,則表示該服務(wù)器作為leader時(shí)是需要接受客戶端連接的。為了獲得更高吞吐量,當(dāng)服務(wù)器數(shù)三臺以上時(shí)一般建議設(shè)置為no。

cnxTimeout 

(Java system property: zookeeper.cnxTimeout) 默認(rèn)值是5000,單位ms 表示leaderelection時(shí)打開連接的超時(shí)時(shí)間,只用在算法3中。

ZK的不安全配置項(xiàng)

skipACL

(Java systemproperty: zookeeper.skipACL) 默認(rèn)值是no,忽略所有ACL檢查,相當(dāng)于開放了所有數(shù)據(jù)權(quán)限給任何人。

forceSync

(Java systemproperty: zookeeper.forceSync) 默認(rèn)值是yes, 表示transactionlog在commit時(shí)是否立即寫到磁盤上,如果關(guān)閉這個(gè)選項(xiàng)可能會在斷電時(shí)丟失信息。

jute.maxbuffer

(Java system property: jute.maxbuffer)默認(rèn)值0xfffff,單位是KB,表示節(jié)點(diǎn)數(shù)據(jù)最多1M。如果要設(shè)置這個(gè)值,必須要在所有服務(wù)器上都需要設(shè)置。

授權(quán)認(rèn)證配置項(xiàng)

DigestAuthenticationProvider.superDigest

(Java system property only: zookeeper.DigestAuthenticationProvider.superDigest)   設(shè)置這個(gè)值是為了確定一個(gè)超級用戶,它的值格式為

super:<base64encoded(SHA1(idpassword))> ,一旦當(dāng)前連接addAuthInfo超級用戶驗(yàn)證通過,后續(xù)所有操作都不會checkACL.

將配置文件分發(fā)到集群其他機(jī)器中

[hadoop@hadoop1 apps]$ scp -r zookeeper-3.4.10/ hadoop2:$PWD
[hadoop@hadoop1 apps]$ scp -r zookeeper-3.4.10/ hadoop3:$PWD

然后是最重要的步驟,一定不能忘了。 去你的各個(gè) ZooKeeper 服務(wù)器節(jié)點(diǎn),新建目錄 dataDir=/home/hadoop/data/zkdata,這個(gè) 目錄就是你在 zoo.cfg 中配置的 dataDir 的目錄,建好之后,在里面新建一個(gè)文件,文件 名叫 myid,里面存放的內(nèi)容就是服務(wù)器的 id,就是 server.1=hadoop01:2888:3888 當(dāng)中的 id, 就是 1,那么對應(yīng)的每個(gè)服務(wù)器節(jié)點(diǎn)都應(yīng)該做類似的操作 拿服務(wù)器 hadoop1 舉例:

[hadoop@hadoop1 ~]$ mkdir /home/hadoop/data/zkdata
[hadoop@hadoop1 ~]$ cd data/zkdata/
[hadoop@hadoop1 zkdata]$ echo 1 > myid

當(dāng)以上所有步驟都完成時(shí),意味著我們 ZooKeeper 的配置文件相關(guān)的修改都做完了。

配置環(huán)境變量

[hadoop@hadoop1 ~]$ vi .bashrc 
#Zookeeper
export ZOOKEEPER_HOME=/home/hadoop/apps/zookeeper-3.4.10
export PATH=$PATH:$ZOOKEEPER_HOME/bin

保存退出

[hadoop@hadoop1 ~]$ source .bash

啟動軟件,并驗(yàn)證安裝是否成功

命令

啟動:zkServer.sh start
停止:zkServer.sh stop
查看狀態(tài):zkServer.sh status

注意:雖然我們在配置文件中寫明了服務(wù)器的列表信息,但是,我們還是需要去每一臺服務(wù) 器去啟動,不是一鍵啟動集群模式

每啟動一臺查看一下狀態(tài)再啟動下一臺

啟動hadoop1

復(fù)制代碼
[hadoop@hadoop1 ~]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop1 ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Error contacting service. It is probably not running.
[hadoop@hadoop1 ~]$ 
復(fù)制代碼

啟動hadoop2

復(fù)制代碼
[hadoop@hadoop2 ~]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop2 ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: leader
[hadoop@hadoop2 ~]$ 
復(fù)制代碼

此時(shí)在查看hadoop1的狀態(tài)

啟動hadoop3

復(fù)制代碼
[hadoop@hadoop3 ~]$ zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@hadoop3 ~]$ zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /home/hadoop/apps/zookeeper-3.4.10/bin/../conf/zoo.cfg
Mode: follower
[hadoop@hadoop3 ~]$ 
復(fù)制代碼

查看進(jìn)程

3臺機(jī)器上都有QuorumPeerMain進(jìn)程

[hadoop@hadoop1 ~]$ jps
2499 Jps
2404 QuorumPeerMain
[hadoop@hadoop1 ~]$ 

 

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多