雖然在前面一部分我們啟動了kafka集群,並通過控制台的方式實現了producer和consumer,但是我們還是了解一下kafka單個節點是的配置參數屬性,
也只有了解了這些參數的配置,才能將kafka的性能發揮到最好。
標紅部分為集群必配屬性,致於其它的參數配置等學完后再回過頭來看這些參數,你就知道是什么意思了
1.broker.id broker.id=2 一般采用ip的后三位來用來標識是哪台kafka的broker,利於定位和排錯 2.Prot tcp用來監控的kafka端口 listeners=PLAINTEXT://192.168.43.17:9092 3.Zookeeper.connect #kafka連接zk的集群,多個用”,”號隔開 #zookeeper.connect=192.168.43.15:2181,192.168.43.16:2181,192.168.43.17:2181 #但是這樣寫不是很友好,kafka在連上zk后,直接在zk的根目錄創建自己需要的文件夾,這樣會導致zk的根目錄也非常亂 #同時如果有別的項目也在用zk創建1個controller目錄,kafka會產生一個controller的文件夾,這樣會導致混淆 #如果需要部署2個獨立的kafka storm環境時,只有一個zk集群時 #綜上所述,可以采用命名空間的方式解決以上問題: zookeeper.connect=192.168.43.15:2181,192.168.43.16:2181,192.168.43.17:2181/kafka_1(推薦使用這2種方式) zookeeper.connect=192.168.43.15:2181,192.168.43.16:2181,192.168.43.17:2181/kafka_2 4.Log.dirs(commit log) #用來存儲日志的路徑,它上面存放了多個log segment,如果采用了磁盤陣列,路徑可以是多個 #如果采用了多個存儲路徑,1個partition只能存放在1個路徑下,因為順序的磁盤讀寫操作速度 #可以接近隨機的內存讀寫速度 log.dirs=/var/lib/kafka 5.num.recovery.threads.per.data.dir=1 #kafka配置了1個線程池,當kafka啟動時打開每個segment,啟動失敗時檢查並截取每個segment #服務關閉時,關閉segments的句柄、管道的flush操作, num.recovery.threads.per.data.dir=1 #注意是1個路徑默認是1個線程,如果log.dirs配置了3個路徑,那么將會有24個線程 6.auto crteat.topics.enable(配置文件中沒有) #自動創建1個topic #當不存在1個topic時會創建,讀的時候會創建1個topic,通過api訪問元數據時,如果不存在會創建1個topic #但是這個創建的tpoic都是采用默認的配置,因此不建議使用 # 一般情況下我們設置成false 7.num.partitions #設置partitions 的個數 num.partitions=1 8.log.retention.ms #日志存放時間,依據是文件最后1次更新文件的時間,這個參數是針對broker的,按小時來算的 log.retention.hours=168 #存放1個星期 9.log.retention.bytes #partition保留數據的大小,這個參數是針對1個partitions 的 #如果有8個partition,每個partition設置的是1GB,那最多存8GB的東西,超過了就會將老的數據刪除 log.retention.bytes=1073741824 10.log.segment.bytes #設置segment 片斷的大小,如果存放的達到了設置的大小,這個segment 將會關閉,並且將會 #創建1個新的打開的segment,如果1個segment達到了設置的大小並且已關閉,那么這個segment是可 #以被刪除的,如果這個segment設置的小,則會頻繁的創建segment,會影響kafka的性能,如果設置的較大 #超過了log.retention.ms的保存時間,這樣會造成數據不一致或丟失的情況,因此,設置每個segment的 #大小還是要根據業務量來判斷 log.segment.bytes=1073741824 11.log.segment.ms #另一種控制segments關閉的參數設置 log.segment.ms 12.message.max.bytes #發送信息的最大單位值,如果超過了,會造成數據丟失 #如果要發送的數據量較大,可以調整這個參數和檢查發送數據量的 message.max.bytes=1024