消息系统Flume与Kafka的区别
首先Flume和Kafka都是消息系统,但是它俩也有着很多不同的地方,Flume更趋向于消息采集系统,而Kafka更趋向于消息缓存系统。
【一】设计上的不同
Flume是消息采集系统,它主要解决问题是消息的多元采集。因此Flume在实现上提供了多达十几种的Flume Source,以供用户根据不同的应用场景来采集数据。也正因为Flume提供了这些采集消息的Flume Source,使得用户采集消息变得很简单,用户往往只需要对原始数据稍作处理然后将数据发送给Flume Source。在Flume的Thrift Source中,Flume已经实现了Thrift Source服务器端,用户只需要编写客户端将数据发送给Flume。
Kafka是消息缓存系统,主要是用来缓存数据,缓存时间可以由配置文件设定,在缓存时间内,缓存的数据不论是否被消费,都不会删除,超过缓存时间Kafka才会把数据删除以释放空间。这一点与Flume不同,Flume的数据一旦确认被Sink接收就会被删除。
【二】数据处理上的不同
Flume接收到数据就会主动把数据推送(push)到Sink,Sink确认收到后会将数据从Channel中删除,因此Flume主要是快速的采集数据,数据对它来说只是过客,Flume注重的是speed。
Kafka收到数据后会先把数据缓存起来,无论下游有没有人消费数据,数据暂时缓存在服务器集群中,注重的是store。
【三】push vs pull
Flume是实实在在包含Source、Channel、Sink三个组件,Source用来接收数据,Channel用来缓存数据,Sink用来发送数据,而且是主动push给下游,这就导致下游接收方只能是一个,因为如果下游有多个接收者,接收的速率不同就会导致接收速度低的接收者接收不到数据的情况(Channel会在Sink确认后删除数据)。如果想把数据发送给多个接收者,那就只能让Source把数据写到多个Channel,再由Channel经各自的Sink发送给不同的接收者。
Kafka其实只包含有broker cluster,用来缓存数据,他的Producer和Consumer都需要用户自己实现;broker cluster更像是一个提供存储数据功能的文件系统,用户自己实现往里面读写数据,broker cluster不需要关心用户怎么实现的,因此Kafka对Producer和Consumer的依赖非常小,专心做缓存。当Consumer需要订阅某个topic的数据时候,Consumer主动去取数据,broker cluster被动的提供数据,这样就可以同时支持多个Consumer订阅数据。
【四】Kafka的主题和划分以及复制因子
Kafka在接收数据的时候,Producer可以指定一个主题,Kafka按照主题来分类数据,Consumer订阅数据的时就可以按需订阅某一类数据。
Kafka的划分是在主题上的进一步细分,例如可以把web应用中不用用户的数据按照不同的划分来分别存储,同一个划分内的数据存储的时候拥有唯一的连续递增的编号,这个编号又称作偏移量,偏移量在Consumer中保存,用来依次读取数据,当然也可改变编号重复读取或者跳读。
复制因子是Kafka集群提高容错性的一个措施,一个划分内的数据会根据复制因子个数把数据复制到不同broker上,本broker负责将该划分内的数据读写请求,称为主节点,其他从节点负责跟进复制数据。主题的复制因子定为多少个应该根据自己的broker cluster机器个数合理确定。
Kafka能够保证一个划分内的数据在被Consumer消费的时候是有序的,而不能保证不同划分内的数据是有序的,因此如果想所有数据有序那就只能有一个划分。
转载请注明原文出处 http://www.cnblogs.com/vincent-vg/p/5826786.html,谢谢
消息系统Flume与Kafka的区别的更多相关文章
- Flume 和 kafka的区别和对比
定义: Flume:是Cloudera提供的一个分布式的海量日志采集.聚合和传输的系统: Kafka:是一种高吞吐量的分布式发布订阅消息系统: 各特点: 场景: Flume主要是和HDFS\HBase ...
- 新闻实时分析系统-Flume+HBase+Kafka集成与开发
1.下载Flume源码并导入Idea开发工具 1)将apache-flume-1.7.0-src.tar.gz源码下载到本地解压 2)通过idea导入flume源码 打开idea开发工具,选择File ...
- 高吞吐量的分布式发布订阅消息系统Kafka-- 管理工具 Kafka Manager
一.概述 Kafka在雅虎内部被很多团队使用,媒体团队用它做实时分析流水线,可以处理高达20Gbps(压缩数据)的峰值带宽. 为了简化开发者和服务工程师维护Kafka集群的工作,构建了一个叫做Kafk ...
- 分布式发布订阅消息系统 Kafka 架构设计[转]
分布式发布订阅消息系统 Kafka 架构设计 转自:http://www.oschina.net/translate/kafka-design 我们为什么要搭建该系统 Kafka是一个消息系统,原本开 ...
- 分布式公布订阅消息系统 Kafka 架构设计
我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础. 如今它已为多 ...
- Kafka是分布式发布-订阅消息系统
Kafka是分布式发布-订阅消息系统 https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apa ...
- 分布式消息系统:Kafka
Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...
- 最牛分布式消息系统:Kafka
Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...
- 发布-订阅消息系统Kafka简介
转载请注明出处:http://www.cnblogs.com/BYRans/ Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式 ...
随机推荐
- DDraw绘图
微软已经提供了GDI+绘图方式,但是GDI+绘图较慢,另外微软提供了效率更高的DirectDraw绘图方式.DirectDraw提供硬件加速功能. 首先需要确保电脑上的Ddraw硬件加速功能已经打开, ...
- Java 时间转换问题总结
这几天开发中遇到时间转换出错的问题,特总结如下: ========================================================================= ...
- GIS中相交的定义(OGC相交的定义)
我们常用GIS中的相交,比如在地图漫游的时候,屏幕显示的图形和屏幕这个包络线就是相交的关系.我们常用的GIS工具,拉框查询,这个用到的也是相交. 首先题目开起来很简单(开始的时候我是这样想的),但是做 ...
- tomcat 5 启动过程官方文档
http://tomcat.apache.org/tomcat-7.0-doc/architecture/startup/serverStartup.txt Licensed to the Apach ...
- 17个Web前端开发工程师必看的国外网站
Web设计是一个不断变化的领域,因此掌握最新的发展趋势及技术动向对设计师来说非常重要,无论是学习新技术,还是寻找免费资源与工具,设计博客都是很不错的去处. 1. Smashing Magazine S ...
- 【OpenGL】入门
根据OpenGL蓝宝书(OpenGL超级宝典)来入门,写的比较细,易懂,这里给我贴代码和记录零碎的事儿用 第一个代码 #include <gl/glut.h> void RenderSce ...
- kvm guest usb mapping
http://www.linux-kvm.org/page/USB#Input_devices http://www.linux-kvm.org/page/USB_Host_Device_Assign ...
- FIREDAC数据引擎
以前使用过BDE.ADO.DBX等数据引擎,后来发现它们都没有UNIDAC好用, 所以在很长的一段时间内中间件都使用UNIDAC作为数据引擎. 偶然的机会,使用了DELPHI XE5自带的FIREDA ...
- iOS 转让APP
今天需要将一个客户的app转让到它公司的个人账号上,记录下来流程,给有需要的人方便查看. 上面这个是咨询了苹果的客户之后收到的邮件说明,有需要的大家自己仔细看看. 好了,进入正题: 一:转出方操作 1 ...
- eclispe搭建android平台
1.不推荐在线安装android ADT,因为需要FQ.可以在网上下载ADT,然后离线安装. 离线安装方式:help->Install ->点击add然后选择你的安装包(不需要解压),一直 ...