流式计算的理论与技术

流式计算的理论与技术


流式数据是大数据环境下的一种数据形态,其理论诞生于20世纪末,并在云计算和物联网发展下逐步成为当前的研究热点。流式数据与传统的数据是相对的。与静态、批处理和持久化的数据库相比,流式计算以连续、无边界和瞬时性为特征,适合高速并发和大规模数据实时处理的场景。当前大数据环境下的许多应用呈现多源并发、数据汇聚、在线处理的特征,所以实时数据处理的相关研究迅速发展,并在许多关键领域,如传感网络、金融、医疗、交通和军事领域得到了广泛的应用。

2.1 流式数据与流式实时计算

2.1.1 流式数据

大数据环境下,流式数据作为一种新型的数据类型,是实时数据处理所面向的数据类型,其相关研究发展迅速。这种实时的流式数据,存在如下几个特征:

  1. 实时、高速:数据能以高并发的方式迅速到达,业务计算要求快速连续相应。数据处理的速度至少能够匹配数据到达的速度。
  2. 无边界:数据到达、处理和向后传递均是持续不断的。
  3. 瞬时性和有限持久性:通常情况下,原始数据在单遍扫描,处理后丢弃,并不进行保存;只有计算结果和部分中间数据在有限时间内被保存和向后传递。
  4. 价值的时间偏倚性:随着时间的流逝,数据中所蕴含的知识价值往往也在衰减,也即流中数据项的重要程度是不同的,最近到达的数据往往比早先到达的数据更有价值。

数据流模型
1. 时间序列模型
2. 收银机模型
3. 转门模型

其中收银机模型可以看做是特殊的转门模型,假设转型模型的更新量只有正值就是收银机模型

表2-1 Data Stream 与 Database 的比较

比较项Data StreamDatabase
数据类型在线数据,无边缘静态、离线数据
数据元组离散数据项、带有时间戳关系数据,至少满足第一范式(INF)
数据更新持续更新,频率极高更新频率相对低
使用模式维护查询,流入数据维护数据,提交查询
查询方式单遍扫描,顺序访问数据可多遍扫描,随机访问数据
返回结果连续返回,推送结果,容忍非精确结果事务一次性返回,提取精确结果
数据持久化输入数据在内存暂存,结果在返回后立即丢弃,或在有限时间内持久化输入输出来自持久化存储,结果可以持久化存储

对于另一个与数据流相关且相似的概念是Dataflow,而且Dataflow也被翻译为“数据流”,这更容易导致概念的混淆。以下表2-2分析了两者的区别和联系

比较项Data StreamDataflow
概念起源DatabaseControl Flow
目标实时性的数据处理数据驱动的任务协同
典型应用网络日志分析、金融监控预警科学工作流(e-Science Workflow)

2.1.2 流式实时计算

实时数据处理也称实时计算或反应计算。相应地,针对流式数据的实时处理,称为流式数据处理或流式计算。由定义可知,流式数据具有无边界的特征,也即理论上是无穷的数据项序列。而流式实时计算只能使用有限的内存资源,所以数据流的算法一定是某种程度对流的摘要化处理。摘要数据结构和窗口都是最常用的摘要化技术。

摘要数据结构是任何比本身基础数据集小得多的数据结构:
1. 可以驻留内存,使得查询及时响应而避免访问磁盘
2. 远程传输的代价小
3. 对系统整体的空间开销影响小
4. 当访问基础数据集的开销过大时,可以作为基础数据集的小规模代理被处理

窗口技术是数据流研究中另一种常用的技术。由于数据流存在实时性的需求,流中最近到达的数据比很久之前到达的数据对计算来说更有意义。如何描述流中数据的“最近”,是窗口模型的意义所在。

数据流的窗口是描述数据流的最近子集组合的方法。通过设置的窗口边界,使得流中部分数据项位于窗口内,而在窗口之外数据则不被处理计算考虑。窗口长度指窗口的时间跨度,窗口大小指窗口中数据项的数量。

窗口的分类 这里不进行详细介绍

数据流处理技术可以为实时性要求高的应用提供支撑,实现业务上的例行数据分析和异常监控预警等。与传统的数据处理技术相比,流式数据的实时计算存在以下几个方面的特点

  1. 实时性的需求
  2. 低空间复杂度的需求
  3. 结果准确性的需求
  4. 适用性的需求

