Kafka VS. Flume

 

Flume与Kafka在功能上具有很多的相似性。为了更好地适应生产系统地需要,可以从以下几点对两者进行考虑与比较:

 

Kafka是一个更加通用的系统。用户可以构造不同的生产者与消费者共享不同的主题;相反,Flume主要是用于向Hadoop与HBase导入数据,因此它对HDFS/HBase具有更好的优化,同时它也集成了Hadoop安全组件。因此,如果数据需要被多个应用程序处理,我们建议Kafka;如果数据主要是用于Hadoop,我们建议Flume;

 

熟悉Flume的人应该知道,Flume具有很多内置的源与槽。Kafka相比而言,现成生产者与消费者就比较少了,而且Kafka社区对这些生产者/消费者的支持也比较薄弱。因此如果准备自己编写生产者与消费者,我们建议Kafka;如果Flume的内置源/槽已经足够满足你的需求而又不想编程,我们建议Fume;

 

Flume内置了拦截器,可以对流经Flume的数据进行直接处理,因此比较容易实现数据屏蔽与数据过滤。Kafka则需要额外的流处理系统来对数据进行处理;

 

Kafka与Flume都可以通过配置保证数据不丢失。但是,Flume不会复制消息,因此即使使用可靠的文件渠道,当Flume进程宕机后,你就无法访问这些消息了(当然Flume进程重启,从磁盘上恢复之前状态后,可以继续对消息进行处理)。因此如果对 HA高可用性具有很高要求,我们建议Kafka;

 

值得一提的是:Flume与Kafka可以很好的集成工作。如果希望将Kafka上的数据导入Hadoop,可以启动一个内置Kafka源与Hadoop槽的Flume进程。这样就不需要去实现自定义的消费者,同时还可以得到Flume对HDFS/HBase优化带来的好处。

 

 

posted @ 2017-11-08 17:15  daviddu  阅读(663)  评论(0编辑  收藏  举报