当前课程知识点:大数据平台核心技术 >  第七讲 流式计算的系统设计与实现 >  增量计算和流式计算 >  流式计算的系统设计与实现(主讲人:强琦)

返回《大数据平台核心技术》慕课在线视频课程列表

流式计算的系统设计与实现(主讲人:强琦)在线视频

流式计算的系统设计与实现(主讲人:强琦)

下一节:与批量计算的区别(主讲人:强琦)

返回《大数据平台核心技术》慕课在线视频列表

流式计算的系统设计与实现(主讲人:强琦)课程教案、知识点、字幕

大家好

我是来自阿里云

数据事业部的强琦

很高兴今天能和大家在一起

分享我们在流式计算

方面的一些经验

我将会从以下四个方面

跟大家探讨流式计算

和增量计算的一些关键知识点

流式计算

是一个编程内数据相对比较少

所以它对时效性的要求

是比较严格的

实时计算

其实指的就是说

这个计算的时效性要求比较强

那么流计算

我们认为是利用分布式的思想

和方法

对海量的streaming的数据

进行实时处理的系统

它的根本源自于对海量数据

在时效性上的挖掘

那么我们通常在说的实时系统

或者实时计算

其实严格意义上来说

其实是分成三大类

一类叫做ad-hoc commputing

它的计算是不可枚举的

也就是说整个计算

是在query时才发生的

那么用比较通俗的话来说

其实是数据的实时计算

那么第二类

就是我们今天的一个主题

流式计算

stream computing

那么这一类计算的一些特征是说

它的计算一定是可枚举的

它的计算是在数据发生变化时

或者数据进入系统时发生

那这一类我们用通俗的语言来说

它是实时数据的计算

那么大家都觉得

如果你这个实时计算

对数据的新鲜程度

对数据的时效性

如果也要有要求的话

那么实际上我们认为是第三类

它属于实时数据的实时计算

那么这一类

实际上对整个系统的挑战

是非常非常大的

那么我们后续课程也会介绍到

我们要说到的增量计算

它的定义

其实我在上一个PPT

已经介绍到了

它是分批

也就是batch

那么每个batch

会计算出一个

founction的一个delta值

所以正如PPT里头所演示的

那么大家可以看到

对于数据的一个delta

最终会变成一个对

function的一个delta值

最终通过一个增量的计算

达到的效果

实际上是在数据的delta值上

计算的一个结果

这个f(x)

我们称之为oldValue

也就是说

整个这个function的

一个oldValue

从这个公式就可以看到

整个增量计算与全量计算

和批量计算

也就是说我们传统意义上的

离线计算有很大的不一样的地方

就在于这个地方

就是它是个有状态的计算

而批量计算系统

和全量计算系统

它是个无状态的一个计算

所以这个就会导致

我们整个的系统的设计思路

理念和整个的容错的机制

会有很大的不同

相对于这个oldValue

本批次的数据

它就是这个delta

作为一个输入

整体上是一个有状态的计算

它会在系统的时效性

系统的复杂性

和系统性能之间去做tradeoff

如果我的batch里头的数据量

是非常少的

甚至比如说一条

那我这个系统表现出来的时效性

是最实时的

当然整个系统的容错吞吐

就会受到影响

就是说一批次的数据量

是比较少的情况下

那整个的系统吞吐会比较低

整个的系统的容错的复杂度

也会比较高

那么在增量计算情况下

它有哪些优势呢

相比以前的全量计算

中间的计算结果是实时产出的

那么也就是说

它的时效性是很强的

那么第二个重要的原因是说

我们把一个计算

平摊在每一个时间段

所以它可以做到平摊计算

大家都知道我们整个集群的规模

是受峰值的影响

就是峰值是多少

它就决定你的

整个集群的一个规模

那么大家都知道

双十一的峰值的流量

是非常非常大的

如果我们的计算

是按照最峰值的流量去计算的话

那我们的整个服务器资源

是相对比较高的

如果我们能够把传统的计算

平摊在每一分钟每一秒

实际可以起到降低成本的作用

还有一个很重要的特点就是说

我们的计算系统

我们整个一个系统的一个TPS

或者QPS

全部的数据

在进行一个function的

计算的时候

它会大量膨胀中间结果

也就是说像Group By Count

会到达200G

那么大家就可以想象

我整个系统的单机的吞吐

最高能达到多少

你一个就是200G

我100个query就会达到2个G

所以它对整个系统的吞吐

吞吐进而又影响到我们的成本

而增量计算

我们可以看到的是说

它其实是可以做到

中间结果的不膨胀

刚才其实最早说过

那么从我们这个增量计算的定义

可以看出

它其实是一个有状态的计算

在分布式领域

有状态的failover的策略

会跟无状态的计算系统截然不同

