在过去10 年中,随着互联网应用的高速发展,企业积累的数据量越来越大,越来越多。随着Google MapReduce、Hadoop 等相关技术的出现,处理大规模数据变得简单起来,但是这些数据处理技术都不是实时的系统,它们的设计目标也不是实时计算。毕竟实时的计算系统和基于批处理模型的系统(如Hadoop)有着本质的区别。
但是随着大数据业务的快速增长,针对大规模数据处理的实时计算变成了一种业务上的需求,缺少“实时的Hadoop 系统”已经成为整个大数据生态系统中的一个巨大缺失。Storm 正是在这样的需求背景下出现的,Storm 很好地满足了这一需求。
在Storm 出现之前,对于需要实现计算的任务,开发者需要手动维护一个消息队列和消息处理者所组成的实时处理网络,消息处理者从消息队列中取出消息进行处理,然后更新数据库,发送消息给其他队列。所有这些操作都需要开发者自己实现。这种编程实现的模式存在以下缺陷。
 
集群环境配置下的Storm存在两类节点:主控节点和工作节点。此外,为了实现集群的状态维护和配置管理,还需要一类特殊的节点:协调节点。整体架构如下图:
一、组成原理:
 
1、主控节点,即运行nimbus守护进程的节点。 nimbus负责在集群分发的代码,将任务分配给其他机器,并负责故障监测。
2、工作节点,即运行supervisor守护进程的节点。
     supervisor监听分配所在机器,根据nimbus的委派,在必要时启动和关闭工作进程。(工作节点是实时数据处理作业运行的节点)
     其中,计算在节点上的物理单元是worker,也即工作进程;计算的逻辑单元是executor,也即计算线程。(有点像spark哦) 然而计算的作业逻辑单元是topology,也称拓扑;计算的任务逻辑单元是task(还是有点像spark哦).
     每个worker执行特定topology的executor子集,每个executor执行一个或多个task。
   一个topology主要有两类组件(component):spout和bolt.分别是流失数据在topology中的起始单元和处理单元。
3、协调节点,即运行Zookeeper服务端进程的节点。
     Zookeeper是一种分布式的状态协同服务,通过放松一致性的要求,为应用建立高层的协同原语(阻塞和更强一致性的要求),当前分布式系统中,广泛应用于状态监控和配置管理。
 
 
二、Storm主要的编程概念:spoutblottopology
1、spout  是流式处理的源头,是一个计算的起始单元,它封装数据源中的数据为storm可以识别的数据项。 spout可以从消息中间件中(如kafka、kestrel等)中读取数据产生流式元祖数据,也可以从其他接口如Twitter streaming API直接获取流式数据。
2、bolt 是处理过程单元,从输入流中获取一定数量的数据项处理后,将结果作为输出流发送。流式数据处理的业务逻辑,大部分是在bolt中实现的,如各类函数、过滤器、连接操作、聚集操作、数据库操作等。
3、topology是由spout和bolt为点组成的网络,网络中的边表示一个bolt订阅了某个或某个其他bolt或spout的输出流。topology可以是任意复杂多阶段流计算的网络,在Storm急群众提交后立即运行。
 storm拓扑topology:
 
 
 
三、流处理与批处理
     1、系统的输入包括两类数据:实时的流式数据静态的离线数据。其中,流式数据是前端设备实时发送的识别数据、GPS数据等,是通过消息中间件实现的事件触发,推送至系统的。离线数据是应用需要用到的基础数据(提前梳理好的)等关系数据库中的离线数据,是通过数据库读取接口获取而批量处理的系统。
     2、系统的输出也包括流式数据和离线数据。其中,流式数据是写入消息中间件的指定数据队列缓存,可以被异步推送至其他业务系统。离线数据是计算结果,直接通过接口写入业务系统的关系型数据库。
     3、业务的计算结果输出方式是通过两个条件决定的。一、结果产生的频率:若计算结果产生的频率可能会较高,则结果以流式数据的形式写入消息中间件。(比如要实时监控该客户所拥有的标签,也就是说要以极高的速度被返回,这类结果以流式数据形式被写入消息中间件。) 这是因为数据库的吞吐量很可能无法适应告诉数据的存取需求。 二、结果需要写入的数据库表规模:若需要插入结果的数据表已经很庞大,则结果以流式数据的形式写入消息中间件,待应用层程序实现相关队列数据的定期或定量的批量数据库转储。(比如宽表异常庞大,每次查询数据库就会有很高的延迟,那么就将结果信息暂时存入中间件层,晚些时候再定时或定量的进行批量数据库转储) 。这是因为大数据表的读取和写入操作对毫秒级别的相应时间仍是无能为力。 若以上两个条件均无要求,结果可以直接写入数据库的相应表中。
 

