溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kafka深度研究之路(4)-kafka和zookeeper 配置文件詳細說明(來龍去脈)之zk配置

發(fā)布時間:2020-07-27 00:56:37 來源:網(wǎng)絡 閱讀:939 作者:馬吉輝 欄目:大數(shù)據(jù)

目錄
1/Zookeeper配置文件詳解
2/kafka配置文件參數(shù)詳解
3/生產(chǎn)環(huán)境 zk 與 kafka 配置文件備注
4/kafka命令詳解

1/安裝完zookeeper 對其配置文件詳解 zookeeper-3.4.14.tar.gz
在安裝zookeeper的時候我們要去修改zookeeper預裝是conf目錄下面的zoo_sample.cfg這個文件,首先我們要做的事就是重命名這個文件
[hadoop@kafka01-55-11 conf]$ cp zoo_sample.cfg zoo.cfg
[hadoop@kafka01-55-11 conf]$ grep '^[a-Z]' zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/tmp/zookeeper
clientPort=2181
//以上是默認的配置文件參數(shù)
預裝的zoo.cfg下面默認有五個屬性,他們分別是:1.tickTime,2.initLimit,3.syncLimit,4.dataDir,5.clientPort

[hadoop@tencent-kafka01-39-110 conf]$ cat 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 is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/data/zookeeper/data
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60                                           # 如果您需要處理更多客戶端,請增加此值
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3                               # 這個參數(shù)和上面的參數(shù)搭配使用,這個參數(shù)指定了需要保留的文件數(shù)目。默認是保留3個。
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1                                  #這個參數(shù)指定了清理頻率,單位是小時,需要填寫一個1或更大的整數(shù),默認是1,
server.1=10.9.39.110:2888:3888
server.2=10.9.139.65:2888:3888
server.3=10.9.35.206:2888:3888
server.4=10.9.88.40:2888:3888
server.5=10.9.74.126:2888:3888
autopurge.snapRetainCount=20
autopurge.purgeInterval=5

默認情況,tickTime=2sec,那么minSessionTimeout 和 maxSessionTimeout 分別是4sec和40sec

解釋如下:


[hadoop@kafka01-55-11 conf]$ cat zoo_sample.cfg         //zk默認必須參數(shù)配置如下
# The number of milliseconds of each tick
tickTime=2000                                           # tick翻譯成中文的話就是滴答滴答的意思,連起來就是滴答滴答的時間,寓意心跳間隔,單位是毫秒,系統(tǒng)默認是2000毫秒 ,也就是間隔兩秒心跳一次。 tickTime的意義:客戶端與服務器或者服務器與服務器之間維持心跳,也就是每個tickTime時間就會發(fā)送一次心跳。通過心跳不僅能夠用來監(jiān)聽機器的工作狀態(tài),還可以通過心跳來控制Flower跟Leader的通信時間,默認情況下FL的會話時常是心跳間隔的兩倍。
# synchronization phase can take 
initLimit=10                                            # 集群中的follower服務器(F)與leader服務器(L)之間初始連接時能容忍的最多心跳數(shù)(tickTime的數(shù)量)。
                                                        # clickhouse 官方文檔使用zk 這個   initLimit=30000 
# The number of ticks that can pass between             ??梢栽趦烧咧g傳遞的滴答數(shù)
# sending a request and getting an acknowledgement      #發(fā)送請求并獲得確認
syncLimit=5                                             # 集群中flower服務器(F)跟leader(L)服務器之間的請求和答應最多能容忍的心跳數(shù)。 
                                                        # clickhouse官方給出的 syncLimit=10
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper                                  # 該屬性對應的目錄是用來存放myid信息跟一些版本,日志,跟服務器唯一的ID信息等。
# the port at which the clients will connect
clientPort=2181                                    # 客戶端連接的接口,客戶端連接zookeeper服務器的端口,zookeeper會監(jiān)聽這個端口,接收客戶端的請求訪問!這個端口默認是2181。
# the maximum number of client connections.         # 最大客戶端連接數(shù)。
# increase this if you need to handle more clients
#maxClientCnxns=60                                   # 如果您需要處理更多客戶端,請增加此值 clickhouse官方用的zk中 這個值為2000 
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir          # 要在dataDir中保留的快照數(shù)
#autopurge.snapRetainCount=3                       # 這個參數(shù)和下面的參數(shù)搭配使用,這個參數(shù)指定了需要保留的文件數(shù)目。默認是保留3個。 clickhouse指定這個值為10                                                         #保留10個文件
# Purge task interval in hours
# Set to "0" to disable auto purge feature         #設置為“0”以禁用自動清除功能
#autopurge.purgeInterval=1                        # 這個參數(shù)指定了清理頻率,單位是小時,需要填寫一個1或更大的整數(shù),默認是1,
解釋
//autopurge.purgeInterval  這個參數(shù)指定了清理頻率,單位是小時,需要填寫一個1或更大的整數(shù),默認是1,
//autopurge.snapRetainCount 這個參數(shù)和上面的參數(shù)搭配使用,這個參數(shù)指定了需要保留的文件數(shù)目。默認是保留3個。
//默認情況,tickTime=2sec,那么minSessionTimeout 和 maxSessionTimeout 分別是4sec和40sec  