但是它有的一个优势是什么呢

就是它的恢复快

我的任务可以切成很多碎片

去运行

一旦我的任务

因为任何几台服务器的抖动

而宕机

我整个的恢复是从前一次

有效的batch开始计算

而不是像全量计算

和离线计算一样

全部要重新进行计算

当在离线计算

和在线计算混合部署的情况下

显得尤为重要

大家可以看到

增量计算其实是把一大块数据

分批去计算

所以我们在经常会遇到

一些现实的情况就是

数据倾斜问题

在真实场景下

数据倾斜会对整个计算系统

产生非常致命的影响

所以假设我不同的delta

之间的数据倾向都是1000

这个实际是很平常的

大家都知道双十一的时候

光小米一家店铺

就做到了很高的一个销售额

小米这个店铺和其他店铺的成交

这个都不是1000倍

而不是上万倍

甚至几十万倍的一个scale

传统的分布式计算

它的整个计算的延时

是受最慢的那个结点

那么很简单

我如果把全部的数据分批次

比如说分了1000批

那实际上对于每一批来说

我的数据的倾斜度就会缓解

分100次

那就缓解100倍

而且每个批次

其实是可以并行去运行的

所以这个可以大大地去降低

整个我们计算任务

在数据倾斜情况下的

一个运行效率的问题

介绍了一些流式计算的定义

那我们再看到

现在流式计算的一些

经典的应用场景

日志采集和在线分析

比较有名的像Google的统计

百度的统计

一些网站根据访问日志

它会分析出各种的UV PV IPV

一些各种的运营指标

有了流式计算

有了实时计算

它就可以对这些访问的时效性

就可以做到秒级

分钟级的监控

比如说双十一当天

不同的店铺会通过

他们店铺的实时的访问情况

来决定他们紧接着

后面的运营策略

因为双十一的时效性要求

是比较高的

所以机会是瞬息万变的

他们会根据前一分钟

甚至前一秒的

他们的售卖情况

会去决定后面的运营策略

上不上活动等等

另外去做大规模的数据的预处理

大家都知道

传统的ETL的工作

是用MapReduce的

或者Hive
或者ODPS这样去做

但是实际上

如果我们后面的计算要求

更高的时效性的时候

那么我们对于ETL的过程

要求也是实时性也是越来越高

那么对实时性天然要求比较高的

还有分控和告警

比如说你去刷一笔信用卡

它这个信用卡应该是带

越实时地去判断出来

你这个交易的风险

来终止这个交易

否则你十几分钟

半个小时 一个小时以后算出来

已经没用了

用户的财产帐户已经被盗用

已经造成损失

所以这一块的业务

天然的要求

对实时性要求非常高

那么网站的

移动的统计分析

另外类似于分控的

网络的安全检测

如果我们对网络的

无论是CDN

还是对于网站的恶意分析

能够越早实时

实际上我们就可以越早去保护

不至于造成整个的网站宕机

这样的严重后果

在阿里巴巴还有一个领域

会大量使用到实时的技术

比如说在线的服务计量

与计费的管理系统

搜索或者你的广告

你的点击计费

比如说你的预算是1000元

那么实际上

前面的点击已经把这个

前期已经都消耗光了

如果不能实时地检测到

那这个广告位其实是被浪费了

广告预算已经花完了

但是你这个广告预算

还是被它占用

那么之前讲到的流式计算

和增量计算

那我们现在回过头来去看看

到底流式计算

从数据方面

它有怎样的一个特点

那很显然

流数据它的定义是说

它是由业务产生的一个有界物

有向无界的一个数据流

它的一个特点是具有不可控性

就是你不知道

它这个数据的到达时机

以及相关数据的顺序

你对于数据质量

和规模的不可控性

大家都知道

如果我是离线的话

双十一当天的数据规模

其实我在晚上

进行离线计算的时候

我已经大概知道了

我可以及时提升我的计算的规模

和我的并发度

比如说

上游在更改它的数据的scanmark

元数据

以及其他数据定义的时候

我有充分的时间

在离线计算下去准备

进行数据订正

在流计算的场景

它这个数据是实时记录的

没有时间去响应

业务数据质量的变化

业务数据的规模

就像双十一

10号的晚上12点

到11号凌晨的0点

后面的一些数据到达的规模

完全是被业务活动和用户活动

所控制

我们基本上没法预测

另外后台的计算需求

它对时效性的要求

所以我们在容错方案

体系架构和结构输出方面

都与传统的计算

是截然不同的

后面的重点章节

我也会重点地描述

其中的一些技术难点和细节

那另外

大家都知道

传统收藏领域已经对批量计算

和离线计算的体系

研究的已经非常成熟

而在实施领域

就是数据仓库中间层这些领域

其实都是缺失的

