流式计算的理论与技术

Posted 方士光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了流式计算的理论与技术相关的知识,希望对你有一定的参考价值。

     

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


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

1.1 流式数据

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

实时、高速:数据能以高并发的方式迅速到达,业务计算要求快速连续相应。数据处理的速度至少能够匹配数据到达的速度。


无边界:数据到达、处理和向后传递均是持续不断的。


瞬时性和有限持久性:通常情况下,原始数据在单遍扫描,处理后丢弃,并不进行保存;只有计算结果和部分中间数据在有限时间内被保存和向后传递。


价值的时间偏倚性:随着时间的流逝,数据中所蕴含的知识价值往往也在衰减,也即流中数据项的重要程度是不同的,最近到达的数据往往比早先到达的数据更有价值。


数据流模型 

1)时间序列模型 

2 ) 收银机模型 

3)转门模型


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


 Data Stream 与 Database 的比较

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

1.2 流式实时计算

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


摘要数据结构是任何比本身基础数据集小得多的数据结构: 

1)可以驻留内存,使得查询及时响应而避免访问磁盘 

2)远程传输的代价小 

3)对系统整体的空间开销影响小 

4)当访问基础数据集的开销过大时,可以作为基础数据集的小规模代理被处理


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


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


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


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

实时性的需求

低空间复杂度的需求

结果准确性的需求

适用性的需求


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

2.1 发展与挑战

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


相比传统数据管理系统,数据流处理系统维护是查询的定义,数据持续到达。

在分布式环境下,数据流处理系统有逻辑节点和物理节点构成。系统中基本的逻辑处理单元,成为逻辑节点;部署节点的计算机,成为物理节点。

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


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


数据流处理系统面临的挑战与当前研究热点主要在以下三个方面 

1)处理性能与结果精确性的折中 

2)容错与可用性 

3)分布式编程模型


2.2 Hadoop 2.0生态圈(略)


2.3 Storm

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

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


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


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


Storm为大规模的集群配置管理,提供了高效的管理方式,用户通过简单的配置,便可实现之前庞杂的管理步骤。

Storm为复杂的流计算模型提供了丰富的服务和编程接口,降低了学习和开发的门槛,在性能和功能方面均弥补了Hadoop批处理所不能满足的实时需求。

Storm提供的可靠性保障,不仅提供对分布式的组件级的容错,而且提供不丢失数据的记录及容错保证。

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


Twitter公司实现多样化的数据应用:数据发现 实时分析 个性化搜索 收益优化

Groupon的实时数据集成系统中,storm被用于分析、清洗、规范化实时数据,以低延迟、高吞吐量的处理能力来解决数据的不一致问题。

Yahoo开发的下一代大数据框架YARN,通过支持Storm的集成,用于整合海量离线数据和大规模实时数据的资源管理。

淘宝基于Storm实现了实时的日志统计和信息提取,其中日志是从类似Kafka的消息队列中提取的,实时分析后将结果写入其他系统的数据持久化存储中。


  • 阿里巴巴作为世界最大的B2B电子商务平台,利用Storm实现业务日志处理和应用中数据记录的实时交换。

  • 百度为中国提供了最大和多样化搜索服务,其中Storm被用于处理搜索日志和提供实时的PV及AR-time分析。

  • 支付宝作为中国最大的第三方支付平台,Storm被用于分析交易数量、交易质量、最优商家、注册用户量的实时计算。

  • Trovit是已经在39个国家使用的分类广告搜索引擎,其结合已有的Hadoop生态圈的技术,将Storm用于低延迟的索引广告,为最终用户提供即时相应的搜索结果服务。

以上是关于流式计算的理论与技术的主要内容,如果未能解决你的问题,请参考以下文章

淘宝大数据之流式计算

流式机器学习一流式计算的认知

干货丨剖析大数据流式计算场景特征

轻量级边缘流式计算框架Creek实战

大数据技术流式计算与Storm

Storm简介——实时流式计算介绍