为什么storm的数据来自于消息队列?
Storm的解决问题的scope主要在于流计算,说流计算之前我们先简单的说下一般数据处理系统的过程。
一般数据处理简单说要有几个环节:数据采集,数据计算,结果输出。题主的问题主要是在数据采集和计算之间的对接。
一般来说计算系统(storm)不会自己产生业务数据,业务数据一般来自页面的埋点,或者对数据库log的解析,对于storm来说采集系统是个外部系统。
采集系统是数据的生产者,流计算(storm)是数据的消费者。二者的速度并不是时时刻刻匹配的,中间就需要需要一个缓冲,这个模型下消息队列在适合不过了。
当然为什么一般用kafka,这个超出了这个问题,我们暂不讨论。如果题主要处理的数据不是实时产生的而是静态数据那就没必要使用消息队列了,当然也没必要使用storm,使用Hadoop MR更合适。
关于spout会不会重复读取数据的问题,简单来说消息队列中数据会分partition支持多并发。
题主可以看看kafka的文档,一般消息队列,对一份数据(一个topic,对应离线系统的表)会分不同的parition,不同的spout并发可以读取不同的parition,
当然一个并发可以读取多个parition,但是多个并发读取一个parition会引起混乱这就是题主的问题。也就是实际应用中一个parition只会有一个并发读取。
模式:自动化数据采集 -> 消息队列(作用:缓冲) -> 运算框架
实例:flume - > kafka -> storm 转自:https://zhidao.baidu.com/question/1771687573246188220.html
Storm工作流程的更多相关文章
-
Storm工作流程 vs. Spark Stream
看的这个学习课程: http://study.163.com/course/courseLearn.htm?courseId=1002887002#/learn/video?lessonId=1003 ...
-
Storm 中什么是-acker,acker工作流程介绍
概述 我们知道storm一个很重要的特性是它能够保证你发出的每条消息都会被完整处理, 完整处理的意思是指: 一个tuple被完全处理的意思是: 这个tuple以及由这个tuple所导致的所有的tupl ...
-
storm之 Storm 工作原理
Storm 工作原理 Storm简介 1.Storm是一套分布式的.可靠的,可容错的用于处理流式数据的系统. 2.Storm也是基于C/S架构来进行工作的,C负责将数据处理的方式的jar(Topolo ...
-
Yarn框架和工作流程研究
一.概述 将公司集群升级到Yarn已经有一段时间,自己也对Yarn也研究了一段时间,现在开始记录一下自己在研究Yarn过程中的一些笔记.这篇blog主要主要从大体上说说Yarn的基本架构以及其 ...
-
struts2工作流程
struts2的框架结构图 工作流程 1.客户端请求一个HttpServletRequest的请求,如在浏览器中输入http://localhost: 8080/bookcode/Reg.action ...
-
SecondaryNameNode的工作流程
SecondaryNameNode是用来合并fsimage和edits文件来更新NameNode和metadata的. 其工作流程为: 1.secondary通知namenode切换edits文件 2 ...
-
gitlab工作流程简介
gitlab工作流程简介 新建项目流程 创建/导入项目 可以选择导入github.bitbucket项目,也可以新建空白项目,还可以从SVN导入项目 建议选择private等级 初始化项目 1.本地克 ...
-
Git 工作流程
Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去.”工作流程”在英语里,叫做”workflow”或者”flow”,原意 ...
-
Spark基本工作流程及YARN cluster模式原理(读书笔记)
Spark基本工作流程及YARN cluster模式原理 转载请注明出处:http://www.cnblogs.com/BYRans/ Spark基本工作流程 相关术语解释 Spark应用程序相关的几 ...
随机推荐
-
java同一个类不同方法间的同步
对象的方法中一旦加入synchronized修饰,则任何时刻只能有一个线程访问synchronized修饰的方法.假设有个数据对象拥有写方法与读方法,多线程环境中要想保证数据的安全,需对该对象的读写方 ...
-
扩展jQuery easyui datagrid增加动态改变列编辑的类型
$.extend($.fn.datagrid.methods, { addEditor : function(jq, param) { if (param instanceof Array) { $. ...
-
【转】SVN linux命令及 windows相关操作(一)
从以下博客转载和整理: http://www.cnblogs.com/richcem/archive/2011/01/08/1930823.html http://blog.wpjam.com/m/t ...
-
厂商自定义USB设备类概述
USB协会将常用具有相同/相似功能的设备归为一类,并制定了相关的设备类规范,这样就能保障只要依照同样的规范标准,即使不同的厂商开发的USB设备也可以使用同样的驱动程序,而且操作系统中无须为每种设备提供 ...
-
XAF_GS_02_创建第一个XAF项目
上一节我们讲解了如何安装XAF环境,这次我们要开始创建一个自己的XAF项目. Setp 1 第一步打开你的Visual Studio,新建项目,如下图所示,选择DevExpress XAF,选择好你的 ...
-
MFC单文档
一.创建并运行MFC单文档程序 1.创建单文档程序 这里使用的是VS2017.首先,打开VS2017,选择文件->新建->项目,然后选择Visual C++ -> MFC /ATL& ...
-
select 练习语句
select * from scott.dept; /查看scott.dept表中的全局信息. describe scott.emp: ...
-
cpu 亲和性 affinity
http://www.ibm.com/developerworks/cn/linux/l-affinity.html
-
机器学习——大数据与MapReduce
MapReduce是一个分布式计算框架 优点:可在短时间内完成大量工作 缺点:算法必须经过重写,需要对系统工程有一定的理解 使用数据类型:数值型和标称型数据 MapReduce在大量节点组成的集群上运 ...
-
asp.net onclientclick事件刷新页面问题解决
做网页经常要和JavaScript打交道,经常要用JavaScript做一些客户端的验证,但是如果我们的按钮用的是HTML控件的话,验证通过后无法调用后台代码,如果用服务器端控件,验证不通过有要刷 ...