这一讲介绍流计算概念及框架,主要内容包括三个方面:1、静态数据与流数据、2、流计算概念、3、流计算框架。
1、首先介绍静态数据与流数据
静态数据:在计算机科学中,数据是指所有能输入到计算机并被计算机程序处理的符号介质的总称,是用于输入计算机进行处理,具有一定意义的数字、字母、符号和模拟量的通称。静态数据是指在运行过程中主要作为控制或参考用的数据,它在很长的一段时间内不会变化。
很多企业为了支持决策分析,而构建的数据仓库系统,其中存放的大量历史数据就是静态数据。技术人员可以利用数据挖掘和分析工具从静态数据中找到对企业有价值的信息。
流数据:近年来,在Web应用、网络监控、传感监测等领域,兴起了一种新的数据应用——流数据,即数据以大量、快速、时变的流形式 持续到达。
流数据具有如下特征:
(1)数据快速持续到达
(2)数据来源众多,格式复杂
(3)数据量大,但不关注存储,一旦经过处理,要么被丢弃,要么被归档存储
(4)注重数据的整体价值,不过分关注个别数据
(5)数据顺序颠倒,或者不完整
对静态数据和流数据的处理,对应着两种截然不同的计算模式:批量计算和实时计算
批量计算:是充裕的时间处理静态数据,如Hadoop。流数据不适合采用批量计算,因为流数据不适合用传统的关系模型建模。
流数据必须采用实时计算,响应时间为秒级。在大数据时代,数据格式复杂、来源众多、数据量巨大,对实时计算提出了很大的挑战。因此,针对流数据的实时计算——流计算,应运而生。
2、接下来介绍流计算概念
流计算:所谓流计算是指实时获取来自不同数据源的海量数据,经过实时分析处理,获得有价值的信息。
流计算秉承一个基本理念,即数据的价值随着时间的流逝而降低。因此,当事件出现时就应该立即进行处理,而不是缓存起来进行批量处理。为了及时处理流数据,就需要一个低延迟、可扩展、高可靠的处理引擎。
对于一个流计算系统来说,它应达到如下需求:
(1)高性能:是处理大数据的基本要求,如每秒处理几十万条数据
(2)海量式:需支持TB级甚至是PB级的数据规模
(3)实时性:要保证较低的延迟时间,达到秒级别,甚至是毫秒级别
(4)分布式:要支持大数据的基本架构,必须能够平滑扩展
(5)易用性:要能够快速进行开发和部署
(6)可靠性:要能可靠地处理流数据
流计算与Hadoop:Hadoop设计的初衷是面向大规模数据的批量处理,每台机器并行运行MapReduce任务,最后对结果进行汇总输出。
MapReduce是专门面向静态数据批量处理的,内部各种实现机制都为批处理做了高度优化,不适合用于处理持续到达的动态数据。
可能会想到,一种“变通”的方案来降低批处理的时间延迟,将基于MapReduce的批量处理转为小批量处理,将输入数据切成小的片段,每隔一个周期就启动一次MapReduce作业,但这种方式也无法有效处理流数据。切分成小片段,可以降低延迟,但是也增加了附加开销,还要处理片段之间依赖关系。
3、最后介绍流计算框架
当前,业界诞生了许多专门的流数据实时计算系统,来满足各自的需求。目前有三类常见的流计算框架和平台:
商业级的流计算平台
开源流计算框架
公司为支持自身业务开发的流计算框架
商业级的流计算平台有:IBM的 InfoSphere Streams 和IBM 的StreamBase 。
开源流计算框架平台有:Twitter Storm:它是免费、开源的分布式实时计算系统,可简单、高效、可靠地处理大量的流数据;Yahoo! S4(Simple Scalable Streaming System):它是开源流计算平台,是通用的、分布式的、可扩展的、分区容错的、可插拔的流式系统。
公司流计算框架包括:Facebook Puma、百度的Dstream、淘宝的银河流数据处理平台。
这一讲介绍到这。

