用户角度来看IBM InfoSphere Streams

   因为工作需要了解IBM InfoSphere Streams这个产品,花了点时间参考资料整理了一份文档, 当然里面的内容有自己个人理解的,也有从各个文档中引用来的。 如果有任何不对的地方或者其他,请谅解。

 

目录:

前言 1

IBM InfoSphere Streams 是什么? 1

IBM InfoSphere Streams 能做什么?怎么做到的? 3

IBM InfoSphere Streams 有什么特点? 5

IBM InfoSphere Streams的使用场景,我们需要考虑哪些方面? 7

参考文档: 8

前言

    本文是站在用户的角度对IBM的一款产品InfoSphere Streams的一个介绍。文章内容主要是阅读、了解了互联网上关于InfoSphere Streams各类技术的、产品的介绍之后结合个人理解的一个总结,如有谬误敬请谅解。 参考的相关知识主要是来自IBM公开的文档库中InfoSphere Streams相关,可查看最后一节列出的文档地址。

 

 

IBM InfoSphere Streams 是什么?

 

     首先引述该产品红皮书中的一段描述:

  Streams (IBM InfoSphere Streams) is a product architected specifically to help clients Continuously analyze massive volumes of streaming data at extreme Speeds to improve business insight and decision making.

   InfoSphere Streams是一款架构(平台性)产品,旨在帮助客户持续(实时)分析极速产生的海量数据流,以提高企业的业务洞察力和决策制定。

 

下面再结合一些资料做些更具体的阐述:

    “一款平台产品”指出了它的属性,实际上它是一个中间件,用作某一类场景下的通用的解决方案。具体来说,当在应对此类场景时,可以使用InfoSphere Streams的平台,并根据自身业务在其之上定制或者构建处理,从而实现解决。就好像在处理大数据时,我们采用Hadoop框架,并在框架内实现具体分析这一过程。单就产品类型而言,可以想象下我们比较熟悉的webSphere,它们是同一类的产品,只是用来应对不同的场景。

     上段描述引出一个问题,Streams是针对某类场景的解决方案,那么“某类场景”具体指的是什么?它是怎么解决的?以及能解决到何种程度?

     简单来讲,这个场景指“需要对高速持续不断产生的海量数据进行快速甚至实时响应(处理)”,是通过在一定规模的分布式集群中并行采用“流计算”来实现,最终以期对大数据的实时分析来达成“洞察”。具体细节后续将给出详细说明,此处先来说说提出的一个概念“流计算”。

a.什么是流计算?

IBM提出的一个概念,该计算方式同时也是Streams实现的核心基础。

先简单理解下静态数据和动态数据,每个人都非常了解静态数据:文件和数据库,即磁盘上已被固定格式的数据。而动态数据想象一部电影屏幕上源源不断的图像,一部电影就是动态数据

通常的数据处理流程中,总是先收集数据ETL过程)Database中,当在需要的时候通过DB(搜索引擎)对数据做query,也就是说通常我们的事件处理都是针对静态数据的queries 而流计算则是针对动态数据的,“处理数据先要拥有数据,而当数据流入时,实际上你已经拥有它”,流计算指的就是对持续数据流的实时处理。此处流计算的概念看起来很玄乎,但就我个人结合资料总结直白一点:“按照定义好的关注点,先过滤、筛选、分类持续进来的数据,然后发给各自的事件处理”。数据流很容易让人想到水流,我简单画了和水流相关的形象以作类比:


 
IBM关于流计算给出的两种示例图(上为一般过程,下为流计算过程)


 
流计算的无需考虑存储I/O的瓶颈,无需考虑数据检索。如今,DBA 和其他 IT 人员花费了大量时间来创建多维数据集并将数据填入它们之中” IBM 的 IBM InfoSphere Streams 产品经理 Roger Rea 说。这一现象即将改变。在未来,无需读取数据,进行转换,然后进行加载,您将在查询时尽可能快地加载并转换它...花这么大篇幅只是想让大家能理解“流计算”, 然后不要把它想复杂,本质就是将queries操作提前到刚收到数据的那一刻。  顺便学习下IBM是怎样做概念的。

 

 