storm概念学习及流处理与批处理的区别的更多相关文章

  1. Storm概念学习系列之核心概念(Tuple、Spout、Blot、Stream、Stream Grouping、Worker、Task、Executor、Topology)(博主推荐)

    不多说,直接上干货! 以下都是非常重要的storm概念知识. (Tuple元组数据载体 .Spout数据源.Blot消息处理者.Stream消息流 和 Stream Grouping 消息流组.Wor ...

  2. Storm分布式实时流计算框架相关技术总结

    Storm分布式实时流计算框架相关技术总结 Storm作为一个开源的分布式实时流计算框架,其内部实现使用了一些常用的技术,这里是对这些技术及其在Storm中作用的概括介绍.以此为基础,后续再深入了解S ...

  3. Storm概念学习系列之Worker、Task、Executor三者之间的关系

    不多说,直接上干货! Worker.Task.Executor三者之间的关系 Storm集群中的一个物理节点启动一个或者多个Worker进程,集群的Topology都是通过这些Worker进程运行的. ...

  4. Storm概念学习系列之storm的设计思想

    不多说,直接上干货! storm的设计思想 在 Storm 中也有对流(Stream)的抽象,流是一个不间断的.无界的连续 Tuple(Storm在建模事件流时,把流中的事件抽象为 Tuple 即元组 ...

  5. Storm概念学习系列之storm的雪崩

    不多说,直接上干货! Storm的雪崩问题的解决办法1: Storm概念学习系列之并行度与如何提高storm的并行度 Storm的雪崩问题的解决办法2:

  6. Storm概念学习系列之storm流程图

    把stream当做一列火车, tuple当做车厢,spout当做始发站,bolt当做是中间站点!!! 见 Storm概念学习系列之Spout数据源 Storm概念学习系列之Topology拓扑 Sto ...

  7. Storm概念学习系列之什么是实时流计算?

    不多说,直接上干货! 什么是实时流计算?    1.实时流计算背景 2.实时计算应用场景 3.实时计算处理流程 4.实时计算框架 什么是实时流计算? 所谓实时流计算,就是近几年由于数据得到广泛应用之后 ...

  8. Storm概念学习系列之Stream消息流 和 Stream Grouping 消息流组

    不多说,直接上干货! Stream消息流是Storm中最关键的抽象,是一个没有边界的Tuple序列. Stream Grouping 消息流组是用来定义一个流如何分配到Tuple到Bolt. Stre ...

  9. Storm概念学习系列之Storm与Hadoop的角色和组件比较

    不多说,直接上干货! Storm与Hadoop的角色和组件比较 Storm 集群和 Hadoop 集群表面上看很类似.但是 Hadoop 上运行的是 MapReduce 作业,而在 Storm 上运行 ...

随机推荐

  1. JavaWeb学习记录(七)——MVC操作数据库增删改查与分页功能

    一.分页工具类 package blank.util;import java.util.List; import org.springframework.jdbc.core.JdbcTemplate; ...

  2. linux笔记_文件搜索命令

    一.locate命令 locate命令属于mlocate包,如果执行locate filename提示命令未找到执行安装mlocate包 # yum -y install mlocate 安装后执行l ...

  3. C#字符补位

    C#字符补位 .byte类型的字符,用5位2进制数表示,右对齐,不足5位,前面补零. byte b; Convert.ToString(b, ).PadLeft(, ') .byte类型的字符,用2位 ...

  4. PHP使用mail()函数发送邮件流程以及注意事项

    1. 配置 php.ini sendmail_path = /usr/sbin/sendmail -f yourname@sth.com -t -i 2. 使用函数 mail($to, $subjec ...

  5. IIS管理器的快捷方式在哪里?

    两种重新创建IIS快捷方式的方法,希望对大家有所帮助 1.首先需要明白它本来就是个快捷方式,所以可以重新创建一个新的快捷方式:右击桌面>>新建>>快捷方式.弹出创建快捷方式向导 ...

  6. openssh

    http://www.openssh.com/ OpenSSH is a FREE version of the SSH connectivity tools that technical users ...

  7. 【转】Winform 去掉 最大化 最小化 关闭按钮(不是关闭按钮变灰)终极解决办法

    不墨迹, 如图 : 网上 看了,好多 给的 答案 乱码七糟,都是扯淡,于是乎 自己 写,代码如下:窗体的大小暂时设置为:(598, 362) 涂红的数据根据你的窗体大小改动 using System; ...

  8. Java collection 的一些介绍 集合

    collections主要提供一些,排序的算法,随机的,反向的,  collection 是容器的祖先接口 线性表,链表,哈希表是常用的数据结构,在进行Java开发时,JDK已经为我们提供了一系列相应 ...

  9. SVN的分支、主干合并的使用说明

    EBAPP代码SVN服务器地址:http://scm.jrj.cn/webapp/ 使用右键菜单中SVN的二级菜单Repo-Broswer查看SVN服务器目录结构 目录结构如下: 名称及功能说明: T ...

  10. python 批量请求url

    import urllib2 from urllib import quote f = open("data.in", "r") out = file(&quo ...