开发者学堂课程【分布式计算入门:流计算与批量计算的区别 】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/375/detail/4702
流计算与批量计算的区别
内容介绍
一、离线数据处理与流数据处理的区别
二、增量计算的特点
一、离线数据处理与流数据处理的区别
离线数据处理-批处理
流数据处理-流水线
离线数据是将所有的数据进入一个计算节点,计算完进入下一个 stage。所以简单来看 map 输入到 map 到 shuffle 到 reduce 实际上大家可以从图上可以看到,他们是一个串行计算,也就是说所有的数据进入 map 的计算机用阶段到 shuffle 计算阶段到 reduce 计算的一个 stage 。当然这里 shuffle 是可以和 map 重叠的。他的延时是一个串行。
如图所示,一批数据进入 map、shuffle 、reduce 而后面的数据和前面的数据完全是进行并行的运行。如图所示,它一批数据的延时是相对离线计算大大降低。
批量计算如同这个食堂里头一口大锅,那么这口锅炒出来的菜一千个人一次就可以炒好,但是对于每个人来说,他这口大锅炒的菜可能要半个小时,对于每个人来说都要等半个小时,才能吃上这种菜。但是呢,他这个锅一次炒就炒一千人。
而流式计算它相当于这种小灶,你进来了它可能十分钟、几秒钟、几分钟肯定让你吃上这口饭。所以他对于每个个体来说、每个计算来说、每个数据来着它的时效性是更好的。那么我们进行对比。
粒度 |
计算 |
生命周期 |
容错监控 |
面向 |
DAG |
|
全量 |
Partition/文件 |
局部 |
数据处理完,进程“退出” |
进程 |
吞吐 |
串行 |
增量(流) |
Batch/内存 |
有状态 |
keep alive |
数据 |
延时 |
并行 |
二、增量计算的特点
大数据对分布式存储的需求
状态定义
存储,容量
管理,清理
容错
这将会给系统设计带来极大的挑战,大家都知道离线和批量计算器没有这些问题。
Temporal SQL
Update 语义
其实其实在数据库领域已经有比较完备的语义和语言的定义,大家可以去在网上查一下资料。另外,流式计算和增量计算因为流这样特殊的数据定义,他有诸多的时序上和实效性上以及通道上面的不可控性,所以我们引入了 update 语义。