Kafka筆記2(安裝)
1.安裝java
2.安裝zookeeper
3.安裝kafka Broker
測試:發布消息
測試:讀取消息
4,broker配置
常規配置:
broker.id: 默認0 每個broker都需要一個標識符,使用broker.id標識,在kafka集群裏必須唯一
port 默認監聽9092端口,使用1024以下的端口,需要root權限啟動Kafka,不建議
zookeeper.connect 用於保存broker元數據的zookeeper地址,格式: hostname:port/path
hostname zookeeper服務器的IP地址或機器名
port zookeeper客戶端連接端口
/path 可選的zookeeper路徑,作為kafka集群chroot環境,默認根路徑
log.dirs 存放Kafka所有消息的日誌片段的路徑 註意:broker會向擁有最少數目分區的路徑新增分區,而不是往最小磁盤空間的路徑新增分區
num.recovery.threads.per.data.dir
對於如下3種情況,Kafka使用可配置的線程池來處理日誌片段
服務器正常啟動,用於打開每個分區的日誌片段
服務器崩潰後重啟,用於檢查和截短每個分區的日誌片段
服務器正常關閉,用於關閉日誌片段
默認每個日誌目錄(log.dirs)只使用一個線程
如果num.recovery.threads.per.data.dir=8,log.dir指定了3個路徑,則一共需要24個線程
auto.create.topic.enable
默認情況下Kafka會在如下情形自動創建主題:
當一個生產者開始往主題寫入消息時
當一個消費者開始從主題讀取消息時
當任意一個客戶端向主題發送元數據請求時
主題的默認配置參數:
num.partitions
分區的參考計算:每秒從主題讀取/寫入1G數據,每個消費者處理50M數據,那麽分區的個數> 1G/50M=20個
根據經驗,分區的大小限制在25GB以內較理想
log.retention.ms 指定Kafka數據可以保留多長時間 ,除此之外還有參數log.retention.minutes log.retention.hour; kafka優先使用具有最小值的參數
log.retention.bytes 決定Kafka每個分區數據過期的字節數閾值
log.segment.bytes 日誌片段關閉的閾值 當分區上的日誌片段到達log.segment.bytes指定的上限時,當前日誌片段就會關閉,開啟新的日誌片段,同時關閉的日誌片段也會開始等待過期
log.segment.ms 指定多長時間後日誌片段開始關閉
message.max.bytes 限制單個消息大小 默認1M,該參數是指壓縮後消息的大小
消費者客戶端設置的fetch.message.max.bytes必須與服務端設置的消息大小協調;若fetch.message.max.bytes < message.max.bytes 那麽消費者無法讀取比較大的消息,導致出現消費者被阻塞情形,在為集群broker設置replica.fetch.max.bytes參數時,也遵循同樣原則
硬件上的選擇:
磁盤吞吐量:
生產者客戶端性能受到服務器端磁盤吞吐量影響
磁盤容量
內存
服務器端可用的內存容量是影響客戶端性能的主要因素,磁盤性能影響生產者,內存影響消費者
Kafka會使用頁面緩存,如果和其他應用共享頁面緩存會降低Kafka消費者的性能
網絡
網絡吞吐量決定Kafka能處理的最大數據流量
CPU
Kafka對數據的壓縮和解壓縮會用到計算能力
KafKa集群: 可以實現負載均衡/避免單點故障
需要多少broker: 集群需要保留10T數據,每個broker可以保存2T,則至少需要5個broker,若果開啟復制,則還需要擴大一倍即10個
新加一個broker至集群種,修改2個參數: 1)配置相同的zookeeper.connect 2) 設置唯一的broker.id
Kafka筆記2(安裝)