到底什么是流计算(Stream Computing)

原创 2009年01月06日 11:03:00
我写这篇文章的当前时间是 2009年1月5日。

在这一天用google或者是Baidu搜索“stream computing”,出现在首页最多的是关于ATi发布“stream computing”技术的新闻网页。
这里的“stream computing”技术是指“通过GPGPU(general purpose GPU)来执行一般的运算指令”,使得计算机的运算速度能够大幅度提高。
可惜,这里的流计算不是我想说的技术。

如果你耐心再好一点,会发现搜索出来的结果中有几条是和IBM有关的,再细一点,是和IBM的一个“System S prototype”相关的新闻。
这是我想要的。
IBM的System S是一个完整的计算架构,通过“stream computing”技术,可以对stream形式的数据进行real-time的分析。

有很多的新闻将这两者混为一谈,但其实这完全是两个东西,一个是硬件技术,在GPU中运行一般的指令以提高运算速度;还一个是针对stream data的分析技术。

那么,IBM所宣称的“stream computing”到底是什么呢?(说到这插段题外话。话说前几日和大学同学聚餐,有人问在IBM的同学“IBM最强的地方在哪里”,答曰“做概念” ^_^)
我们也许能从System S这个系统的描述中找到答案。

在这里[1],可以找到System S的描述;此外,还有关于System S架构的介绍[2]:
这些文章中,提到了System S的项目需求是“require systems and applications that enable efficient extraction of knowledge and information from potentially enormous volumes and varieties of continuous data streams”——使得系统和应用程序能够从庞大且多样的连续数据流当中提取有效的知识和信息。
为了满足这个需求,“System S provides an execution platform and services for user-developed applications that ingest, filter, analyze, and correlate potentially massive volumes of continuous data streams.”——System S提供的是一个平台和服务,在这个平台上,用户开发的程序能够对庞大的连续数据流做提取,过滤,分析等操作。
文中还提及了System S的目标:
1. Parallel and high performance stream processing software platform capable of scaling over a range of hardware capability。
    并行且高性能的流运算软件平台,具有硬件能力的可扩展性。(以下三条我就不翻译了...)
2. Agile and automated reconfiguration in response to changing user objectives, available data, and the intrinsic variability of system resource availability
3. Incremental tasking in the face of rapidly changing data forms and types
4. Secure, privacy-compliant, and auditable execution environment

此时我们能够对于System S有一个基本的认识,它其实可以看做是一个middleware或者platform,一个针对stream data的middleware。这个平台所具备的对于stream data的那些分析的技术就是IBM所宣称的“stream computing”。

在传统的数据处理流程中,总是先收集数据,然后将数据放到Database中,人们需要的时候通过DB对数据做query,得到答案。
这样的一个流程隐含了两个前提:
1. data is old。当人们对DB做查询的时候,里面数据其实过去某一个时刻数据的一个snapshot,数据已经老了,可能已经过期了。
2. 这样的流程中,需要人们主动的发出query。也就是说,human active, DB passive。
但在某些时候,这两个前提都不存在。例如股票市场中,数据总是不断的产生,人们需要根据当前的数据实时的作出判断;并且,由于数据量太大,人们希望设定某种条件,当数据满足这些条件时系统能够主动的通知人并且自动的进行操作。在这种情况下,前提发生了变化:
1. 对data stream能够作出real-time response。
2. human passive, DB active。
正是由于有了这样的需求,发展出了针对stream的处理技术。IBM的“stream computing”只是对于这种技术的又一种命名。其实早在System S出现之前,就已经有了很多关于stream processing技术的研究。
Aurora[3]就是很好的一个例子。它是由MIT等三所大学合作完成的项目,它的目的就是为了实现“ the ability to handle huge volumes of continuous data streams arriving in real-time; to be able to function efficiently under uncertainty in data, and to be able to deliver results in a timely fashion.”
如果对这个项目感兴趣,可以去看看和它相关的论文。有很多且非常详细,通过学习Aurora,你会对stream processing技术有更加深入的了解。

我对于流计算的解释到这里基本上就结束了。我希望这篇文章能够让你对于流计算是什么(What)能够有一个简单的认识。但是这里并没有涉及任何和How有关的知识,首先是因为这些技术比较新,还没有形成一个完整的知识体系,其次是因为牵扯到的东西实在太多,很难简短的解释清楚。



参考文献:
[1] http://domino.research.ibm.com/comm/research_projects.nsf/pages/esps.index.html
[2] http://domino.research.ibm.com/comm/research_projects.nsf/pages/esps.Projects.html
[3] http://www.cs.brown.edu/research/aurora/

流式计算的理论与技术

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

Hadoop(三) 大数据离线计算与实时计算

一、大数据离线计算:MapReduce计算模型 1、MapReduce是处理HDFS上的数据 2、MapReduce的思想来源是PageRank(搜索排名),原理是进行分布式计算。 如上...
  • u013037201
  • u013037201
  • 2017年05月05日 20:07
  • 2792

Flink:下一代流计算平台?

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

如何设计一个实时流计算系统

原文  http://fourinone.iteye.com/blog/1923072   实时流计算的场景归纳起来多半是: 业务系统根据实时的操作,不断生成事件(消息/调用),然后引起一系列的处...
  • xiaomin1991222
  • xiaomin1991222
  • 2016年03月10日 16:05
  • 214

流计算:即时信息(入门级)

传统的数据操作,首先将数据采集并存储在DBMS中,然后通过query和DBMS进行交互,得到用户想要的答案。整个过程中,用户是主动的,而DBMS系统是被动的。但是,对于现在大量存在的实时数据,比如股票...
  • historyasamirror
  • historyasamirror
  • 2008年12月18日 16:46
  • 8081

S4 Distributed Stream Computing Platform

  • 2011年08月31日 19:27
  • 505KB
  • 下载

流式计算介绍

MapReduce Hold不住? 作者: baiyuzhong分类:云计算  阅读:12,312 次添加评论 文/杨栋 本文系统地介绍和分析比较了业界主流的Yahoo! S4、Stream...
  • dux003
  • dux003
  • 2011年10月26日 21:05
  • 12244

那些年我们用过的流计算框架

数据时代,从数据中获取业务需要的信息才能创造价值,这类工作就需要计算框架来完成。传统的数据处理流程中,总是先收集数据,然后将数据放到DB中。当人们需要的时候通过DB对数据做query,得到答案或进行相...
  • TG229dvt5I93mxaQ5A6U
  • TG229dvt5I93mxaQ5A6U
  • 2017年10月23日 00:00
  • 2176

spring stream http 流式计算

http 请求源,是监听http请求,并发送消息给kafka 消息中间件,其中,消息的格式为 Content-Type matches text/* or application/json 发送的...
  • yiyaopeng
  • yiyaopeng
  • 2017年04月15日 07:28
  • 538

Spark流计算(四)

DataFrame和SQL操作 可以方便的对刘数据使用DataFrame和SQL操作。在 StreamingContext使用的SparkContext构建一个SparkSession。这样drive...
  • wangli0519
  • wangli0519
  • 2017年06月17日 15:42
  • 183
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:到底什么是流计算(Stream Computing)
举报原因:
原因补充:

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