【總結筆記】kafka工作常見問題彙總

  • 沒有禁用"自動創建topic"的功能

已經增加參數auto.create.topics.enable=false,否則任何人只要發數據給kafka,沒有對應的topic都會自動創建,一旦生產者多了會亂套。

  • 數據保留週期過短

已經修改爲3天,log.retention.hours=72。默認是3小時,阿里雲的破環境有時候網絡出問題就得三小時,來不及消費的消息就沒了。

  • 節點有點少(一主一備,最小集羣得3個,暫時2個也能玩)

咱們kafka broker就2個節點,創建topic一般會配置副本因爲爲1,副本和主本一般應該在不同的機器上,否則從數據冗餘角度來說沒啥意義。

  • data目錄跟mariadb的數據目錄混在一起了

我重啓kafka發現起不來,原因是數據目錄下放了mariadb的數據,啓動時kafka認爲是一個topic的分區,結果檢查數據發現不對就直接退出了。

由log.dirs=/data改爲了log.dirs=/data/kafka

 

  • 消費者無法消費的問題

這個問題有點隱蔽,打開host.name配置就好,在每個broker分配打開配置:host.name=10.45.41.173(各節點用自己的IP),原因如下:

 

我們知道配置consumer時只需要提供zookeeper信息即可,consumer會從zk獲取broker、topic、partition信息的。

而zk裏存的這些信息是broker啓動起來之後寫到zk裏的,broker有個配置項advertised.host.name,broker就是把它的值寫到了zk。

 

advertised.host.name如果不配置,他會等於host.name的值,前提是host.name配置打開了,否則host.name的值就是java.net.InetAddress.getCanonicalHostName 的值,在mac上、windows上這個值返回IP,但在linux上這個值就是 hostname 的值。

 

一旦zk裏存的是broker的hostname,而producers和consumers的/etc/hosts文件又沒改,那他沒法完成從hostname到IP的映射,因此就不能生產和消費。

 

  • 已有topicpartition有點少

partition都只有2個,創建topic時可以多一點,比如16個,消費的時候一個partition對應一個線程比較合適

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