默認參數(shù)中沒有 maxSessionTimeout=90000    # minSessionTimeout, maxSessionTimeout:一般,客戶端連接zookeeper的時候,都會設置一個session timeout,如果超過這個時間client沒有zookeeper server有聯(lián)系,則這個session被設置為過期(如果這個session上有臨時節(jié)點,則會被全部刪除),但是這個時間不是客戶端可以無限設置的,服務器可以設置這兩個參數(shù)來限制客戶端設置的范圍。                               15分鐘
# clickhouse官方建議  maxSessionTimeout = 60000000       1000分鐘  所有,我們可以考慮調大此參數(shù)值
zookeeper 的擴展配置 高級配置項:
globalOutstandingLimit : 這個配置指定了等待處理的最大請求數(shù)量的限制(zookeeper.globalOutstandingLimit)。
client發(fā)送請求的速度可能會比server端處理的速度快,會導致請求在server端排隊,最終(在若干秒內)會使server的內存耗盡。為了避免這一點,如果等待的請求數(shù)量達到了globalOutstandingLimit,server端會拒絕client的請求。但是這個限制不是hard限制。每一個client至少能有一個outstanding請求,否則連接會開始出現(xiàn)超時。所以,當達到globalOutstandingLimit之后,只有在沒有任何的pending請求時,server才會從client連接讀取數(shù)據(jù)。
為了決定某一臺確定的server的限制,可以簡單的用這個配置項的值除以server的數(shù)量。現(xiàn)在沒有一種聰明的方式來決定這個值來進行限制,總的說來,這個配置項的值就是outstanding請求的上限。實際上,負載無法在server間進行均衡,總有一些server的負載會高一些,即使沒有達到上限。
默認的限制為1000個請求。通常不需要改變這個配置,如果有很多client會發(fā)送非常大的請求,你需要調低這個值,但是在實踐中通常不需要改變這個值。

maxClientCnxns: 決定了每個IP地址可以發(fā)起的socket連接個最大個數(shù)。
ZooKeeper使用了flow control和limit來避免連接過載。建立連接消耗的資源遠遠超過普通的操作消耗的資源。一瞬間過多的請求會造成拒絕服務的問題,所以加上了這個限制,當某個IP的連接超過了這個限制,server會拒絕連接。默認值為60。 建議 100
clientPortAddress: 默認server會監(jiān)聽所有的網(wǎng)絡接口提供client來連接。有一些服務器會有多個網(wǎng)絡接口,通常一些為內網(wǎng)接口一些為外網(wǎng)接口。如果不想開放外網(wǎng)接口,可以將此配置項設為內網(wǎng)接口。
minSessionTimeout: 這是session過期的最小超時時間,單位為毫秒。當client發(fā)起連接時,它會請求一個特定的超時時間,但是實際的超時時間并能小于這個配置項。
開發(fā)者喜歡立即并準確的檢測到client端的失敗。但不幸的是,系統(tǒng)不能實時的檢測到,實際上是使用心跳和超時來做的。超時的使用依賴于client端和server端的網(wǎng)絡延遲和可靠性。超時時間必須至少等于網(wǎng)絡的round trip time,但是偶爾會有丟包的情況,在這種情況下接收響應的時間會增加,因為會發(fā)送發(fā)送丟失的包。
默認minSessionTimeout是tickTime的2倍。把這個值設置得過低的話會導致錯誤的檢測client的失敗。設置得太高的話會導致檢測client的失敗的延遲。  //一般不要考慮此參數(shù)
maxSessionTimeout:這是最大的session超時時間,單位為毫秒。當client發(fā)起連接時,它會請求一個特定的超時時間,但是實際的超時時間并能大于這個配置項。
盡管這個配置不會影響系統(tǒng)性能,但會限制client消耗系統(tǒng)資源的時間。默認是tickTime的20倍。   tickTime=2s  maxSessionTimeout=40s默認 我們生產(chǎn)配置設置成 90s
preAllocSize:
對應的Java系統(tǒng)屬性:zookeeper.preAllocSize。
用于配置ZooKeeper事務日志文件預分配的磁盤空間大小。默認的塊大小是64M。改變塊大小的其中一個原因是當數(shù)據(jù)快照文件生成比較頻繁時可以適當減少塊大小。比如 1000次事務會新產(chǎn)生一個快照(參數(shù)為snapCount),新產(chǎn)生快照后會用新的事務日志文件,假設一個事務信息大小100b,那么事務日志預分配的磁盤空間大小為100kb會比較好。
// clickhouse 官方給定的值為 preAllocSize = 131072
snapCount
對應的Java系統(tǒng)屬性:zookeeper.snapCount。
ZooKeeper 將事務記錄到事務日志中。當 snapCount 個事務被寫到一個日志文件后,啟動一個快照并創(chuàng)建一個新的事務日志文件。snapCount 的默認值是 100,000
// clickhouse 官方給的值為 snapCount = 3000000
leaderServes
對應的Java系統(tǒng)屬性:zookeeper.leaderServes。
用于配置Leader是否接受客戶端連接,默認值是“yes”,即Leader將會接受客戶端連接。在ZooKeeper中,Leader服務器主要協(xié)調事務更新請求。對于事務更新請求吞吐很高而讀取請求吞吐很低的情況可以配置Leader不接受客戶端連接,這樣就可以專注于協(xié)調工作。
注意:當ZooKeeper集群中服務器的數(shù)量超過3個時,建議開啟Leader選舉。
// clickhouse 官方配置文件為  leaderServes=yes 默認是開啟的