包括数据员管理

数据质量管理等等

另外我们因为对数据的处理力度

非常小

可以小到几条数据

它将会架构产生决定性影响

另外我们处理的功能

也就是处理的Function

或者叫算子

对全局状态影响是不同的

有些算子它是有状态的

有一些算子它是无状态的

比如说我进行文章的分词

进行文章的或者词语的词性标注

实时的系统

其实它对这个是无状态

另外有一些算子

对数据到来的数据

是有严格要求的

而有些数据算子

它可能是midden的

它就对到来的顺序是没有要求的

有些处理它需要对输出

是有要求的

有些要求是对一致性输出

就是我不同的结点

我输出的这个应该是对齐的

比如说

都是11点的数据输出的

那就应该是11点的数据

而有些业务它不讲究

但是它就对整个输出的连贯性

是有要求的

也就是说你有些结点的宕机

不应该影响到另外结点的输出

它对数据的连贯性更高

所以看到整个流计算

它会对系统有非常多的

不一样的要求

这就会导致我们整个系统

有非常大的复杂性

跟离线有非常的不同

我们的计算仍然是要求时效性

要求快

那对质量来说

我要求它的计算一定是精准的

然后对容错的要求

我不论你的机器、集群、网络

任何的硬件有任何的宕机

我要求你的计算应该是持续稳定

而大家其实前面也可以看到

那对整个计算的要求

是非常多样性的

所以这是我们整个的特点

那么其中多样性

我还想再补充几点的就是

不同的业务场景

它对计算的结果要求

也是不一样的

有些要求是精确

一点数据都不能丢、精度损失

还有的业务场景

要求的是你可以多

但是你不能少

还有的业务场景

它是希望你丢数据的

是有一个sla在保证

比如说你丢的数据

不应该超过99%

那换取的是它整个计算的连贯性

是比较强的

当然刚才也提到过

有些业务要求你输出的时效性

是具有一致性

有些是对输出

是要有连贯性的要求

所以种种特点是导致我们

做流式计算和增量计算系统

会面临与传统的离线计算

和增量计算完全不同的要求

大数据平台核心技术课程列表:

第一讲 大数据和ODPS

-主讲人:武永卫

--大数据处理平台概述(主讲人:武永卫)

-主讲人:程永

--大数据平台ODPS(主讲人:程永)

-QUIZ--作业

第二讲 分布式存储

-大纲

--大纲(主讲人:姚文辉)

-初步认识大数据对分布式存储系统的需求

--初步认识大数据对分布式存储系统的需求

-理解大数据对分布式存储系统的需求

--理解大数据对分布式存储系统的需求(主讲人:姚文辉)

-具体说明大数据对分布式存储系统的需求

--具体说明大数据对分布式存储系统的需求(主讲人:姚文辉)

-大规模分布式存储的挑战

--大规模分布式存储的挑战(主讲人:姚文辉)

-小概率事件-Raid卡故障

--小概率事件-Raid卡故障(主讲人:姚文辉)

-分布式存储系统举例

--分布式存储系统举例(主讲人:姚文辉)

-分布式存储系统重要功能设计要点剖析

--分布式存储系统重要功能设计要点剖析(主讲人:姚文辉)

-链式写正常流程

--链式写正常流程(主讲人:姚文辉)

-写流程的另一种常见方式:主从模式

--写流程的另一种常见方式:主从模式(主讲人:姚文辉)

-链式写异常流程

--链式写异常流程(主讲人:姚文辉)

-写异常处理的另一种方法-Seal and New

--写异常处理的另一种方法-Seal and New(主讲人:姚文辉)

-读正常流程

--读正常流程(主讲人:姚文辉)

-读流程优化-BackupRead

--读流程优化-BackupRead(主讲人:姚文辉)

-IO QoS

--IO QoS(主讲人:姚文辉)

-数据正确性:checksum

--数据正确性:checksum(主讲人:姚文辉)

-数据可靠性-Replication

--数据可靠性-Replication(主讲人:姚文辉)

-数据均衡-Rebalance

--数据均衡-Rebalance(主讲人:姚文辉)

-垃圾回收-Garbage collection

--垃圾回收-Garbage collection(主讲人:姚文辉)

-Erasure coding

--Erasure coding(主讲人:姚文辉)

-Erasure coding(3,2)写入和读取过程

--Erasure coding(3,2)写入和读取过程(主讲人:姚文辉)

-元数据管理的高可用性和可扩展性

--元数据管理的高可用性和可扩展性(主讲人:姚文辉)

-元数据管理的高可用性

--元数据管理的高可用性(主讲人:姚文辉)

-Paxos概要

--Paxos概要(主讲人:姚文辉)

-Raft

--Raft(主讲人:姚文辉)

-元数据管理的可扩展性

