美文网首页
SparkStreaming读Kafka- Couldn't f

SparkStreaming读Kafka- Couldn't f

作者: ZIMMY_fb0f | 来源:发表于2018-11-15 17:50 被阅读0次

    在运行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程序,在程序正常计算的状态下,kill掉任意一个Broker后,再观察运行情况。在增大同步线程数之前,kill后SparkStreaming会报同样的异常,而增大后程序依然正常运行,问题解决。

    相关文章

      网友评论

          本文标题:SparkStreaming读Kafka- Couldn't f

          本文链接:https://www.haomeiwen.com/subject/awtufqtx.html