在server.properties文件中配置:
1、broker.id
kafka集群是由多個節點組成的,每個節點稱為一個broker,中文翻譯是代理。每個broker都有一個不同的brokerId,由broker.id指定,是一個不小於0的整數,各brokerId必須不同,但不必連續。如果我們想擴展kafka集群,只需引入新節點,分配一個不同的broker.id即可。
啟動kafka集群時,每一個broker都會實例化並啟動一個kafkaController,並將該broker的brokerId注冊到zooKeeper的相應節點中。集群各broker會根據選舉機制選出其中一個broker作為leader,即leader kafkaController。leader kafkaController負責主題的創建與刪除、分區和副本的管理等。當leader kafkaController宕機后,其他broker會再次選舉出新的leader kafkaController。
2、log.dir
broker持久化消息到哪里。broker啟動后,在此目錄中會有多個文件及目錄,文件有cleaner-offset-checkpoint、log-start-offset-checkpoint、recovery-point-offset-checkpoint、replication-offset-checkpoint、meta.properties。創建topic后,假如有副本分到這個broker上,則在log.dir目錄中會創建一個此副本對應的目錄,目錄名格式是{topic}-{partition},例如test-0,從名字就可以看出這是test topic的partition 0的一個副本。partition編號從0開始。test-0目錄中有.log、.index、.timeindex、leader-epoch-checkpoint文件。log文件是實際存放消息的文件,稱為數據文件。index文件是消息偏移量索引文件,timeindex文件是消息時間戳索引文件。log文件可能會有多個,這表示log分段了。至於什么情況下log會分段,見下面配置解釋。每個數據文件的名稱是該數據文件的第一條消息的偏移量左補0構成的20位數字字符。因為偏移量從0開始,所以每個分區每個副本的第一個數據文件都是00000000000000000000.log,后續每個數據文件的第一條消息的偏移量是上一個數據文件最后一條消息的偏移量+1。
3、log.retention.hours
log文件最小存活時間,默認是168h,即7天。相同作用的還有log.retention.minutes、log.retention.ms。retention是保存的意思。
4、log.retention.check.interval.ms
多長時間檢查一次是否有log文件要刪除。默認是300000ms,即5分鍾。所以一個消息的實際存活時間是介於log.retention.hours和(log.retention.hours + log.retention.check.interval.ms)之間的。
5、log.retention.bytes
限制單個分區的log文件的最大值,超過這個值,將刪除舊的log,以滿足log文件不超過這個值。默認是-1,即不限制。實際上這個配置項除了-1,不應該配置成其他值。同retention.bytes。
6、log.roll.hours
多少時間會生成一個新的log segment,默認是168h,即7天。相同作用的還有log.roll.ms、segment.ms。
7、log.segment.bytes
log segment多大之后會生成一個新的log segment,默認是1073741824,即1G。個人感覺按照時間生成log segment比按照大小生成log segment的策略要好,便於管理。同segment.bytes。
8、log.flush.interval.messages
指定broker每收到幾個消息就把消息從內存刷到硬盤。默認是9223372036854775807,哈哈,好大。kafka官方不建議使用這個配置,建議使用副本機制和操作系統的后台刷新功能,因為這更高效。這個配置可以根據不同的topic設置不同的值,即在創建topic的時候設置值。同flush.messages。
9、log.flush.interval.ms
指定broker每隔多少毫秒就把消息從內存刷到硬盤。默認值同log.flush.interval.messages一樣。同log.flush.interval.messages一樣,kafka官方不建議使用這個配置。同flush.ms。
cleaner-offset-checkpoint文件:???
log-start-offset-checkpoint文件:???
recovery-point-offset-checkpoint文件:???
replication-offset-checkpoint文件:???
leader-epoch-checkpoint文件:???