Kafka 幾個重要的配置總結

2021-07-04 17:53:45 字數 3463 閱讀 7453

注意:配置基於kafka 0.8.2.1

broker配置

#非負整數,用於唯一標識broker

broker.id 0

#kafka持久化資料儲存的路徑,可以指定多個,以逗號分隔

log.dirs /tmp/kafka-logs

#broker接收連線請求的埠

port 9092

#指定zk連線字串,[hostname:port]以逗號分隔

zookeeper.connect

#單條訊息最大大小控制,消費端的最大拉取大小需要略大於該值

message.max.bytes 1000000

#接收網路請求的執行緒數

num.network.threads 3

#用於執行請求的i/o執行緒數

num.io.threads 8

#用於各種後台處理任務(如檔案刪除)的執行緒數

background.threads 10

#待處理請求最大可緩衝的佇列大小

queued.max.requests 500

#配置該機器的ip位址

host.name 

#預設分割槽個數

num.partitions  1

#分段檔案大小,超過後會輪轉

log.segment.bytes 1024 * 1024 * 1024

#日誌沒達到大小,如果達到這個時間也會輪轉

log.roll.   168

#日誌保留時間

log.retention.

#不存在topic的時候是否自動建立

auto.create.topics.enable true

#partition預設的備份因子

default.replication.factor 1

#如果這個時間內follower沒有發起fetch請求,被認為dead,從isr移除

replica.lag.time.max.ms   10000

#如果follower相比leader落後這麼多以上訊息條數,會被從isr移除

replica.lag.max.messages  4000

#從leader可以拉取的訊息最大大小

replica.fetch.max.bytes 1024 * 1024

#從leader拉取訊息的fetch執行緒數

num.replica.fetchers 1

#zk會話超時時間

zookeeper.session.timeout.ms  6000

#zk連線所用時間

zookeeper.connection.timeout.ms

#zk follower落後leader的時間

zookeeper.sync.time.ms 2000

#是否開啟topic可以被刪除的方式

delete.topic.enable false

producer配置

#參與訊息確認的broker數量控制,0代表不需要任何確認 1代表需要leader replica確認 -1代表需要isr中所有進行確認

request.required.acks 0

#從傳送請求到收到ack確認等待的最長時間(超時時間)

request.timeout.ms  10000

#設定訊息傳送模式,預設是同步方式, async非同步模式下允許訊息累計到一定量或一段時間又另外執行緒批量傳送,吞吐量好但丟失資料風險增大

producer.type sync

#訊息序列化類實現方式,預設是byte陣列形式

serializer.class kafka.serializer.defaultencoder

#kafka訊息分割槽策略實現方式,預設是對key進行hash

partitioner.class kafka.producer.defaultpartitioner

compression.codec none

#指定哪些topic的message需要壓縮

compressed.topics  null

#訊息傳送失敗的情況下,重試傳送的次數 存在訊息傳送是成功的,只是由於網路導致ack沒收到的重試,會出現訊息被重**送的情況

message.send.max.retries 3

#在開始重新發起metadata更新操作需要等待的時間

retry.backoff.ms 100

#metadata重新整理間隔時間,如果負值則失敗的時候才會重新整理,如果0則每次傳送後都重新整理,正值則是一種週期行為

topic.metadata.refresh.interval.ms 600 * 1000

#非同步傳送模式下,快取資料的最長時間,之後便會被傳送到broker

queue.buffering.max.ms 5000

#producer端非同步模式下最多快取的訊息條數

queue.buffering.max.messages 10000

#0代表佇列沒滿的時候直接入隊,滿了立即扔棄,-1代表無條件阻塞且不丟棄

queue.enqueue.timeout.ms -1

#一次批量傳送需要達到的訊息條數,當然如果queue.buffering.max.ms達到的時候也會被傳送

batch.num.messages 200

consumer配置

#指明當前消費程序所屬的消費組,乙個partition只能被同乙個消費組的乙個消費者消費

group.id

#針對乙個partition的fetch request所能拉取的最大訊息位元組數,必須大於等於kafka執行的最大訊息

fetch.message.max.bytes  1024 * 1024

#是否自動週期性提交已經拉取到消費端的訊息offset

auto.commit.enable true

#自動提交offset到zookeeper的時間間隔

auto.commit.interval.ms  60 * 1000

#消費均衡的重試次數

rebalance.max.retries  4

#消費均衡兩次重試之間的時間間隔

rebalance.backoff.ms 2000

#當重新去獲取partition的leader前需要等待的時間

refresh.leader.backoff.ms   200

#如果zookeeper上沒有offset合理的初始值情況下獲取第一條訊息開始的策略smallest|largeset

auto.offset.reset largest

#如果其超時,將會可能觸發rebalance並認為已經死去

zookeeper.session.timeout.ms  6000

#確認zookeeper連線建立操作客戶端能等待的最長時間

zookeeper.connection.timeout.ms 6000

kafka常規及幾個重要的操作命令

1.檢視所有topic kafka topics.sh zookeeper hadoop3 list 2.建立tooic及topic的partitioner kafka topics.sh zookeeper hadoop3 2181,hadoop4 2181,hadoop5 2181,hadoop...

kafka集群重要的引數配置(三)

我們具體說說 的概念,從構成上來說,它是若干個逗號分隔的三元組,每個三元組的格式為 協議名稱,主機名,埠號 這裡的協議名稱可能是標準的名字,比如 plaintext 表示明文傳輸 ssl 表示使用 ssl 或 tls 加密傳輸等 也可能是你自己定義的協議名字,比如controller localho...

Linux的幾個重要配置檔案

etc profile 此檔案為系統的每個使用者設定環境資訊,當使用者第一次登入時,該檔案被執行.並從 etc profile.d目錄的配置檔案中蒐集shell的設定.etc bashrc 為每乙個執行bash shell的使用者執行此檔案.當bash shell被開啟時,該檔案被讀取.bash p...