IBM InfoSphere Streams 能做什么?怎么做到的?

对高速持续的海量数据进行实时分析已达成洞察。 究竟什么样级别数据才算“高速持续海量”它的相关文档里并没有具体给出标准, 不过这项技术的诞生背景

“海量的高可变性、高速数据(有时在几小时内就会达到几 TB)必须收集,与来自其他渠道的信息相结合,并以极快的速度进行分析,以查找入侵者,检测地震事件或查找设备损坏”“我们需要在高速传送带传送来数据后立即进行分析。我们不敢奢望首先对它进行结构化并放入数据库中,因为我们希望能够在 2 到 3 秒内对它进行分类”

以及几篇文章的举例来看, TB/这样的数据级别才符合他们的胃口。

InfoSphere Streams 可以在数据运动过程中捕捉并分析关键信息,并把结果立即发送给某人或另一台计算机。该平台能够处理极大的数据吞吐率,可达到每秒数百万事件或消息”,具体是如何做的?

 将所谓的“流计算”放在一个分布式的集群环境上, 让成千上万个流计算并行执行。

用“流计算”来解决实时响应的问题,大规模集群分布式计算解决大数据的问题。所以实质上大数据解决之道最终是落在分布式计算上的。

InfoSphere Streams 旨在从一个几分钟到几小时的窗口中的移动信息(数据流)中揭示有意义的模式。该平台能够获取低延迟洞察,并为注重时效的应用程序(比如欺诈检测或网络管理)获取更好的成果,从而提供业务价值。所以明确“大数据处理”和“大数据的实时处理”是使用Steams意义的重要前提。

      再来看他具体是如何实时的(或者说尽量降低延迟),下图左可看做不同数据源流入的数据源,右作为结果,中间红色圆是一个计算节点。 现在想像一下数据源源不断从左边流动进来,每个节点都是同时运作的,而且每个节点的计算程式可以由多台机来并行运行,那么在任何一个时间切面,数据都是布满所有节点,并沿着特定的路线“流动”,而计算结果则是被连续的输出。此处的节点只是逻辑层面的“任务job”含义,和物理机的分布不直接相关。在此,这里“流”的范围应该只是从“源数据”到“关注数据”的过程,类似传统处理中“源数据-ETL-queries-关注数据”的过程。Streams所致力解决的也正是这个过程,不要将范围扩大

 
试举一个例子来说明它致力解决的事,比如现在有一个全球舆情监控系统,目前已经可实时“截获”几家大网站的用户上传信息,比如TwitterFaceBook(文本信息)youtube(视频信息)instagram(图片信息)skype(语音信息)等等。 Streams想解决的问题是“近乎实时的将来自恐怖组织地区用户的关于不利于美国的所有文本,言论,照片,视频资料筛选出来, 然后发给FBI. Streams帮助用户快速开发针对流数据进行数据获取、过滤、分析及关联处理程序。

 

 

    至于每个节点具体怎么计算或者支持什么样的计算,在Streams的特点章节会简要介绍。

 

IBM InfoSphere Streams 有什么特点?

    InfoSphere Streams 主要包括流处理运行平台、流处理开发环境以及复杂分析工具箱和加速器三部分:

     流处理运行平台

     流处理运行平台就是基于Streams开发的应用的实际运行环境。它提供可扩展的集群环境,能够帮助用户搭建超过 100 个节点的集群,拥有极强的扩展能力。支持 RHEL 及 CentOS 操作系统。这里值得注意的是,虽然Streams 没有限制使用的硬件,也可以在并行度比较低的系统上运行,但是基于Streams适用场景,这种系统的硬件最好是刀片服务器组,或者 IBM System p 等其他并行处理系统,或者大规模并行的 IBM Blue Gene/P 下图说明了集群环境中的不同类型Host的关系。

 
