流计算与批量计算的对比

原创 2018年04月16日 14:31:02

相比于批量大数据计算,流(式)计算整体上还属于较为新颖的计算概念,下面我们从用户/产品层面来理解下两类计算方式的区别。

批量计算

目前绝大部分传统数据计算和数据分析服务均是基于批量数据处理模型: 使用ETL系统或者OLTP系统进行构造数据存储,在线的数据服务(包括Ad-Hoc查询、DashBoard等服务)通过构造SQL语言访问上述数据存储并取得分析结果。这套数据处理的方法论伴随着关系型数据库在工业界的演进而被广泛采用。但在大数据时代下,伴随着越来越多的人类活动被信息化、进而数据化,越来越多的数据处理要求实时化、流式化,当前这类处理模型开始面临实时化的巨大挑战。传统的批量数据处理模型传统的批量数据处理通常基于如下处理模型:

  1. 使用ETL系统或者OLTP系统构造原始的数据存储,以提供给后续的数据服务进行数据分析和数据计算。即下图,用户装载数据,系统将根据自己的存储和计算情况,对于装载的数据进行索引构建等一系列查询优化工作。因此,对于批量计算,数据一定需要预先加载到计算系统,后续计算系统才在数据加载完成后方能进行计算。
  2. 用户/系统主动发起一个计算作业(例如MaxCompute的SQL作业,或者Hive的SQL作业)并向上述数据系统进行请求。此时计算系统开始调度(启动)计算节点进行大量数据计算,该过程的计算量可能巨大,耗时长达数分钟乃至于数小时。同时,由于数据累计的不可及时性,上述计算过程的数据一定是历史数据,无法保证数据的”新鲜”。用户可以根据自己需要随时调整计算SQL,甚至于使用AdHoc查询,可以做到即时修改即时查询。
  3. 计算结果返回,计算作业完成后将数据以结果集形式返回用户,或者可能由于计算结果数据量巨大保存着数据计算系统中,用户进行再次数据集成到其他系统。一旦数据结果巨大,整体的数据集成过程漫长,耗时可能长达数分钟乃至于数小时。

批量计算是一种批量、高时延、主动发起的计算。 用户使用的批量计算的顺序是:

  1. 预先加载数据。
  2. 提交计算作业,并且可以根据业务需要修改计算作业,再次提交作业。
  3. 计算结果返回。
流式计算

不同于批量计算模型,流式计算更加强调计算数据流和低时延,流式计算数据处理模型如下:

  1. 使用实时数据集成工具,将数据实时变化传输到流式数据存储(即消息队列,如DataHub);此时数据的传输变成实时化,将长时间累积大量的数据平摊到每个时间点不停地小批量实时传输,因此数据集成的时延得以保证。

此时数据将源源不断写入流数据存储,不需要预先加载的过程。同时流计算对于流式数据不提供存储服务,数据是持续流动,在计算完成后就立刻丢弃。

  1. 数据计算环节在流式和批量处理模型差距更大,由于数据集成从累积变为实时,不同于批量计算等待数据集成全部就绪后才启动计算作业,流式计算作业是一种常驻计算服务,一旦启动将一直处于等待事件触发的状态,一旦有小批量数据进入流式数据存储,流计算立刻计算并迅速得到结果。同时,阿里云流计算还使用了增量计算模型,将大批量数据分批进行增量计算,进一步减少单次运算规模并有效降低整体运算时延。

从用户角度,对于流式作业,必须预先定义计算逻辑,并提交到流式计算系统中。在整个运行期间,流计算作业逻辑不可更改!用户通过停止当前作业运行后再次提交作业,此时之前已经计算完成的数据是无法重新再次计算。

  1. 不同于批量计算结果数据需等待数据计算结果完成后,批量将数据传输到在线系统;流式计算作业在每次小批量数据计算后可以立刻将数据写入在线/批量系统,无需等待整体数据的计算结果,可以立刻将数据结果投递到在线系统,进一步做到实时计算结果的实时化展现。

流计算是一种持续、低时延、事件触发的计算作业。,用户使用流计算的顺序是:

  1. 提交流计算作业。
  2. 等待流式数据触发流计算作业。
  3. 计算结果持续不断对外写出

在大部分大数据处理场景下,受限于当前流计算的整个计算模型较为简单,流计算是批量计算的有效增强,特别在于对于事件流处理时效性上,流计算对于大数据计算是一个不可或缺的增值服务