ZooKeeper的配置文件優(yōu)化性能(轉) https://www.cnblogs.com/EasonJim/p/7488834.html  
// 此鏈接參數(shù) 很重要,很詳細

這里有一個坑,就是
server.1=10.2.10.174:2888:3888 //這里要寫IP 不要寫成server.1=emm-kafka01-10--174:2888:3888
為什么呢?
寫主機名,zk能起來,kafka也能起來,但是kafka他去解析ZK的時候,他不通過etc/hosts 以后會出問題
這里面,我們就用IP,這里注意下

(其中2181代表:客戶端與服務器連接所用的端口)
(其中2888代表:leader與follower之間的通信用的端口)
(其中3888代表:follower之間選舉投票用的端口)

zookeeper的配置參數(shù)詳解(zoo.cfg)  https://www.orchome.com/1419     不錯
#################################################################
grep '^[a-Z]' zoo.cfg          
tickTime=2000                      # tick翻譯成中文的話就是滴答滴答的意思,連起來就是滴答滴答的時間,寓意心跳間隔,單位是毫秒,系統(tǒng)默認是2000毫秒 ,也就是間隔兩秒心跳一次。
tickTime的意義:客戶端與服務器或者服務器與服務器之間維持心跳,也就是每個tickTime時間就會發(fā)送一次心跳。通過心跳不僅能夠用來監(jiān)聽機器的工作狀態(tài),還可以通過心跳來控制Flower跟Leader的通信時間,默認情況下FL的會話時常是心跳間隔的兩倍。
initLimit=10                       # 集群中的follower服務器(F)與leader服務器(L)之間初始連接時能容忍的最多心跳數(shù)(tickTime的數(shù)量)。
//白話:Follower在啟動過程中,會從Leader同步所有最新數(shù)據(jù),然后確定自己能夠對外服務的起始狀態(tài)。Leader允許F在initLimit時間內完成這個工作。
syncLimit=5                        # 集群中flower服務器(F)跟leader(L)服務器之間的請求和答應最多能容忍的心跳數(shù)。
//白話:在運行過程中,Leader負責與ZK集群中所有機器進行通信,例如通過一些心跳檢測機制,來檢測機器的存活狀態(tài)。如果L發(fā)出心跳包在syncLimit之后,還沒有從F那里收到響應,那么就認為這個F已經(jīng)不在線了。
dataDir=/data/zookeeper/dataDir     # 該屬性對應的目錄是用來存放myid信息跟一些版本,日志,跟服務器唯一的ID信息等。
clientPort=2181                     # 客戶端連接的接口,客戶端連接zookeeper服務器的端口,zookeeper會監(jiān)聽這個端口,接收客戶端的請求訪問!這個端口默認是2181。
maxSessionTimeout=90000            # minSessionTimeout, maxSessionTimeout:一般,客戶端連接zookeeper的時候,都會設置一個session timeout,如果超過這個時間client沒有zookeeper server有聯(lián)系,則這個session被設置為過期(如果這個session上有臨時節(jié)點,則會被全部刪除),但是這個時間不是客戶端可以無限設置的,服務器可以設置這兩個參數(shù)來限制客戶端設置的范圍。                               15分鐘
maxClientCnxns=60                  # 如果您需要處理更多客戶端,請增加此值
server.1=10.9.39.110:2888:3888
server.2=10.9.139.65:2888:3888
server.3=10.9.35.206:2888:3888
server.4=10.9.88.40:2888:3888
server.5=10.9.74.126:2888:3888
autopurge.snapRetainCount=20        #保留20個文件
autopurge.purgeInterval=5           #保留5小時內的日志    
//此處我們的配置就是:保留5小時內的日志,并且保留20個文件        建議在生產(chǎn)上 設置成 保留48小時 并且保留20個文件 我們線上保留的是 5小時
//autopurge.purgeInterval  這個參數(shù)指定了清理頻率,單位是小時,需要填寫一個1或更大的整數(shù),默認是1,
//autopurge.snapRetainCount 這個參數(shù)和上面的參數(shù)搭配使用,這個參數(shù)指定了需要保留的文件數(shù)目。默認是保留3個。
//默認情況,tickTime=2sec,那么minSessionTimeout 和 maxSessionTimeout 分別是4sec和40sec 
#################################################################
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI