首页 文章

Kafka源代码与Avro源码一起使用水槽读取和写入数据到kafka Channels

提问于
浏览
0

在水槽中,我有Kafka Channels ,我可以在那里读取和写入数据 . 如果我用Avro源和Avro接收器替换Kafka源和Kafka接收器,读取和写入Kafka通道的数据的性能有什么区别?

在我看来,通过用Avro-source替换Kafka-source,我将无法从Kafka代理的多个分区并行读取数据,因为在Avro-source的情况下没有指定消费者组 . 如果我错了,请纠正我 .

1 回答

  • 0

    在Flume中,Avro RPC源绑定到网络接口的指定TCP端口,因此在一台计算机上运行的Flume代理程序中只有一个Avro源可以接收发送到此端口的事件 .

    Avro源用于将两个或多个Flume代理连接在一起:一个或多个Avro接收器连接到单个Avro源 .

    正如您所指出的,使用Kafka作为源允许多个消费者组接收事件 . 但是,我使用Flume 1.6.0的经验是,通过Avro RPC而不是通过Kafka将事件从一个Flume代理推送到远程主机上的另一个代理更快 .

    所以我最终得到了以下日志数据收集设置:

    [Flume agent on remote collected node] = Avro RPC => [Flume agent in central cluster] = Kafka => [multiple consumer groups in central cluster]

    这样,我获得了更好的日志摄取和处理吞吐量,我还可以加密和压缩远程站点和中央集群之间的日志数据 . 然而,当Flume在未来版本中添加对Kafka 0.9.0引入的新协议的支持时,这可能会发生变化,这可能使Kafka更适合作为具有远程数据收集节点的中央集群的前端接口(参见here) .

相关问题