Kafka 疑難排解

Apache Kafka 入門

Mike Metzger

Data Engineering Consultant

「貼心」行為

  • Kafka 會試著幫助使用者
  • 有時反而造成問題
  • 預設情況下,主題在寫入前不必先存在
  • 想想若你把主題名稱拼錯會怎樣(例如把 orders 打成 ordrs

一隻困惑的狗

1 圖片來源:Dex Ezekiel(Unsplash)
Apache Kafka 入門

「貼心」範例

$ bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
orders
$ echo "Test message" | bin/kafka-console-producer.sh 
   --bootstrap-server localhost:9092 \
   --topic ordrs
$ bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
orders
ordrs
Apache Kafka 入門

連線問題

  • Kafka 是一個網路化服務
  • 任何網路問題都可能影響 Kafka 通訊
  • 檢視指令輸出來判斷可能問題

bin\kafka-topics.sh --bootstrap-server localhost:9092 --list

WARN [AdminClient clientId=adminclient-1] 
  Connection to node -1 (localhost/127.0.0.1:9092) could not be established.
  Node may not be available. (org.apache.kafka.clients.NetworkClient)
  • 檢查 Kafka 服務是否執行中(ps ax | grep kafkanetstat -tlnp | grep 9092
  • 檢查防火牆問題
  • 確認連接埠/IP 是否正確
Apache Kafka 入門

其他常見問題

  • 消費者:
    • 需要讀舊訊息時用 --from-beginning
    • 記得用 --max-messages 限制讀取數量
  • 所有工具:
    • 記得加上 --bootstrap-server
    • 多數錯誤訊息相當清楚,會指向可能解法
    • 工具也有 --help 可取得更多說明
Apache Kafka 入門

一起來練習吧!

Apache Kafka 入門

Preparing Video For Download...