SparkStreaming读Kafka-|SparkStreaming读Kafka- Couldn't find leaders for Set
在运行SparkStreaming程序时,出现了这样的错
Couldn't find leaders for Set([tt,1], [tt,2]))
这个异常意思是Spark找不到partition的Leader。查看监控后发现,在异常发生的时间点,有一个Broker挂掉了。可是对应Topic的replica设置的2,就算挂掉一个,应该有replica顶上啊。后来发现,这是由于存在Partition的Replica没有跟Leader保持同步更新,也就是通常所说的“没追上”。 查看某个Topic是否存在没追上的情况:
观察其中的Replicas和Isr是否一致,如果出现Isr少于Replicas,则对应Partition存在没追上的情况
文章图片
image.png
文章图片
image.png 解决方法:
增大num.replica.fetchers的值,此参数是Replicas从Leader同步数据的线程数,默认为1,增大此参数即增大了同步IO。经过测试,增大此值后,不再有追不上的情况
文章图片
image.png 【SparkStreaming读Kafka-|SparkStreaming读Kafka- Couldn't find leaders for Set】确定问题已解决的方法:
启动出现问题的SparkStreaming程序,在程序正常计算的状态下,kill掉任意一个Broker后,再观察运行情况。在增大同步线程数之前,kill后SparkStreaming会报同样的异常,而增大后程序依然正常运行,问题解决。
推荐阅读
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- “成长”读书社群招募
- 上班后阅读开始变成一件奢侈的事
- 人间词话的智慧
- 读司马懿,知人间事,品百味人生
- 以读攻“毒”唤新活动曹彦斌打卡第二天
- 私通和背叛,他怎么看(——晨读小记)
- 【0212读书感悟】
- 历史教学书籍