2.2 流式数据处理的系统与应用

2.2.1 发展与挑战

在大数据环境下,当数据库技术不能满足数据处理的实时性需求时,流式计算技术发展起来了。流式计算技术虽然源于数据库技术,但两者面向的问题和基本理念完全不同。数据库管理系统(Database Management System,DBMS)依托关系代数和相关技术,为各种商业应用的数据查询与管理发挥了重要的作用;与之类似,数据流处理系统(Data Stream Processing System,DSPS)依托实时数据处理相关技术,逐步成为企业界和研究界重要的在线分析和处理工具。正是由于数据形态和特征,流式数据处理系统存在如下特点。

  1. 相比传统数据管理系统,数据流处理系统维护是查询的定义,数据持续到达。
  2. 在分布式环境下,数据流处理系统有逻辑节点和物理节点构成。系统中基本的逻辑处理单元,成为逻辑节点;部署节点的计算机,成为物理节点

集中式数据处理系统 分布式数据处理系统

3.低延迟和高吞吐量是数据流处理系统最基本的需求,是由流式计算的实时性需求决定的。

数据流处理系统面临的挑战与当前研究热点主要在以下三个方面
1. 处理性能与结果精确性的折中
2. 容错与可用性
3. 分布式编程模型

2.2.2 Hadoop 2.0生态圈(略)

2.3 Storm

2.3.1 起源与发展:Twitter的开源与影响

Twitter是将微博的潮流引入这个时代的公司,成为当今互联网界的标杆之一。随着微博的流行和IT服务的全球化,惊人的数据量不断增长,应对如此规模庞大和高速到达的数据,Twitter公司在检索、处理和存储技术上面临极大的挑战。

Hadoop MapReduce是当前离线大数据分析事实上的标准,对许多海量数据处理应用发挥了至关重要的作用,如惊醒互联网全网内容索引等。但是,它的架构模型决定了其批处理的计算模型,对Twitter这样高度动态的实时数据,存在响应时间和及时性方面的诸多限制。2011年7月,Twitter收购了一家专注于社交媒体数据分析的公司BackType,仅仅两个月,2011年9月17日,Storm的第一个发布版作为开源软件面世了。

Storm是分布式数据处理系统,其强大的分布式集群管理、便捷的针对流式数据编程模型、高容错非功能保障,是它成为业界明星的首要原因。

  1. Storm为大规模的集群配置管理,提供了高效的管理方式,用户通过简单的配置,便可实现之前庞杂的管理步骤。
  2. Storm为复杂的流计算模型提供了丰富的服务和编程接口,降低了学习和开发的门槛,在性能和功能方面均弥补了Hadoop批处理所不能满足的实时需求。
  3. Storm提供的可靠性保障,不仅提供对分布式的组件级的容错,而且提供不丢失数据的记录及容错保证。

适用领域:实时分析 在线机器学习 持续计算 分布式远程调用 ETL

  1. Twitter公司实现多样化的数据应用:数据发现 实时分析 个性化搜索 收益优化
  2. Groupon的实时数据集成系统中,storm被用于分析、清洗、规范化实时数据,以低延迟、高吞吐量的处理能力来解决数据的不一致问题。
  3. Yahoo开发的下一代大数据框架YARN,通过支持Storm的集成,用于整合海量离线数据和大规模实时数据的资源管理。
  4. 淘宝基于Storm实现了实时的日志统计和信息提取,其中日志是从类似Kafka的消息队列中提取的,实时分析后将结果写入其他系统的数据持久化存储中。
  5. 阿里巴巴作为世界最大的B2B电子商务平台,利用Storm实现业务日志处理和应用中数据记录的实时交换。
  6. 百度为中国提供了最大和多样化搜索服务,其中Storm被用于处理搜索日志和提供实时的PV及AR-time分析。
  7. 支付宝作为中国最大的第三方支付平台,Storm被用于分析交易数量、交易质量、最优商家、注册用户量的实时计算。
  8. Trovit是已经在39个国家使用的分类广告搜索引擎,其结合已有的Hadoop生态圈的技术,将Storm用于低延迟的索引广告,为最终用户提供即时相应的搜索结果服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值