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、推理时间的工具:这可以让我们超越批量计算。
好的时间推理工具对于处理不同事件的无界无序数据至关重要。
这里有两种时间:事件时间和处理时间。
事件时间:事件实际发生的时间。
处理时间:系统中处理事件的时间。
当然,并不是所有的业务都会关心时间的问题。理想中事件时间和处理时间总是相等的,事件在发生时立即处理。然而,现实并非如此,事件时间和处理时间之间的偏差不仅不是零,而且受硬件(特别是网络),软件,数据本身影响,会有很大的偏差。

图一 时域映射 x轴为事件时间 y轴为处理时间 斜率为1的黑色虚线表示理想值,其中处理时间和事件时间完全相等; 红线代表现实。理想线和红线之间的水平距离是处理时间和事件时间之间的偏差。这种偏差本质上是处理流水线引入的延迟。
这个映射不是静态的,所以只关心事件时间,就很难在时间窗口分析数据,而如果将事件时间窗口化,完整性会出问题。
所以必须用新的方案解决这个问题,我们先来看一下现有的数据处理模式。
二、数据处理模式
这里我们将流式与微批处理放在一起,他们的差异在这里并不重要。
1、有界数据

图二,左侧的数据集充满了熵,我们通过mapreduce等批处理引擎,在右端使用具有更大内在价值的新结构化数据集。
当然,作为该方案的一部分,您可以实际计算的内容存在无限变化,但整体模型非常简单。
2、无限数据-批量
批处理引擎虽然没有明确考虑到无限数据,但是自从批量系统出现以来,它已被用于处理无界数据集。主要是将无界数据切割成适合批处理的有界数据集的集合。
固定窗口:

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

图四 增加批量,更复杂了
3、无限数据-Streaming
这种数据可能是 时间无序的 事件处理时间有偏差
在处理这种数据时有几种情况:
不关心时间,近似算法,处理时间窗口化,事件时间窗口化。
不关心时间
这种是完全不关心时间的情况,我们只需要完成对数据的处理就可以,有以下几种情况:
过滤
比如web流量日志,过滤掉某一个域名的流量。丢弃不需要的就可以了。

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

图六 无界数据内连接
近似算法
比图top-N K-means等算法,值得注意的是:这些算法在设计中通常会有一些时间元素,并且由于它们在到达时处理
,因此该时间元素通常基于处理时间。这可能会影响计算的误差,如果这些误差范围是以按顺序到达的数据为基础的
,那么这种数据并不可信。

图七 无界数据近似值
处理时间窗口化
先介绍一下窗口,有三种窗口模式

图八 三种窗口
固定窗口:固定窗口将时间切割成具有固定大小时间长度的段。
滑动窗口:固定窗口的升级,滑动窗口由固定长度和固定周期定义。周期小于长度,则窗口重叠。如果周期等于长度,有固 定的窗口。如果周期大于长度,则会有一个的采样窗口,它只会随着时间的推移查看数据的子集。
会话:动态的窗口,会话由一系列事件组成,这些事件会超时而终止。会话通常用于通过将一系列与时间相关的事件组合在一起来分析用户随时间的行为。长度并不固定。
下面先来讨论处理时间窗口化:
当按处理时间窗口化时,系统基本上将输入数据缓冲到一个窗口中,直到经过一定量的处理时间后再做处理。例如,在五分钟固定窗口的情况下,系统会将数据缓冲五分钟的处理时间,之后它会将这五分钟内观察到的所有数据视为一个窗口并将它们发送到下游进行处理。

图九 处理时间窗口
处理时间窗口的优点:
简单:不用担心去改变数据。
窗口完整性:由于系统完全了解是否已经看到窗口的所有输入,因此可以完美的判断窗口完整。
处理时推断源的信息:比如监控系统。
但是处理时间窗口有一个非常大的缺点:如果数据有和他们关联的事件时间,弱国处理时间窗口要反映实际上这些事件的实际情况,那么这些数据必须顺序到达,但事实上大部分并不有序。
所以我们需要的是一种对时间到达顺序更稳的方式,也就是事件时间窗口。
事件时间窗口化
将无界数据化为固定窗口。

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

图11 也可以创建动态的窗口
事件时间窗口有两个明显的缺点,因为窗口必须更长。
缓冲:由于延长了窗口的生命周期,因此需要更多的数据缓冲。这个问题可以通过持久储存和增量解决。
完整性:这个需要系统本身根据情况做出估计。
三、未来
我们定义了流的概念。正确性和推理时间的工具是关键。
通过分析事件时间和处理时间的差异,以及无界数据和有界数据,无界数据大致分为:不关心时间,近似算法,处理时间窗口化,事件时间窗口化。
目前来看,时间问题可能是我们需要重点解决的问题,在102中介绍了一种实时流式处理模型,这也是未来实时计算领域的基石。
让实时处理尽快融入到无限数据的系统中,为用户提供高延迟,高效率间的灵活选择,才是我们未来努力的方向。
更多实时计算,Kafka等相关技术博文,欢迎关注实时流式计算

