首先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的区别的更多相关文章

  1. Flume 和 kafka的区别和对比

    定义: Flume:是Cloudera提供的一个分布式的海量日志采集.聚合和传输的系统: Kafka:是一种高吞吐量的分布式发布订阅消息系统: 各特点: 场景: Flume主要是和HDFS\HBase ...

  2. 新闻实时分析系统-Flume+HBase+Kafka集成与开发

    1.下载Flume源码并导入Idea开发工具 1)将apache-flume-1.7.0-src.tar.gz源码下载到本地解压 2)通过idea导入flume源码 打开idea开发工具,选择File ...

  3. 高吞吐量的分布式发布订阅消息系统Kafka-- 管理工具 Kafka Manager

    一.概述 Kafka在雅虎内部被很多团队使用,媒体团队用它做实时分析流水线,可以处理高达20Gbps(压缩数据)的峰值带宽. 为了简化开发者和服务工程师维护Kafka集群的工作,构建了一个叫做Kafk ...

  4. 分布式发布订阅消息系统 Kafka 架构设计[转]

    分布式发布订阅消息系统 Kafka 架构设计 转自:http://www.oschina.net/translate/kafka-design 我们为什么要搭建该系统 Kafka是一个消息系统,原本开 ...

  5. 分布式公布订阅消息系统 Kafka 架构设计

    我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础. 如今它已为多 ...

  6. Kafka是分布式发布-订阅消息系统

    Kafka是分布式发布-订阅消息系统 https://www.biaodianfu.com/kafka.html Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apa ...

  7. 分布式消息系统:Kafka

    Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...

  8. 最牛分布式消息系统:Kafka

    Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的,可划分的,冗余备份的持久性的日志服务.它主要用于处理活跃的流式数据. ...

  9. 发布-订阅消息系统Kafka简介

    转载请注明出处:http://www.cnblogs.com/BYRans/ Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写.Kafka是一种高吞吐量的分布式 ...

随机推荐

  1. ASP.NET Web API 如何通过程序控制返回xml还是json

    雖然 ASP.NET Web API 內建支援 JSON 與 XML 兩種輸出格式,並依據瀏覽器端送出的 Accept 標頭自動決定回應的內容格式,不過有時候我們的確也需要讓程式來控制要回應哪種格式, ...

  2. LIBSVM的使用方法

    [原文:http://wenku.baidu.com/view/7e7b6b896529647d27285276.html] 目  录 1 Libsvm下载... 3 2 Libsvm3.0环境变量设 ...

  3. 用COM方式快速导出到Excel一例,批量导出

    开发中用到填充Excel时,一个一个的填充不免太慢,现有用数组方式填充一例,可以实现COM方式快速填充. C#,VBA中用法类似 适用场景:需要自动化操作Excel的方式下使用,比较除填充数据外还要自 ...

  4. uvalive 3263 That Nice Euler Circuit

    题意:平面上有一个包含n个端点的一笔画,第n个端点总是和第一个端点重合,因此团史一条闭合曲线.组成一笔画的线段可以相交,但是不会部分重叠.求这些线段将平面分成多少部分(包括封闭区域和无限大区域). 分 ...

  5. codeforce 605BE. Freelancer's Dreams

    题意:给你n个工程,做了每个工程相应增长x经验和y钱.问你最少需要多少天到达制定目标.时间可以是浮点数. 思路:杜教思路,用对偶原理很简易.个人建议还是标准解题法,凸包+线性组合. #include& ...

  6. 题目1096:日期差值(a-b=(a-c)-(b-c))

    http://ac.jobdu.com/problem.php?pid=1096 题目描述: 有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天 输入: 有多组数据,每 ...

  7. 关于java线程池 Ⅱ

    上一篇翻译了线程池主要部分的api,经过一段时间的学习,这里记录一下这段时间对jdk自带线程池的学习成果. 为了方便说明,先放一张类图,包括了jdk线程池主要涉及到的类,为了条理清晰去掉了部分依赖和关 ...

  8. 可以使用Markdown了?

    园子果然领先 1.标题类 一级标题 二级标题 三级标题 四级 六级 怎么可以用#号?上传上去看看 2.换行 第一行 换一行 在换一行 3.多个下划线 the_odd_egg odd 斜体用星号 4.删 ...

  9. DotNET 开发常用工具汇集

    开发用专业软件已经很多了,来说说开发用的辅助软件把--分享我常使用的辅助软件 个人工具清单 .NET 程序员十种必备工具 新.net开发十大必备工具 .NET开发不可错过的25款必备工具 我的生活必备 ...

  10. spring利用javamail,quartz定时发送邮件 <转>

    原文地址:spring利用javamail,quartz定时发送邮件 <转>作者:物是人非 spring提供的定时发送邮件功能,下面是一个简单的例子以供大家参考,首先从spring配置文件 ...