9、Kafka常见问题

1、connection with xxxxx disconnected

ERROR o.a.kafka.common.network.Selector - Connection with gdga-hd-kafka-003/68.29.196.30 disconnected

原理是:connections.max.idle.ms参数指定了consumer超过空闲时间就会断开连接,默认是600秒,但是一旦有数据上来还是可以继续消费。

参考资料:

https://stackoverflow.com/questions/33432027/kafka-error-in-i-o-java-io-eofexception-null

2、必须在消费者机器中配置broker的IP映射

kafka consumer机器必须在hosts中配置broker机器名和ip映射否则拿不了数据,也不报错,就是阻塞在那里
原因是:连接broker后,返回来的是机器名称,没法映射为ip

3、KafkaConsumer is not safe for multi-threaded access

单个kafkaConsumer对象不能给多线程并发访问。
这个问题经常在spark中遇到spark-19185,因为spark多分支并发处理数据时,是需要多次调用consumer那数据,
解决办法是去掉consumer缓存
conf.set("spark.streaming.kafka.consumer.cache.enabled", "false");

注意:producer就可以

4、kafka offset out of range异常

kafka会定期5分钟扫描并删除过期(默认7天)的数据,所以sparkstreaming处理延迟、挂了很久才启动、或者有window操作,很有可能会导致此异常,可以通过自己管理offset来解决。

5、consumer和cooridanate心跳失败,reblance

每个consumer都有一个客户端协处理器consumerCooridanate,其默认3S会和Broker中的GroupCooridanate组协调器心跳,如果没有心跳则协调器认为其失效,再过session= 10S中还没有心跳,就会进行reblace。

一般什么情况会导致心跳失败呢?

consumer线程所在进程/程序cpu资源不够,比如线上遇到过topic 120个partition,两个2core的executor处理,
每个executor就需要负担60个consumer线程,而且还要处理业务数据,cpu资源远远不够,导致没法正常保持心跳。

6、topic分区数量设置经验

多少个broker多少个分区。 如果broker少,但是数据量大,也可以整倍增加partition,这不是为了提高处理速度,而是为了spark-streaming这种直连方式时能够得到更高的并发量。

增加分区数(只能加不能减) kafka-topics --zookeeper zk01:2181/kafka --alter --topic utopic --partitions 15
有可能增加了分区后,kafka就不能找到分区leader了,看日志有报异常:

原因是:kafka会在log.dirs配置项的路径下维护这两个和offset相关的值

1. replication-offset-checkpoint
2. recovery-point-offset-checkpoint

解决办法:删除所有log文件夹下的这两个文件即可 参考链接:https://community.hortonworks.com/content/supportkb/150284/error-malformed-line-in-offset-checkpoint-file-occ.html

7、when sending a message with key="null" topic xxx not present in metadate after 60000ms

客户端producer 和 集群版本对不上导致的。

8、consumeroffsets分区leader找不到导致没法获取GroupCoordinator

分析:consumerOffsets默认的副本数是1,一旦有broker挂了,对应分区就会没法选举leader就会报这个错误

解决:在集群刚搭建就设置:offsets.topic.replication.factor=3即可

注意:consumer_offsets这个topic不是启动就创建,而是第一次consumer消费时才会创建

util.AlterKafkaConsumerOffset$: 元信息topic:t_swt,partition:1,0
Could not fetch offset for [t_table,23] due to 
org.apache.kafka.common.errors.NotCoordinatorForGroupException: 
This is not the correct coordinator for this group.

转载于:https://my.oschina.net/liufukin/blog/3100065

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值