Flume Kafka渠道是否始终仅限于单个内部Kafka消费者?

时间:2019-05-29 22:30:43

标签: apache-kafka flume flume-ng

水槽和卡夫卡的新手。

基于kafka文档:通过将主题划分为多个分区,可以通过放入Kafka中来改善消费者群体。然后创建一个消费者组,该消费者组最多具有与分区数一样多的消费者。这样,每个使用者都被分配了自己的分区。

我可以创建一个具有多个分区的主题,然后将flume-kafka-channel配置为使用该主题。

但是,无论主题具有flume-kafka-channel多少个分区,它只会创建一个使用者(至少基于我在flume日志中看到的内容)。

有没有一种方法可以配置Kafka-Channel产生与分区一样多的消费者?

我猜答案是否定的,因为该频道可能只有一个来源...

2 个答案:

答案 0 :(得分:0)

据我所知,您无法将Kafka通道配置为运行多个使用者实例。 但是,与其他Flume进程不同,Kafka channels可以配置为没有源:

  

Kafka频道可用于多种情况:

     
      
  1. 带有Flume源和水槽-它提供了可靠且高度可靠的   活动的可用频道
  2.   
  3. 带有Flume源和拦截器,但没有   下沉-允许将Flume事件写入Kafka主题,以供使用   其他应用程序
  4.   
  5. 使用Flume接收器,但没有源-这是低延迟的故障   从Kafka向Flume接收器(例如HDFS)发送事件的一种容忍方式,   HBase或Solr
  6.   

因此,您可以创建从同一主题使用的多个Flume通道,如果它们都配置有相同的kafka.consumer.group.id,则实际上将在一个组中创建多个使用者实例,并且该主题的分区将自动平衡它们之间。

答案 1 :(得分:0)

您可以使用相同的使用者组ID运行多个水槽代理,以便所有代理可以共享分区。例如:如果您的主题有20个分区,并且您运行4个水槽代理,那么每个水槽代理将分配给5个分区。 我认为,这是在长笛中使用Kafka Channel实现并行性的唯一方法。