KAFKA 參數詳解(一)

KAFKA採用zookeeper保存集羣的元數據和消費者信息,所以安裝kafka之前必須現有zookeeper

zookeeper採用一致性協議,所以部署的集羣最好是奇數個,少數服從多數,假設3個節點中有一個失效並不影響zookeeper處理外部請求,否則失效。以上主要是kafka基於zookeeper的一些注意事項。

接着,主要是kafka的的配置參數

(一)公共配置

1,broker id: kafka集羣的唯一表示符,服務器之間的交換均使用該ID

2,port:kafka監聽端口,一般默認是9092,使用1024以前端口的話就需要root權限。E.g:開啓線程消費時用到的就是這個端口

3,zookeeper.connect:用於保存broker元數據的zookeeper地址是通過該參數指定的,當producer向kafka topic發佈消息事,指定的就是zookeeper.connect這個路勁。

    (1)hostName:是Zookeeper IP地址或者機器名

    (2)zookeeper客戶端連接端口

    (3)/path 可選路徑,沒有則默認根目錄,該參數作爲kafka集羣的chroot環境,一旦指定之後一旦路徑不存在,則會自動創建它,但是生成者或者穿件kafka topic的時候記得把這個路勁帶上,如:

hadoop--1:2181,hadoop-02:2181,hadoop-03:2181/kafka_2 (/kafka_2就是kafka集羣環境的chroot參數指定的路徑)否則就會包broker找不到的錯誤,估計是因爲broker的信息和初始化的信息存在chroot下,但是使用的時候沒指定路徑就會去根目錄下找,結果找不到,就報了找不到broker的錯誤,下面有一個錯誤例子的把報錯信息:
4,log.dir:Kafka是把所有消息都保存在在磁盤上,存放目錄即通過該參數指定的。可以配置多個,逗號分隔開,同個分區的數據會保存在同個路徑下,分配原則是最少使用原則,即哪個路徑分區數目少,broker有優先往這個路徑新增分區
5,num.recovery.threads.per.data.dir:對於以下三種情況,kafka會使用用可配置的線程來處理日誌片段
    (1)服務器正常啓動,用戶打開每個分區的日誌片段
    (2)服務器奔潰後,用戶檢測和竊取每個分區的日誌片段,進行合併
    (3)服務器正常關閉,正常關閉日誌片段
每個片段目錄只使用一個線程,改線程只有在服務啓動關閉時纔會用到,該參數設置和上訴的log.dir有關,比如:該參數設置爲3個線程,如果log.dir也是爲3,則實際上總線程數是3*3=9
6,auto.create.topic.enable:是否自動創建線程
(二)主題的配置
1,num.partitions:分區數,已經存在的主題可以新增分區,但是不可以減少分區。爲了能使分區分佈在broker上,分區數必須大於broker數量,分區數的確定,dt:預計主題吞吐量,num=dt/max(pt,ct) 其中pt,ct分別爲生成者,消費者吞吐量
2,log.retention.ms,log.retention.min,log.rentention.hours:kafka數據保留時間(兩者選其一,都設置時選最小,默認168小時)
3,log.rentention.byte:每個分區的數據保留大小,分區爲單位。所以,當主圖中的分區數增加時,可以連帶增加主題數據的保留大小;保留時間和保留大小誰先到達,誰先觸發。
4,log.segment.byte:日誌切片大小,當日志大小達到該設定值時纔會關閉文件,重新打開新的日誌文件記錄
5,log.segment.ms:日誌切片時間,當日志打開時間達到該設定值時纔會關閉文件,重新打開新的日誌文件記錄
6,message.max.byte:限制消息大小,超過的時候,生產者發送的消息會收到broker返回來的錯誤    7,fetch.message.max.byte:消費者客戶端設置,這個值必須比message.max.byte大,才能確保消費端不會出錯,阻塞。
8,replica.fetch.max.byte:副本最大大小,和7同理
(三)系統參數
1,vm.swappiness:內存交換大小
2,vm.dirty_background_ratio:系統內存的百分比(後天刷新進程將髒頁數據寫入磁盤),即超過該值時,就會刷新頁面,將緩存數據入磁盤
(四)java調優
這個用到了java JVM的知識儲備。由於kafka運行過程中,對堆內存的使用GI,容易產生大量的垃圾對象,垃圾回收機制就顯得比較重要kafka默認是使用parallel New 和CMS(併發標記和清除)來回收。建議使用GI 回收

MaxGCPauseMillis:垃圾回收停頓時間,停頓期間,所有進程會被掛起,默認200ms,但是會根據回收頻率和回收區域大小來計算停頓時間
InitiatingHeapoccupancyPercent:堆內存百分比(年輕代和年老代),默認45%,超過該設定值則自動啓動回收機制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章