流处理开发环境

    包括一个基于 Eclipse 的 IDE 开发平台,支持鼠标拖拽方式快速开发、调试 SPL(Streams Processing Language) 应用程序。SPLIBM专门为Streams设计的一种编程语言,如果您熟悉 语言、Java™ 编程语言和 Python,那么应该很快就会熟练使用 SPL这类开发IDE你可以类比成Visual Studio,所有开发相关可以一站式解决。

     库(工具箱)

     Streams 还针对复杂的分析以及特定场景提供了多种工具箱,主要是帮助用户可以快速的接入各种形式的数据源的工具, 对非结构化信息处理的工具 ,以及支持以各种方式输出结果的工具。可类比成JAVA开发中的JAR包。

     其声称“支持任何类型的数据”。

 

IBM InfoSphere Streams的使用场景,我们需要考虑哪些方面?

如果计划使用这个Streams平台,我自己总结了需要考虑的事项,如下:

1.“大材小用”

       “致力于实时分析高速的海量数据流。” 引出至少4个问题需要考虑:

        a.我们的数据需要实时分析吗?(有别于实时响应)

        b.是海量数据吗?

        c.是持续不断流入吗?

        d.流入速度很高吗?

      这里当然不是说我们的数据特点需要同时满足以上所有需求才能用Streams平台,而在讨论有没有必要使用。 比如你数据虽然很多,PB甚至ZB基本,但都是以大文本形式拿到的,那这份数据本身就意味着已经延时了,你自然可以再将其动态化之后再走Streams,但是在此之前,需要想好有必要吗?

2.Streams应用场景的一个隐含的约束。

    也许你已经意识到,上面通篇都没有提到“业务”, 没错,再次强调Streams实质上主要是 源数据转换成关注数据 这一步骤上的解决方案。 基本内容就是数据的

筛选,转换和整合,当然其结果可能是被用作某一具体业务的, 但Streams本身的边界只是到将 关注数据 数据输出。 

   3.使用Streams 需要自上向下的构建。

      自上向下指的是需要由 有一定决策权限的 部门或团队主导,逐步向下推行实 现。这个很显而易见的,大数据分析平台其本身就暗示了对数据源多样性(渠道、形式、内容)的一定要求。 那具有数据资源话语权便是隐含的前提。

   4.实时分析的正确理解。

 如果说对一组静态的大数据做一些分析以试图找出某些特定规律,这个很好理解。

那么Streams实时分析都能做什么分析呢,按我的理解,它应用最多的还是集中在基于数据内容的筛选、转换、合并整理。

     所以你的场景是需要对海量数据筛选再加以处理 , 还是说关注整个历史从而发现某些行为关系。

   5. 封闭的生态环境

     Stream自有的编程语言,开发环境,运行环境 , 这些都是相对封闭的。

   6.其他产品。

      大公司很多都是这样,“你单独使用这个产品也是可以的, 但是要发挥它真正的性能,需要配合使用我们的...., Streams很多文章或明确或暗示了这种情况的存在。

一旦你使用了Streams,但要使它真正发挥能力,你或许需要不断的买其他产品。 

 

参考文档:

相关参考文档包括且不限于:

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

http://blog.csdn.net/historyasamirror/article/details/3719710

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

http://blog.csdn.net/historyasamirror/article/details/3551049

3.谈2011年风靡的数据流计算系统

http://www.programmer.com.cn/9642/

4.流计算的发明

http://www-31.ibm.com/ibm/cn/ibm100/icons/streamcomputing/index.shtml

5.InfoSphere Streams 简介

http://www.ibm.com/developerworks/cn/data/library/bd-streamsintro/index.html

6.使用 InfoSphere Streams 实现社交媒体数据实时文本分析

http://www.ibm.com/developerworks/cn/data/library/bd-1409-infospheresreams-textanalysis/index.html

7.驾驭大数据

http://www.ibm.com/developerworks/cn/data/dmmag/dbt16n2/BigData/index.html

8.实时流计算入门

http://www.ibm.com/developerworks/cn/data/library/bd-getstartedstreams/index.html

猜你喜欢

转载自mikie-1.iteye.com/blog/2217922