流计算概述
一、静态数据和流数据
很多企业为了支持决策分析而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。技术人员可以利用数据挖掘和OLAP(On-Line Analytical Processing)分析工具从静态数据中找到对企业有价值的信息
近年来,在Web应用、网络监控(电子商务用户点击流)、传感监测(PM2.5检测)等领域,兴起了一种新的数据密集型应用——流数据,即数据以大量、快速、时变的流形式持续到达
实例:PM2.5检测、电子商务网站用户点击流
流数据具有如下特征:
(1)数据快速持续到达,潜在大小也许是无穷无尽的
(2)数据来源众多,格式复杂
(3)数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储(存储于数据仓库)
(4)注重数据的整体价值,不过分关注个别数据
(5)数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序
二、批量计算和实时计算
批量计算:充裕时间处理静态数据,如Hadoop。实时性要求不高
流数据数据格式复杂、来源众多、数据量巨大,不适合采用批量计算,必须采用实时计算,响应时间为秒级。实时性要求高
流计算:实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息(实时、多数据结构、海量)
批量计算关注吞吐量,流计算关注实时性。
三、流计算概念
流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低,如用户点击流。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。为了及时处理流数据,就需要一个低延迟、可扩展、高可靠的处理引擎
对于一个流计算系统来说,它应达到如下需求:
高性能:处理大数据的基本要求,如每秒处理几十万条数据
海量式:支持TB级甚至是PB级的数据规模
实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别
分布式:支持大数据的基本架构,必须能够平滑扩展
易用性:能够快速进行开发和部署
可靠性:能可靠地处理流数据
4、流计算框架
目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自身业务开发的流计算框架
(1)商业级:IBM InfoSphere Streams和IBM StreamBase
(2)开源流计算框架,代表如下:
Twitter Storm:免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大量的流数据
Yahoo! S4(Simple Scalable Streaming System):开源流计算平台,是通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统
(3)公司为支持自身业务开发的流计算框架:
Facebook Puma
Dstream(百度)
银河流数据处理平台(淘宝)