开发者社区> 大数据流动> 正文

Streaming-大数据的未来

简介: 分享一篇关于实时流式计算的经典文章,这篇文章名为Streaming 101: The world beyond batch 那么流计算如何超越批处理呢? 从这几个方面说明:实时流计算系统,数据处理模式,还有大数据的未来。
+关注继续查看

一、实时流式计算系统


实时流式计算的意义:

1、企业渴望获得更及时的数据,实时计算系统延迟更低。

2、数据量越来越大,而实时计算系统理论上是处理无界数据的。

3、在数据到达时处理数据,可以更好的分担负载,对于资源的消耗更容易预测。


什么是Streaming?

有很多的定义,比如无界数据处理,近实时结果等,并不能说明Streaming的真正含义。Streaming应该是包含 无界数据 近实时 一致性 可重复结果 等等特征的。所以这里给出Streaming的定义是:a type of data processing engine that is designed with infinite data sets in mind 一种考虑了无线数据集的数据处理引擎。

(这个定义包含了现在流行的真正的流式和微批)


Streaming常见的用法:

1、无限数据:一种不断增长的,基本上无限的数据集。这些通常被称为“流式数据”。无限的流式数据集可以称为无界数据,相对而言有限的批量数据就是有界数据。

2、无界数据处理:一种持续的数据处理模式,应用于上面的无界数据。批量处理数据(离线计算)也可以重复运行来处理数据,但是会有性能的瓶颈。

3、低延迟,近实时的结果:相对于离线计算而言,离线计算并没有考虑延迟的问题。


Streaming的局限性:

Streaming长期以来一直和离线系统同时存在,也就是Lambda架构。

两者都执行基本相同的计算,Streaming系统为您提供低延迟,不准确的结果,并且一段时间后批处理系统为您提供正确的输出。(由Twitter的Nathan Marz(Storm的创造者)提出),这样我们就需要维护两个版本数据,最后再合并结果。

所以Kappa架构这种基于Kafka的可重复获取消息的架构出现了,Streaming应该是超越批量计算,并且能包含批量计算。Flink正是接受了这个观点。

那么怎么做到这样呢?只需要两件事:

1、正确性:有了这个,就和批量计算等价了。

Streaming需要能随着时间的推移依然能计算一定时间窗口的数据。Spark Streaming通过微批的思想解决了这个问题,实时与离线系统进行了一致性的存储,这一点在未来的实时计算系统中都应该满足。

2、推理时间的工具:这可以让我们超越批量计算。

好的时间推理工具对于处理不同事件的无界无序数据至关重要。

这里有两种时间:事件时间和处理时间。

事件时间:事件实际发生的时间。

处理时间:系统中处理事件的时间。

当然,并不是所有的业务都会关心时间的问题。理想中事件时间和处理时间总是相等的,事件在发生时立即处理。然而,现实并非如此,事件时间和处理时间之间的偏差不仅不是零,而且受硬件(特别是网络),软件,数据本身影响,会有很大的偏差。


image.png


图一 时域映射  x轴为事件时间   y轴为处理时间  斜率为1的黑色虚线表示理想值,其中处理时间和事件时间完全相等; 红线代表现实。理想线和红线之间的水平距离是处理时间和事件时间之间的偏差。这种偏差本质上是处理流水线引入的延迟。

这个映射不是静态的,所以只关心事件时间,就很难在时间窗口分析数据,而如果将事件时间窗口化,完整性会出问题。

所以必须用新的方案解决这个问题,我们先来看一下现有的数据处理模式。


二、数据处理模式


这里我们将流式与微批处理放在一起,他们的差异在这里并不重要。


1、有界数据

image.png

图二,左侧的数据集充满了熵,我们通过mapreduce等批处理引擎,在右端使用具有更大内在价值的新结构化数据集。

当然,作为该方案的一部分,您可以实际计算的内容存在无限变化,但整体模型非常简单。


2、无限数据-批量

批处理引擎虽然没有明确考虑到无限数据,但是自从批量系统出现以来,它已被用于处理无界数据集。主要是将无界数据切割成适合批处理的有界数据集的集合。

固定窗口:

