当前访客身份:游客 [ 登录  | 注册加入尚学堂]
直播

我来了!

拥有积分:3866
尚学堂雄起!!威武。。。

博客分类

笔记中心

课题中心

提问中心

答题中心

解答题中心

Kafka【系统结构- 要点】- 3: FAQ

我来了! 发表于 2年前 (2014-11-10 16:40:33)  |  评论(0)  |  阅读次数(950)| 0 人收藏此文章,   我要收藏   

Producer 相关

    1:我该怎么设置:metadata.broker.list? 

           Producre会通过metadata.broker.list来取得自己所想要的Metadata,一旦成功取得metada,生产

     者就会直接发射 Produce的request到这个持有了相对topic/partition的Broker上。在Zookeeper上用 

      ip/port 去注册这个Broker,任意的一个Broker能够Serve这个metadata的请求,Client必须确保

     在 metadata.broker.list 之中存在有至少一个Broker是能够提供服务的,在一个load balancer之中有一种方

     式去achieve 这些,那就是通过VIP(目前不知道什么是VIP)

             

    2:为什么Producer在async模式运行的过程之中会得到 QueueFullException?

      这一个现象很典型的发生在Producer发射消息的速度要远远超过Broker能够处理的速度,如果

      你的日志能够不允许被Block,那么唯一的方式就是,不得不添加新的足够的Broker,使他们和之前的

      Broker协同处理,如果您的日志数据是能够被允许Block的,那么您可以通过设置如下:

        queue.enqueueTimeout.ms:-1 ,

     通过这种方式,一旦我们的队列满了,生产者将会Block 这些数据,而不是直接丢弃。


  3:当我使用的 Zk_based的Producer 在0.7版,我只是看到数据在一些Broker上消费,而不是全部?

        这个问题主要和kafka0.7 系列相关: http://apache.markmail.org/thread/c7tdalfketpusqkg

         简单点来说,对于一个新的Topic而言,Producer将会使用所有存在的Brokers,然而,如果Topic在其他的Brokers之上已经存在,而这个时候你又新添加了新的Broker,这个时候,这些Producer将不会看到这些新添加的Producer。一个替代的方案是去手动的为这些Topic,在新添加的Broker上创建log目录。

  

  4:为什么更改压缩级别以后,我们的Brokers并没有接收到来自于 Producer生产的数据?

       这个现象发生在当我 通过设置compression.codec 为1,试图开启Gzip 压缩的时候,伴随着Codec的改变,你可能会发现,即便的数据发射已经一秒钟以后,这一条数据你依旧没有收到,任何地方都没有出现日志记录错误,后来通过增加了 log4j.properties到我的Producer的classPath 并且将日志的记录级别设置为DEBUG模式,我发现了在Producer端出现了: org/xerial/snappy/SnappyInputStream NotClass 错误,通过添加了Snappy jar以后错误消失了

 

     5:我们是否能够删除掉 kafka之中的一个Topic?

      到目前为止 kafka Version0.8还不能直接的删除,如果你要删除topic,您需要在删除kafka之中存放的一系列的数据,并且将保持在Zookeeper上的状态和数据一并删除

Consumers 相关

     1: 为什么我们的消费者从来都拿不到数据?

            在默认的情况之下,消费者如果是【历史第一次开始消费】,那么他它将忽略整个Topic之中,所有的现有的数据,他将只是消费目前Consumer启动以后,最新到来的数据。因此,请尝试在启动之后多发射一些数据,或者您可以通过设定: auto.offset.reset to "smallest".


     2: 为什么消费者取数的时候得到:invalidMessageSizeException?

            通常的情况住下,这意味着 消费者的”Fetch.Size“的大小还不够,每一次消费者从Broker提取数据的

过程之中,都会读取一个已经配置好的上限的数据,如果这个大小,比我们kafka单条日志的大小【最大】还要

小,就会抛出invalidMessageSizeException,要解决这个问题,需要通过设置属性:

    fetch.message.max.bytes

    fetch.size

默认的Fetch.Size的尺寸是300,000

   



     3: 我是否需为当前的消费者选择多个group ID,或则只是一个?

            如果所有的消费者都使用相同的组 id,在主题中的信息就被分发到这些消费者。换句话说,每个消费者

将得到消息的非重叠子集。同一组中拥有更多的消费者增加了并行度和消费的总体吞吐量。另一方面,如果每个

消费者拥有其自己的组ID,那么每个消费者将得到所有消息的完整的副本。


      4:为什么在一个消费者组中间的一些消费者一直都没有拿到数据?

             在当前的角度之上,相对于一个ConusmerGroup中的Consumer而言,一个Topic的分区【partition】

就是最小的单元,于是,如果你一个Consumer组中间的Consumer数量大于Partition的数目,那就会有一些

Consumer空闲得不到数据了。要解决这个问题,可以通过增加你的Partitions的数目。

      5:为什么有很多 reblance 在我门的消费者log之中?

       【过多平衡调整】的一个典型原因是消费者侧 GC。如果是这样,您将看到Zookeeper会话失效在消费者日志 (过期 grep)。偶然几次的Rebalnce是有必要的,但是一旦次数过多,那么将降低我们消费Consumer的次数,这个时候 Java GC 需要我们去调整


      6:我们可以预测kafka  consumer rebalance 的结果么?

 

       7:我自己的Conusmer 看起来已经停止了,这是为什么?

      

        8:为什么我的数据 在消费的过程之中出现延迟了。


        9:如何去提高kafka remote Consumer的吞吐量?


        10:如何在消费的过程之中重置这个偏移量


         11:如果我不想目前kafka自身去管理消费的偏移量,我想自身去管理,那该怎么办?


         

          12:Fetch.wait.max.ms 和 Socket.timeout.ms 的关系是怎样的?



          13: 用怎么样的方式才能从kafka 拿到一条 精确的消息?



         14:怎么通过OffsetFetchRequest,用TimeStamp去精确得到指定的消息的偏移量

Brokes相关

        1:kafka 是如何依赖Zookeeper的?


        2:为什么控制关闭失败了?

          

          3:为什么我的 Consumer/Producer 连接不上Broker


          4:为什么我们的 Partiton Leaders 会迁移他们自己?


           5:我们能够拥有多少个topic?


           6:对于一个Topic而言,我们应该如何去选择分区的数?


           7:   Why do I see lots of Leader not local exceptions on the broker during controlled shutdown?

                        --------  中文不太好翻译  --------


            8:如何在ISR 阶段减少 Churns ? 什么时候一个Broker会离开ISR阶段?



            9:每当Bouncing 一个Borker,为什么在启动的时候我们会遭遇到:LeaderNotAvaible or NotLeaderFor Excetpion ?



           10:我们是否能够动态的向集群添加一个新的 Broker?


 




Build Issues And Unit Testing




分享到:0
关注微信,跟着我们扩展技术视野。每天推送IT新技术文章,每周聚焦一门新技术。微信二维码如下:
微信公众账号:尚学堂(微信号:bjsxt-java)
声明:博客文章版权属于原创作者,受法律保护。如果侵犯了您的权利,请联系管理员,我们将及时删除!
(邮箱:webmaster#sxt.cn(#换为@))
北京总部地址:北京市海淀区西三旗桥东建材城西路85号神州科技园B座三层尚学堂 咨询电话:400-009-1906 010-56233821
Copyright 2007-2015 北京尚学堂科技有限公司 京ICP备13018289号-1 京公网安备11010802015183