了解详细知识内容:流计算与批量计算的区别

(课程针对大数据分步式计算中的相关技术进行讲解,核心讲解流式计算和内存计算技术,阐述阿里云在处理这些功能时所使用的技术,并对阿里在这里的技术优化方式进行了详细的讲解。)

教程资料

教程课时

课时1:流式计算概述 27:45

课时2:流计算与批量计算的区别 07:16

课时3:流式计算典型系统技术分析 19:09

课时4:阿里计算核心技术概述 25:49

课时5:有状态计算实现方式 17:35

课时6:StreamSQL 14:11

课时7:大数据和数据库的结合 33:12

课时8:分析型数据库服务ADS 05:55

课时9:统一计算框架 16:01

课程目标

  • 学习分步式计算相关技术

适合人群

  • 大数据开发者、爱好者

阿里云大学官网(阿里云大学 - 官方网站,云生态下的创新人才工场

流式计算、实时计算和离线计算

流式计算和批处理计算 实时计算和离线计算 以水为例,Hadoop可以看作是纯净水,一桶桶地搬;而Storm是用水管,预先接好(Topology),然后打开水龙头,水就源源不断地流出来了。 ...
  • xaowoniu
  • xaowoniu
  • 2017-07-11 16:03:10
  • 2836

Spark streaming&storm流计算的相关对比

spark streaming和Storm作为当今流行的实时流计算框架,已经在实时计算方案应用的非常广泛了,其中spark streaming是基于spark的一个扩展,比storm的出现要晚一些。本...
  • yangbutao
  • yangbutao
  • 2015-03-22 16:35:50
  • 6719

twitter heron流计算系统总结 基本框架(一) --- 纸上谈兵

storm的问题: topology的所有组件都运行在在一个jvm内不易调试, 多个topology在一个组件内不易调试,随着应用的规模越来越大越来越复杂,这种做法会极大增加调试成本 ...
  • wkp51f
  • wkp51f
  • 2016-06-04 21:30:09
  • 408

Flink:下一代流计算平台?

Flink是一个基于流计算的分布式引擎,以前的名字叫stratosphere,从2010年开始在德国一所大学里发起,也是有好几年的历史了,2014年来借鉴了社区其它一些项目的理念,快速发展并且进入了...
  • lzljs3620320
  • lzljs3620320
  • 2016-04-11 21:37:37
  • 2335

流式计算框架之Strom基本概念

转载于 http://www.cnblogs.com/xia520pi/p/4816507.html,谢谢 首先我们通过一个Storm和Hadoop的对比表格,来了解Storm中的基本概念。...
  • liuwei0376
  • liuwei0376
  • 2017-03-15 11:00:28
  • 682

Storm实时计算:流操作入门编程实践

Storm是一个分布式是实时计算系统,它设计了一种对流和计算的抽象,概念比较简单,实际编程开发起来相对容易。下面,简单介绍编程实践过程中需要理解的Storm中的几个概念: Topology ...
  • u014313492
  • u014313492
  • 2015-03-13 09:48:06
  • 963

Storm流式计算原理

Storm流式计算: storm是个实时的分布式计算系统,可以接收无限的数据流 核心概念: Topology:Storm集群中运行的程序。相当于hadoop中的job Nimb...
  • y976181862
  • y976181862
  • 2017-04-08 10:20:46
  • 470

Storm 流计算编程模型

(一)基础介绍 随着互联网的更进一步发展,从Portal信息浏览型到Search信息搜索型到SNS关系交互传递型,以及电子商务、互联网旅游生活产品等将生活中的流通环节在线化。对效率的要求让大家对于实...
  • shanelisy
  • shanelisy
  • 2016-01-09 15:52:57
  • 531

流式计算的理论与技术

流式计算的理论与技术流式数据是大数据环境下的一种数据形态,其理论诞生于20世纪末,并在云计算和物联网发展下逐步成为当前的研究热点。流式数据与传统的数据是相对的。与静态、批处理和持久化的数据库相比,流式...
  • tagsT
  • tagsT
  • 2015-11-04 20:15:05
  • 5973

Flink流计算编程--流处理引擎的选型

流处理引擎 Flink
  • lmalds
  • lmalds
  • 2016-09-14 17:00:53
  • 1125
收藏助手
不良信息举报
您举报文章:流计算与批量计算的对比
举报原因:
原因补充:

(最多只允许输入30个字)