Kafka 学习笔记(五)之Kafka Trouble Shooting (上)
来源:互联网 发布:b2b网络营销 知乎 编辑:程序博客网 时间:2024/05/14 15:23
Kafka Trouble Shooting
前几篇写的客户端是使用,实在理想状态下的,没有错误。然而,理想很丰满,现实很骨感啊!Kafka一个最大的麻烦就是会遇到各种错误,exception会夹杂在大量的background noise中,很难定位错误。(这让我觉得Kafka特别不成熟,但是鉴于想linkedin这种大公司都在用这个呢,我们就忍忍吧。。。)今天我们来看看kafka的各种exception和他们都是什么意思。
1. producer can not connect to Kafka
--kafka.common.KafkaException: fetching topic metadata for topics [Set(t1)] from broker [ArrayBuffer(id:0, host:localhost, port:9092)] failed
Caused by: java.net.ConnectException: connection failed.
问题可能原因:
- 查看host 和 port, 在brokerlist
- telnet查看网络状况
- 最后一个可能的原因多发生在virtual network 的情况下,例如我们用的主机是Amazon AWS。AWS的主机在server内部用一个地址,但是外部看主机的时候用的是另外一个地址,所以当broker advertise它们自己的时候,可能用的是内部地址。Broker may register with the wrong host, 用advertised.host 来解决。把advertised.host 注释掉,然后用能从外部链接上你主机的地址,看好host 和 port。
2. producer LeaderNotAvailable Error
-- Warn Error while fetching metadata, no partition metadata for topic t1 due to
kafka.common.LeaderNotAvailableException
问题可能原因:
- 是否Create the topic
- auto.create.topic,enble=true?true的时候,在写入一个不存在的topic是会自动create topic,但是,leader的configure会滞后一点儿,需要等一会儿
- 等待retry,kafka会从replication 里选择leader
- default.replication.factor 要比broker的数量少,不然topic创建不了
- kafka-topics.sh --zookeeper localhost:2181 --describe, 查看broker list 看看leader是否存在
3. topic is not deleted
这个是我最头疼的问题,研究了好久,都没能成功删除topic,后来急了,不用命令了,直接手动去文件夹里删除topic文件了,都没删除了。。。
- 删除delete,然后就没有然后了,啥也没发生。。。
- --delete命令执行完了,永远的 marked for deletion
- 当时删除了,在重启,又出现了,简直没法删除,跟年糕一样
可能原因:
- 0.8.2.0版本之前kafka没有删除topic的功能
- 如果是mark for deletion,过几个小时还没删除掉的话,去config里,server.properties 将delete.topic.enable 设置为true
- 如果还是不行,auto.create.topic.enable的话,删掉了之后,client得到metadata后会再create出来,所以要distable
4. Consumer 得不到data
可能原因:
- 没有可用消息
- default设置,Consumer只接收新消息(offset 默认largest)
- 消息长度大于fetch.message.max.bytes
- consumer 的code没写对,可能接收了,没print出来一类的
- 查看offset设置,如何查看呢:
bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker
用法 :bin/kafka-run-class.sh kafka.tools.ConsumerOffsetChecker --broker-info --group avg --zookeeper localhost:2181
0 0
- Kafka 学习笔记(五)之Kafka Trouble Shooting (上)
- Kafka 学习笔记(六)之Kafka Trouble Shooting (下)
- Kafka 学习笔记(七)之Kafka Consistency
- Kafka 学习笔记(一)
- Kafka学习笔记(一)
- Kafka学习笔记(二)
- Kafka学习笔记(三)
- kafka学习笔记(1)
- kafka学习笔记(2)
- HADOOP自学笔记(六)安装Hadoop环境--Trouble Shooting
- Kafka学习(1)——kafka文档阅读笔记
- kafka--Kafka设计解析(五):Kafka Benchmark
- kafka 学习笔记(二)之Java Producer客户端
- Kafka 学习笔记(三)之Java Consumer客户端
- kafka 学习笔记(四)之Python客户端
- Kafka 学习笔记(八)之producer读取file
- Kafka 学习笔记(十)之consumer写入file
- Kafka学习之五 Kafka架构以及设计原理
- 趣谈 32 种设计模式
- IOS开发-01创建第一个IOS工程
- Linux vim 编辑器
- Java如何快速构造JSON字符串
- Android进阶(十六)子线程调用Toast报Can't create handler inside thread that has not called Looper.prepare() 错误
- Kafka 学习笔记(五)之Kafka Trouble Shooting (上)
- 使用#ifdef _cplusplus 实现c 和 c++的混合编程
- Android ORMLite 框架的入门用法
- LeetCode OJ Basic Calculator II
- Java Web学习笔记(2015/7/11)
- Android 快速开发系列 ORMLite 框架最佳实践
- 黑马程序员-java基础网络编程(TCP)
- 7月11日 事务隔离级别
- 3.1.4 模板字符串