全部產品
Search
文件中心

E-MapReduce:Kafka常見問題

更新時間:Jul 01, 2024

本文介紹使用Kafka時可能遇到的問題及解決方案。

如何清理Kafka組件輸出日誌

當元件服務輸出日誌過大,佔用儲存空間過多時,您可以進入Kafka服務輸出日誌的儲存目錄$LOG_DIR_ROOT(預設儲存實際目錄為/mnt/disk1/log),進入後根據需要刪除kafka、cruise-control、kafka-schema-registry、kafka-rest-proxy等kafka組件日誌目錄下的記錄檔。

如何清理Kafka-Manager服務輸出日誌

當元件服務輸出日誌過大,佔用儲存空間過多時,您可以進入Kafka-Manager服務輸出日誌的儲存目錄$LOG_DIR_ROOT/kafka-manager(預設儲存實際目錄為/mnt/disk1/log/kafka-manager),進入後根據需要刪除相關記錄檔。

是否可以停止Kafka-Manager服務

Kafka-Manager只是Kafka叢集的管理軟體,Kafka對外提供讀寫服務不依賴Kafka-Manager服務。如果您沒有整合其他Kafka管理平台,建議您保留Kafka-Manager服務。如果您確認不需要Kafka-Manager服務,您可以直接在EMR管控頁面停止該服務。

報錯“ERROR: Wile executing topic command : Replication factor: 1 larger than available brokers: 0.”

問題分析:

  • Kafka服務異常,叢集Broker退出進程。

  • Kafka服務的ZooKeeper地址錯誤。

解決方案:

  • 請結合日誌排查問題。

  • 請您使用叢集組態管理中Kafka組件的ZooKeeper串連地址。

報錯“java.net.BindException: Address already in use (Bind failed)”

JMX連接埠被佔用,您可以在命令列前手動指定一個JMX連接埠即可。樣本如下。

JMX_PORT=10101 kafka-topics.sh --bootstrap-server core-1-1:9092 --list

報錯“current leader's lastest offset xxxx is less than replica's lastest offset xxxxxx”

如果確認資料都已經消費完成,或者資料可以丟失,您可以將Kafka Broker的配置項unclean.leader.election.enable的值修改為true並重啟Broker服務,待Broker服務重啟完成後,再將unclean.leader.election.enable修改為false。

Kafka資料日誌目錄Log Directory磁碟寫滿

當Kafka資料日誌目錄磁碟被寫滿,會導致相應的Log Directory異常Offline,您可以參見EMR Kafka磁碟寫滿營運,選擇合適的方法進行處理。

報錯“Too many open files”

問題分析:

分區過多或者網路連接過多。

解決方案:

通過修改/etc/security/limits.conf系統設定檔的方式,修改ulimit open files的限制,將該設定檔末尾的“* soft nofile”和 “* hard nofile”的值改成需要的大小並重啟問題節點服務。

如何評估一個Kafka topic所需的分區數?

評估一個Kafka topic所需的分區數 ,需要考慮多種因素並根據實際情況進行調整。首先,根據實際情況壓測得出當前叢集配置producer在期望延遲內的單分區每秒輸送量,然後預估topic預期的業務流量,計算出所需的分區數。此外,還需要根據consumer的消費速度來調整分區數,以使消費延遲符合預期。通常來說,分區數越多,能夠支援的消費者的並行度也越高。