image.png


图三  使用批处理引擎重复运行来处理无界数据集的最常用方法是将输入数据窗口化为固定大小的窗口,然后将每个窗口作为单独的有界数据源处理。

会话:

image.png

image图四 增加批量,更复杂了


3、无限数据-Streaming

这种数据可能是 时间无序的  事件处理时间有偏差

在处理这种数据时有几种情况:

不关心时间,近似算法,处理时间窗口化,事件时间窗口化。

image.png

不关心时间

这种是完全不关心时间的情况,我们只需要完成对数据的处理就可以,有以下几种情况:

过滤

比如web流量日志,过滤掉某一个域名的流量。丢弃不需要的就可以了。


图五 过滤无界数据

内连接

还有就是连接两个无界数据源的时候,没有时间逻辑。

image.png

图六 无界数据内连接


近似算法

比图top-N  K-means等算法,值得注意的是:这些算法在设计中通常会有一些时间元素,并且由于它们在到达时处理

,因此该时间元素通常基于处理时间。这可能会影响计算的误差,如果这些误差范围是以按顺序到达的数据为基础的

,那么这种数据并不可信。

image.png

图七 无界数据近似值


处理时间窗口化

先介绍一下窗口,有三种窗口模式

image.png

图八 三种窗口

固定窗口:固定窗口将时间切割成具有固定大小时间长度的段。

滑动窗口:固定窗口的升级,滑动窗口由固定长度和固定周期定义。周期小于长度,则窗口重叠。如果周期等于长度,有固           定的窗口。如果周期大于长度,则会有一个的采样窗口,它只会随着时间的推移查看数据的子集。

会话:动态的窗口,会话由一系列事件组成,这些事件会超时而终止。会话通常用于通过将一系列与时间相关的事件组合在一起来分析用户随时间的行为。长度并不固定。

下面先来讨论处理时间窗口化:

当按处理时间窗口化时,系统基本上将输入数据缓冲到一个窗口中,直到经过一定量的处理时间后再做处理。例如,在五分钟固定窗口的情况下,系统会将数据缓冲五分钟的处理时间,之后它会将这五分钟内观察到的所有数据视为一个窗口并将它们发送到下游进行处理。

image.png

图九 处理时间窗口

处理时间窗口的优点:

简单:不用担心去改变数据。

窗口完整性:由于系统完全了解是否已经看到窗口的所有输入,因此可以完美的判断窗口完整。

处理时推断源的信息:比如监控系统。

但是处理时间窗口有一个非常大的缺点:如果数据有和他们关联的事件时间,弱国处理时间窗口要反映实际上这些事件的实际情况,那么这些数据必须顺序到达,但事实上大部分并不有序。

所以我们需要的是一种对时间到达顺序更稳的方式,也就是事件时间窗口。


事件时间窗口化

将无界数据化为固定窗口。

image.png


图10  将事件时间固定到固定窗口

图中的实线白线表示两个特别感兴趣的数据。这两个数据都到达处理时间窗口,这些时间窗口与它们所属的事件时间窗口不匹配。因此,如果这些数据已被窗口化为处理关注事件时间的处理时间窗口,则计算结果将是不正确的。所以事件时间窗口才是正确性的体现。

image.png

图11 也可以创建动态的窗口

事件时间窗口有两个明显的缺点,因为窗口必须更长。

缓冲:由于延长了窗口的生命周期,因此需要更多的数据缓冲。这个问题可以通过持久储存和增量解决。

完整性:这个需要系统本身根据情况做出估计。


三、未来


我们定义了流的概念。正确性和推理时间的工具是关键。

通过分析事件时间和处理时间的差异,以及无界数据和有界数据,无界数据大致分为:不关心时间,近似算法,处理时间窗口化,事件时间窗口化。

目前来看,时间问题可能是我们需要重点解决的问题,在102中介绍了一种实时流式处理模型,这也是未来实时计算领域的基石。

让实时处理尽快融入到无限数据的系统中,为用户提供高延迟,高效率间的灵活选择,才是我们未来努力的方向。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23541 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22274 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
22197 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
19110 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
11985 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
36374 0
122
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载