目錄
1/Zookeeper配置文件詳解
2/kafka配置文件參數(shù)詳解
3/生產(chǎn)環(huán)境 zk 與 kafka 配置文件備注
4/kafka命令詳解
成都創(chuàng)新互聯(lián)公司致力于網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),成都網(wǎng)站設(shè)計(jì),集團(tuán)網(wǎng)站建設(shè)等服務(wù)標(biāo)準(zhǔn)化,推過標(biāo)準(zhǔn)化降低中小企業(yè)的建站的成本,并持續(xù)提升建站的定制化服務(wù)水平進(jìn)行質(zhì)量交付,讓企業(yè)網(wǎng)站從市場競爭中脫穎而出。 選擇成都創(chuàng)新互聯(lián)公司,就選擇了安全、穩(wěn)定、美觀的網(wǎng)站建設(shè)服務(wù)!
1/安裝完zookeeper 對其配置文件詳解 zookeeper-3.4.14.tar.gz
在安裝zookeeper的時(shí)候我們要去修改zookeeper預(yù)裝是conf目錄下面的zoo_sample.cfg這個(gè)文件,首先我們要做的事就是重命名這個(gè)文件
[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
//以上是默認(rèn)的配置文件參數(shù)
預(yù)裝的zoo.cfg下面默認(rèn)有五個(gè)屬性,他們分別是: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 # 如果您需要處理更多客戶端,請?jiān)黾哟酥?#
# 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 # 這個(gè)參數(shù)和上面的參數(shù)搭配使用,這個(gè)參數(shù)指定了需要保留的文件數(shù)目。默認(rèn)是保留3個(gè)。
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1 #這個(gè)參數(shù)指定了清理頻率,單位是小時(shí),需要填寫一個(gè)1或更大的整數(shù),默認(rèn)是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
默認(rèn)情況,tickTime=2sec,那么minSessionTimeout 和 maxSessionTimeout 分別是4sec和40sec
解釋如下:
[hadoop@kafka01-55-11 conf]$ cat zoo_sample.cfg //zk默認(rèn)必須參數(shù)配置如下
# The number of milliseconds of each tick
tickTime=2000 # tick翻譯成中文的話就是滴答滴答的意思,連起來就是滴答滴答的時(shí)間,寓意心跳間隔,單位是毫秒,系統(tǒng)默認(rèn)是2000毫秒 ,也就是間隔兩秒心跳一次。 tickTime的意義:客戶端與服務(wù)器或者服務(wù)器與服務(wù)器之間維持心跳,也就是每個(gè)tickTime時(shí)間就會發(fā)送一次心跳。通過心跳不僅能夠用來監(jiān)聽機(jī)器的工作狀態(tài),還可以通過心跳來控制Flower跟Leader的通信時(shí)間,默認(rèn)情況下FL的會話時(shí)常是心跳間隔的兩倍。
# synchronization phase can take
initLimit=10 # 集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間初始連接時(shí)能容忍的最多心跳數(shù)(tickTime的數(shù)量)。
# clickhouse 官方文檔使用zk 這個(gè) initLimit=30000
# The number of ticks that can pass between ??梢栽趦烧咧g傳遞的滴答數(shù)
# sending a request and getting an acknowledgement #發(fā)送請求并獲得確認(rèn)
syncLimit=5 # 集群中flower服務(wù)器(F)跟leader(L)服務(wù)器之間的請求和答應(yīng)最多能容忍的心跳數(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 # 該屬性對應(yīng)的目錄是用來存放myid信息跟一些版本,日志,跟服務(wù)器唯一的ID信息等。
# the port at which the clients will connect
clientPort=2181 # 客戶端連接的接口,客戶端連接zookeeper服務(wù)器的端口,zookeeper會監(jiān)聽這個(gè)端口,接收客戶端的請求訪問!這個(gè)端口默認(rèn)是2181。
# the maximum number of client connections. # 最大客戶端連接數(shù)。
# increase this if you need to handle more clients
#maxClientCnxns=60 # 如果您需要處理更多客戶端,請?jiān)黾哟酥?clickhouse官方用的zk中 這個(gè)值為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 # 這個(gè)參數(shù)和下面的參數(shù)搭配使用,這個(gè)參數(shù)指定了需要保留的文件數(shù)目。默認(rèn)是保留3個(gè)。 clickhouse指定這個(gè)值為10 #保留10個(gè)文件
# Purge task interval in hours
# Set to "0" to disable auto purge feature #設(shè)置為“0”以禁用自動清除功能
#autopurge.purgeInterval=1 # 這個(gè)參數(shù)指定了清理頻率,單位是小時(shí),需要填寫一個(gè)1或更大的整數(shù),默認(rèn)是1,
解釋
//autopurge.purgeInterval 這個(gè)參數(shù)指定了清理頻率,單位是小時(shí),需要填寫一個(gè)1或更大的整數(shù),默認(rèn)是1,
//autopurge.snapRetainCount 這個(gè)參數(shù)和上面的參數(shù)搭配使用,這個(gè)參數(shù)指定了需要保留的文件數(shù)目。默認(rèn)是保留3個(gè)。
//默認(rèn)情況,tickTime=2sec,那么minSessionTimeout 和 maxSessionTimeout 分別是4sec和40sec
默認(rèn)參數(shù)中沒有 maxSessionTimeout=90000 # minSessionTimeout, maxSessionTimeout:一般,客戶端連接zookeeper的時(shí)候,都會設(shè)置一個(gè)session timeout,如果超過這個(gè)時(shí)間client沒有zookeeper server有聯(lián)系,則這個(gè)session被設(shè)置為過期(如果這個(gè)session上有臨時(shí)節(jié)點(diǎn),則會被全部刪除),但是這個(gè)時(shí)間不是客戶端可以無限設(shè)置的,服務(wù)器可以設(shè)置這兩個(gè)參數(shù)來限制客戶端設(shè)置的范圍。 15分鐘
# clickhouse官方建議 maxSessionTimeout = 60000000 1000分鐘 所有,我們可以考慮調(diào)大此參數(shù)值
zookeeper 的擴(kuò)展配置 高級配置項(xiàng):
globalOutstandingLimit : 這個(gè)配置指定了等待處理的最大請求數(shù)量的限制(zookeeper.globalOutstandingLimit)。
client發(fā)送請求的速度可能會比server端處理的速度快,會導(dǎo)致請求在server端排隊(duì),最終(在若干秒內(nèi))會使server的內(nèi)存耗盡。為了避免這一點(diǎn),如果等待的請求數(shù)量達(dá)到了globalOutstandingLimit,server端會拒絕client的請求。但是這個(gè)限制不是hard限制。每一個(gè)client至少能有一個(gè)outstanding請求,否則連接會開始出現(xiàn)超時(shí)。所以,當(dāng)達(dá)到globalOutstandingLimit之后,只有在沒有任何的pending請求時(shí),server才會從client連接讀取數(shù)據(jù)。
為了決定某一臺確定的server的限制,可以簡單的用這個(gè)配置項(xiàng)的值除以server的數(shù)量?,F(xiàn)在沒有一種聰明的方式來決定這個(gè)值來進(jìn)行限制,總的說來,這個(gè)配置項(xiàng)的值就是outstanding請求的上限。實(shí)際上,負(fù)載無法在server間進(jìn)行均衡,總有一些server的負(fù)載會高一些,即使沒有達(dá)到上限。
默認(rèn)的限制為1000個(gè)請求。通常不需要改變這個(gè)配置,如果有很多client會發(fā)送非常大的請求,你需要調(diào)低這個(gè)值,但是在實(shí)踐中通常不需要改變這個(gè)值。
maxClientCnxns: 決定了每個(gè)IP地址可以發(fā)起的socket連接個(gè)最大個(gè)數(shù)。
ZooKeeper使用了flow control和limit來避免連接過載。建立連接消耗的資源遠(yuǎn)遠(yuǎn)超過普通的操作消耗的資源。一瞬間過多的請求會造成拒絕服務(wù)的問題,所以加上了這個(gè)限制,當(dāng)某個(gè)IP的連接超過了這個(gè)限制,server會拒絕連接。默認(rèn)值為60。 建議 100
clientPortAddress: 默認(rèn)server會監(jiān)聽所有的網(wǎng)絡(luò)接口提供client來連接。有一些服務(wù)器會有多個(gè)網(wǎng)絡(luò)接口,通常一些為內(nèi)網(wǎng)接口一些為外網(wǎng)接口。如果不想開放外網(wǎng)接口,可以將此配置項(xiàng)設(shè)為內(nèi)網(wǎng)接口。
minSessionTimeout: 這是session過期的最小超時(shí)時(shí)間,單位為毫秒。當(dāng)client發(fā)起連接時(shí),它會請求一個(gè)特定的超時(shí)時(shí)間,但是實(shí)際的超時(shí)時(shí)間并能小于這個(gè)配置項(xiàng)。
開發(fā)者喜歡立即并準(zhǔn)確的檢測到client端的失敗。但不幸的是,系統(tǒng)不能實(shí)時(shí)的檢測到,實(shí)際上是使用心跳和超時(shí)來做的。超時(shí)的使用依賴于client端和server端的網(wǎng)絡(luò)延遲和可靠性。超時(shí)時(shí)間必須至少等于網(wǎng)絡(luò)的round trip time,但是偶爾會有丟包的情況,在這種情況下接收響應(yīng)的時(shí)間會增加,因?yàn)闀l(fā)送發(fā)送丟失的包。
默認(rèn)minSessionTimeout是tickTime的2倍。把這個(gè)值設(shè)置得過低的話會導(dǎo)致錯誤的檢測client的失敗。設(shè)置得太高的話會導(dǎo)致檢測client的失敗的延遲。 //一般不要考慮此參數(shù)
maxSessionTimeout:這是最大的session超時(shí)時(shí)間,單位為毫秒。當(dāng)client發(fā)起連接時(shí),它會請求一個(gè)特定的超時(shí)時(shí)間,但是實(shí)際的超時(shí)時(shí)間并能大于這個(gè)配置項(xiàng)。
盡管這個(gè)配置不會影響系統(tǒng)性能,但會限制client消耗系統(tǒng)資源的時(shí)間。默認(rèn)是tickTime的20倍。 tickTime=2s maxSessionTimeout=40s默認(rèn) 我們生產(chǎn)配置設(shè)置成 90s
preAllocSize:
對應(yīng)的Java系統(tǒng)屬性:zookeeper.preAllocSize。
用于配置ZooKeeper事務(wù)日志文件預(yù)分配的磁盤空間大小。默認(rèn)的塊大小是64M。改變塊大小的其中一個(gè)原因是當(dāng)數(shù)據(jù)快照文件生成比較頻繁時(shí)可以適當(dāng)減少塊大小。比如 1000次事務(wù)會新產(chǎn)生一個(gè)快照(參數(shù)為snapCount),新產(chǎn)生快照后會用新的事務(wù)日志文件,假設(shè)一個(gè)事務(wù)信息大小100b,那么事務(wù)日志預(yù)分配的磁盤空間大小為100kb會比較好。
// clickhouse 官方給定的值為 preAllocSize = 131072
snapCount
對應(yīng)的Java系統(tǒng)屬性:zookeeper.snapCount。
ZooKeeper 將事務(wù)記錄到事務(wù)日志中。當(dāng) snapCount 個(gè)事務(wù)被寫到一個(gè)日志文件后,啟動一個(gè)快照并創(chuàng)建一個(gè)新的事務(wù)日志文件。snapCount 的默認(rèn)值是 100,000
// clickhouse 官方給的值為 snapCount = 3000000
leaderServes
對應(yīng)的Java系統(tǒng)屬性:zookeeper.leaderServes。
用于配置Leader是否接受客戶端連接,默認(rèn)值是“yes”,即Leader將會接受客戶端連接。在ZooKeeper中,Leader服務(wù)器主要協(xié)調(diào)事務(wù)更新請求。對于事務(wù)更新請求吞吐很高而讀取請求吞吐很低的情況可以配置Leader不接受客戶端連接,這樣就可以專注于協(xié)調(diào)工作。
注意:當(dāng)ZooKeeper集群中服務(wù)器的數(shù)量超過3個(gè)時(shí),建議開啟Leader選舉。
// clickhouse 官方配置文件為 leaderServes=yes 默認(rèn)是開啟的
ZooKeeper的配置文件優(yōu)化性能(轉(zhuǎn)) https://www.cnblogs.com/EasonJim/p/7488834.html
// 此鏈接參數(shù) 很重要,很詳細(xì)
這里有一個(gè)坑,就是
server.1=10.2.10.174:2888:3888 //這里要寫IP 不要寫成server.1=emm-kafka01-10--174:2888:3888
為什么呢?
寫主機(jī)名,zk能起來,kafka也能起來,但是kafka他去解析ZK的時(shí)候,他不通過etc/hosts 以后會出問題
這里面,我們就用IP,這里注意下
(其中2181代表:客戶端與服務(wù)器連接所用的端口)
(其中2888代表:leader與follower之間的通信用的端口)
(其中3888代表:follower之間選舉投票用的端口)
zookeeper的配置參數(shù)詳解(zoo.cfg) https://www.orchome.com/1419 不錯
#################################################################
grep '^[a-Z]' zoo.cfg
tickTime=2000 # tick翻譯成中文的話就是滴答滴答的意思,連起來就是滴答滴答的時(shí)間,寓意心跳間隔,單位是毫秒,系統(tǒng)默認(rèn)是2000毫秒 ,也就是間隔兩秒心跳一次。
tickTime的意義:客戶端與服務(wù)器或者服務(wù)器與服務(wù)器之間維持心跳,也就是每個(gè)tickTime時(shí)間就會發(fā)送一次心跳。通過心跳不僅能夠用來監(jiān)聽機(jī)器的工作狀態(tài),還可以通過心跳來控制Flower跟Leader的通信時(shí)間,默認(rèn)情況下FL的會話時(shí)常是心跳間隔的兩倍。
initLimit=10 # 集群中的follower服務(wù)器(F)與leader服務(wù)器(L)之間初始連接時(shí)能容忍的最多心跳數(shù)(tickTime的數(shù)量)。
//白話:Follower在啟動過程中,會從Leader同步所有最新數(shù)據(jù),然后確定自己能夠?qū)ν夥?wù)的起始狀態(tài)。Leader允許F在initLimit時(shí)間內(nèi)完成這個(gè)工作。
syncLimit=5 # 集群中flower服務(wù)器(F)跟leader(L)服務(wù)器之間的請求和答應(yīng)最多能容忍的心跳數(shù)。
//白話:在運(yùn)行過程中,Leader負(fù)責(zé)與ZK集群中所有機(jī)器進(jìn)行通信,例如通過一些心跳檢測機(jī)制,來檢測機(jī)器的存活狀態(tài)。如果L發(fā)出心跳包在syncLimit之后,還沒有從F那里收到響應(yīng),那么就認(rèn)為這個(gè)F已經(jīng)不在線了。
dataDir=/data/zookeeper/dataDir # 該屬性對應(yīng)的目錄是用來存放myid信息跟一些版本,日志,跟服務(wù)器唯一的ID信息等。
clientPort=2181 # 客戶端連接的接口,客戶端連接zookeeper服務(wù)器的端口,zookeeper會監(jiān)聽這個(gè)端口,接收客戶端的請求訪問!這個(gè)端口默認(rèn)是2181。
maxSessionTimeout=90000 # minSessionTimeout, maxSessionTimeout:一般,客戶端連接zookeeper的時(shí)候,都會設(shè)置一個(gè)session timeout,如果超過這個(gè)時(shí)間client沒有zookeeper server有聯(lián)系,則這個(gè)session被設(shè)置為過期(如果這個(gè)session上有臨時(shí)節(jié)點(diǎn),則會被全部刪除),但是這個(gè)時(shí)間不是客戶端可以無限設(shè)置的,服務(wù)器可以設(shè)置這兩個(gè)參數(shù)來限制客戶端設(shè)置的范圍。 15分鐘
maxClientCnxns=60 # 如果您需要處理更多客戶端,請?jiān)黾哟酥?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個(gè)文件
autopurge.purgeInterval=5 #保留5小時(shí)內(nèi)的日志
//此處我們的配置就是:保留5小時(shí)內(nèi)的日志,并且保留20個(gè)文件 建議在生產(chǎn)上 設(shè)置成 保留48小時(shí) 并且保留20個(gè)文件 我們線上保留的是 5小時(shí)
//autopurge.purgeInterval 這個(gè)參數(shù)指定了清理頻率,單位是小時(shí),需要填寫一個(gè)1或更大的整數(shù),默認(rèn)是1,
//autopurge.snapRetainCount 這個(gè)參數(shù)和上面的參數(shù)搭配使用,這個(gè)參數(shù)指定了需要保留的文件數(shù)目。默認(rèn)是保留3個(gè)。
//默認(rèn)情況,tickTime=2sec,那么minSessionTimeout 和 maxSessionTimeout 分別是4sec和40sec
#################################################################