--元数据管理的可扩展性(主讲人:姚文辉)

-不同存储介质的特性

--不同存储介质的特性(主讲人:姚文辉)

-盘古混合存储

--盘古混合存储(主讲人:姚文辉)

-QUIZ--作业

第三讲 资源管理与任务调度

-阿里云飞天分布式调度

--阿里云飞天分布式调度(主讲人:陶阳宇)

-任务调度

--任务调度(主讲人:陶阳宇)

-资源调度

--资源调度(主讲人:陶阳宇)

-容错机制

--容错机制(主讲人:陶阳宇)

-规模挑战

--规模挑战 (主讲人:陶阳宇)

-安全域性能隔离

--安全域性能隔离(主讲人:陶阳宇)

-分布式调度的发展方向

--分布式调度的发展方向(主讲人:陶阳宇)

-QUIZ--作业

第四讲 分布式编程模型的设计与演化

-数据格式和抽象

--数据格式和抽象(主讲人:吴威)

-分布式编程模型

--分布式编程模型(主讲人:吴威)

-MapReuduce编程模型

--MapReuduce编程模型(主讲人:吴威)

-关系型数据编程模型

--关系型数据编程模型(主讲人:吴威)

-分布式图计算模型

--分布式图计算模型(主讲人:吴威)

-分布式编程未来展望

--分布式编程未来展望(主讲人:吴威)

-QUIZ--作业

实践1:通过两阶段提交协议完成数据上传

-分布式事务

--分布式事务 (主讲人:冯骁)

-分布式一致性算法

--分布式一致性算法(主讲人:冯骁)

-两阶段提交与三阶段提交

--两阶段提交与三阶段提交(主讲人:冯骁)

-实践--介绍

--实践--介绍(主讲人:冯骁)

第五讲 离线分布式关系型计算

-关系型计算基本原理_1

--离线分布式关系型计算_1(主讲人:王鹏飞)

-关系型计算基本原理_2

--关系型计算基本原理_2(主讲人:王鹏飞)

-分布式环境中的连接计算和聚合计算

--分布式环境中的连接计算和聚合计算(主讲人:王鹏飞)

-其他计算和物理优化

--其他计算和物理优化(主讲人:王鹏飞)

-QUIZ--作业

第六讲 全局数据管理与调度

-提纲

--提纲(主讲人:罗李)

-课程背景介绍

--课程背景介绍(主讲人:罗李)

-前序知识

--前序知识(主讲人:罗李)

-分布式节点距离计算法则

--分布式节点距离计算法则(主讲人:罗李)

-数据分布策略

--数据分布策略(主讲人:罗李)

-分布式计算调度

--分布式计算调度(主讲人:罗李)

-数据就近原则计算如何容错

--数据就近原则计算如何容错(主讲人:罗李)

-ODPS跨集群数据依赖

--ODPS跨集群数据依赖(主讲人:罗李)

-QUIZ--作业

实践2:编写MR完成Group By+Join操作

-主讲人:谢德军

--实践2:编写MR完成Group By+Join操作(主讲人:谢德军)

第七讲 流式计算的系统设计与实现

-增量计算和流式计算

--流式计算的系统设计与实现(主讲人:强琦)

-与批量计算的区别

--与批量计算的区别(主讲人:强琦)

-业界典型系统技术概要分析

--业界典型系统技术概要分析(主讲人:强琦)

-核心技术

--核心技术(主讲人:强琦)

-消息机制

--消息机制(主讲人:强琦)

-有状态计算、并行DAG、抢占式调度和资源隔离、Failover机制

--有状态计算、并行DAG、抢占式调度和资源隔离、Failover机制(主讲人:强琦)

-StreamSQL

--StreamSQL(主讲人:强琦)

-QUIZ--作业

第八讲 内存计算

-软硬件趋势、分布式计算简史与内存计算

--软硬件趋势、分布式计算简史与内存计算(主讲人:强琦)

-分布式计算

--分布式计算(主讲人:强琦)

-内存计算

--内存计算(主讲人:强琦)

-统一的计算框架

--统一的计算框架(主讲人:强琦)

-业界经典系统技术分析-spark&flink

--业界经典系统技术分析-spark&flink(主讲人:强琦)

-QUIZ--作业

第九讲 大规模数据的分布式机器学习平台

-主讲人:褚葳

--大规模数据的分布式机器学习平台(主讲人:褚葳)

-QUIZ--作业

实践3:实现MapReduce编程运行时库

-分布式环境下的新问题

--分布式环境下的新问题(主讲人:徐冬)

-工程实现范例

--工程实现范例(主讲人:徐冬)

-课程设计相关问题

--课程设计相关问题(主讲人:徐冬)

流式计算的系统设计与实现(主讲人:强琦)笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。