大数据概论】 怎么去理解区分实时计算、准实时计算和离线结算?

2020-05-15 10:01发布

3条回答
慢半拍
2021-10-27 15:05

目前大数据计算通常分为两大类:以Storm为代表的实时计算和以MapReduce为代表的离线计算。实时计算对数据处理时间有着较高的要求,对于延迟阈值大数据界一直没有统一标准,默认是秒级(严格来说实时系统必须保证在某个时间边界内响应,通常是毫秒级或亚秒级,但无论是Spark Streaming还是Storm都只能保证计算时间较低,因此应该属于近实时系统)。离线计算对数据处理时间不太敏感,通常只要求在N+1的时间内看到结果。


由于应用场景不同,这两种计算引擎接受数据的方式也不太一样:实时计算的数据源通常是流式的,也就是来一条数据处理一条(micro-batch下文会说),所以也被称为流式计算(streaming);而离线计算的数据源通常是静态的、一个计算周期的完整数据,计算的时间也被设置在一个周期的数据全部收到后(通常是凌晨计算前一天的数据),所以也被称为批处理计算。有时这两种不同的数据接收方式以及它们所导致的不同的运行时间(实时计算任务需要一直运行,离线任务则是定时运行),会被一些工程师用于区分实时计算引擎和离线计算引擎。


其实在数据接收上流式计算和批处理计算并没有本质的区别,实际上流式处理是批处理的一个特例。批处理系统划分batch主要有两个标准:batch size和batch window。Batch size是按照数据的容量来切分batch,batch window是通过时间窗口来切分batch,一般任何一个标准达到阈值就可以切分。所以可以说流式计算是batch size为1、batch window不限的批处理计算特例,N+1离线计算是batch size不限、batch window为1天的批处理计算特例。回到实时计算和离线计算这个场景,其实也并非只有流式计算和N+1计算,以Spark Streaming作为代表的micrb-batch就是介乎两者之间。Spark Streaming将数据根据batch window切分,window大小可以是几秒到几分钟,以满足不同程度的实时要求。

一周热门 更多>