Streaming-大数据的未来的更多相关文章
- 实时流Streaming大数据:Storm,Spark和Samza
当前有许多分布式计算系统能够实时处理大数据,这篇文章是对Apache的三个框架进行比较,试图提供一个快速的高屋建瓴地异同性总结. Apache Storm 在Storm中,你设计的实时计算图称为top ...
- 《决战大数据:驾驭未来商业的利器》【PDF】下载
内容简介 大数据时代的来临,给当今的商业带来了极大的冲击,多数电商人无不"谈大数据色变",并呈现出一种观望.迷茫.手足无措的状态.车品觉,作为一名经验丰富的电商人,在敬畏大数据的同 ...
- Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户
你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...
- chinacloud大数据新闻
2015年大数据发展八大趋势 (0 篇回复) “数据很丰满,信息很骨感”:Sight Machine想用大数据的方法,打碎两者间的屏障 (0 篇回复) 百度携大数据"圈地" ...
- (第1篇)什么是hadoop大数据?我又为什么要写这篇文章?
摘要: hadoop是什么?hadoop是如何发展起来的?怎样才能正确安装hadoop环境? 这些天,有很多人咨询我大数据相关的一些信息,觉得大数据再未来会是一个朝阳行业,希望能尽早学会.入行,借这个 ...
- 论各类BI工具的“大数据”特性!
市面上的BI工具形形色色,功能性能包装得十分亮丽,但实际应用中我们往往更关注的是朴实的技术特性和解决方案.对于大数据,未来的应用趋势不可抵挡,很多企业也正存在大数据分析处理展现的需求,以下我们列举市面 ...
- 大数据,why python
大数据,why python ps, 2015-12-4 20:47:46 python" title="大数据,why python">http://www.op ...
- 原来Java大数据才是真正的高富帅!
大数据时代,中国IT环境也将面临重新洗牌,不仅仅是企业,更是程序员们转型可遇而不可求的机遇. 国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发.开发程序员的 ...
- 《SAP微顾问和大数据 》公众号管理课程清单
互联网商业模式创新 电子商务与传统企业转型 “一带一路”信息化:格局与对策 “一带一路”沿线国家主权信用及风险防范 大数据下的资源整合和知识共享 地产数字化改革的痛点与处方 携手共建“一带一路” 数字 ...
- 为什么Java大数据能带你走上人生巅峰
国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发. 开发程序员的工作大多是重复性劳动,容易产生疲惫感,薪资在工作2-5年内就达到了一个峰值,再要提升就比较困 ...
随机推荐
- 【题解】射击-C++
Description 不难发现,豆豆能从很多事情中去思考数学,于是豆豆父母决定让他去练习射击,这是项需要集中注意力的运动,相信 能够让豆豆暂时脱离数学.学习射击的第一天就让豆豆产生 了浓厚的兴趣,射 ...
- 我这边测了一下,发现#后面参数变化浏览器不会刷新,但是#一旦去掉就会刷新了,你那边的url拼的时候能不能在没参数的时候#也拼在里面,这样应该就OK了
我这边测了一下,发现#后面参数变化浏览器不会刷新,但是#一旦去掉就会刷新了,你那边的url拼的时候能不能在没参数的时候#也拼在里面,这样应该就OK了
- YuniKorn 介绍
一.YuniKorn 简介 YuniKorn 是一种轻量级的通用资源调度程序,适用于容器编排系统.它的创建是为了一方面在大规模,多租户环境中有效地实现各种工作负载的细粒度资源共享,另一方面可以动态地创 ...
- Excel催化剂开源第9波-VSTO开发图片插入功能,图片带事件
图片插入功能,这个是Excel插件的一大刚需,但目前在VBA接口里开发,如果用Shapes.AddPicture方法插入的图片,没法对其添加事件,且图片插入后需等比例调整纵横比例特别麻烦,特别是对于插 ...
- Shiro授权流程
1,授权中涉及的一些概念 [1]授权:访问控制,即在应用中认证用户能否访问的系统资源(如一个页面,一个按钮等). [2]资源:在Web应用中反应为用户可以访问的URL. ...
- 2019年7月22日 - LeetCode0004
https://leetcode-cn.com/problems/median-of-two-sorted-arrays/submissions/ 我的解法: 我看到了那个log的要求,也第一时间想到 ...
- python 之 并发编程(线程理论,开启线程的两种方式,进程与线程的区别,线程对象的其他方法)
9.9 线程理论 1.什么是线程 线程指的是一条流水线的工作过程 进程根本就不是一个执行单位,进程其实是一个资源单位,一个进程内自带一个线程,线程才是执行单位 2.进程VS线程 同一进程内的线程们共享 ...
- VMWare虚拟机:三台虚拟机互通且连网
虚拟机:三台虚拟机互通且连网 目录 一.虚拟机 相关软件 虚拟机安装 Linux系统安装 1) 使用三个Linux虚拟机 多台虚拟机互通且上网 1) 多台配置注意事项 2) 虚拟机软件的配置 3) W ...
- 搭建python环境
参考文章:https://blog.csdn.net/qq_33855133/article/details/73106176 对于配置环境变量,懂些技术的人来说,都是很简单. 变量是在操作系统中一个 ...
- (技能篇)双机热备之Oracle切换故障处理
背景: 以前做的的一个项目中使用了某国产双机热备产品,但是在数据库做双机热备时出现了一些问题,没办法.不得不研究一番了!经过两天的研究终于问题得以解决.将问题处理步骤记录下来以备后用,也希望能帮助到需 ...