Apache kafka 卡夫卡源与Avro源,用于使用flume将数据读写到卡夫卡通道

Apache kafka 卡夫卡源与Avro源,用于使用flume将数据读写到卡夫卡通道,apache-kafka,flume,avro,flume-ng,kafka-consumer-api,Apache Kafka,Flume,Avro,Flume Ng,Kafka Consumer Api,在flume中,我有卡夫卡通道,从那里我可以读写数据。 如果我用Avro源和Avro接收器替换卡夫卡源和卡夫卡接收器,则将数据读写到卡夫卡通道的性能有什么区别 在我看来,用Avro source替换Kafka source,我将无法并行地从Kafka代理的多个分区读取数据,因为在Avro source的情况下没有指定消费者组。如果我错了,请纠正我 在Flume中,Avro RPC源绑定到网络接口的指定TCP端口,因此在一台机器上运行的Flume代理中只有一个Avro源可以接收发送到此端口的事件

在flume中,我有卡夫卡通道,从那里我可以读写数据。 如果我用Avro源和Avro接收器替换卡夫卡源和卡夫卡接收器,则将数据读写到卡夫卡通道的性能有什么区别


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

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

Avro源用于将两个或多个水槽代理连接在一起:一个或多个Avro水槽连接到单个Avro源

正如您所指出的,使用卡夫卡作为源允许多个消费群体接收事件。但是,根据我在Flume 1.6.0中的经验,通过Avro RPC将事件从一个Flume代理推送到远程主机上的另一个Flume代理比通过Kafka推送更快

因此,我完成了以下日志数据收集设置:

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

通过这种方式,我获得了更好的日志摄取和处理吞吐量,并且还可以在远程站点和中央集群之间加密和压缩日志数据。但是,当Flume在未来版本中添加对Kafka 0.9.0引入的新协议的支持时,这可能会发生变化,这可能会使Kafka更可用作具有远程数据采集节点的中央集群的前端接口(请参阅)