kafka vs flume

Flume是一个单纯的管道系统,使用push的方式进行消息传递,本身使用非常简单,提供了很多的sink接口支持不同类型的下游数据。与hadoop生态圈结合很好,比如往hdfs,hbase传数据都支持很完善。

kafka是一个可持久化的分布式消息队列,和flume最大的相似之处在于都可以传输数据。

他们的区别在于:

  1. kafka是pull的方式,flume是push的方式。pull的方式的好处就是
    1. 实时层面:可以随时按需复现一段时间的数据
    2. 离线层面:可以从持续的单条写入变成定期的批量写入,可控性和资源效率更高
  2. kafka有备份,容错能力会比较好。Flume不支持副本事件。于是,如果Flume代理的一个节点奔溃了,即使使用了可靠的文件管道方式,你也将丢失这些事件直到你恢复这些磁盘。
  3. flume有实时的消息拦截功能。

业界比较典型的用法是:

  • 线上数据 -> flume -> kafka -> storm
  • 线上数据 -> flume -> kafka -> hdfs -> MR离线计算

参考文献

【采集层】Kafka 与 Flume 如何选择

知乎

qCon美团大数据平台架构实践


本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证,欢迎转载,但转载请注明来自http://thousandhu.github.io,并保持转载后文章内容的完整。本人保留所有版权相关权利。

本文链接:http://thousandhu.github.io/2016/05/01/kafka-vs-flume/