Flume是一个单纯的管道系统,使用push的方式进行消息传递,本身使用非常简单,提供了很多的sink接口支持不同类型的下游数据。与hadoop生态圈结合很好,比如往hdfs,hbase传数据都支持很完善。
kafka是一个可持久化的分布式消息队列,和flume最大的相似之处在于都可以传输数据。
他们的区别在于:
- kafka是pull的方式,flume是push的方式。pull的方式的好处就是
- 实时层面:可以随时按需复现一段时间的数据
- 离线层面:可以从持续的单条写入变成定期的批量写入,可控性和资源效率更高
- kafka有备份,容错能力会比较好。Flume不支持副本事件。于是,如果Flume代理的一个节点奔溃了,即使使用了可靠的文件管道方式,你也将丢失这些事件直到你恢复这些磁盘。
- flume有实时的消息拦截功能。
业界比较典型的用法是:
- 线上数据 -> flume -> kafka -> storm
- 线上数据 -> flume -> kafka -> hdfs -> MR离线计算
参考文献
本文采用创作共用保留署名-非商业-禁止演绎4.0国际许可证,欢迎转载,但转载请注明来自http://thousandhu.github.io,并保持转载后文章内容的完整。本人保留所有版权相关权利。