流式处理和批处理的区别

流式处理(Stream Processing) 是针对 批处理(Batch Processing)来讲的,即它们是两种截然不同的数据处理模式,具有不同的特点,适用于不同的应用场合。不能简单地认为其中一种数据处理模式优于另一种数据处理模式。

对于批处理来讲,首先数据被不断地采集,保存到数据库中,然后进行分析处理(包括SQL查询)。批处理适用于对大量数据(High Volume)进行处理的场合。人们需要等到整个分析处理任务完成,才能获得最终结果。由于需要处理的数据集大小以及计算机系统的计算能力的差异,整个过程有时需要耗费相当长的时间,即获得最终分析处理结果的延迟较大。批处理是最通用的数据处理模式。传统的关系数据库系统、Hadoop以及Spark大数据处理平台等,都采用了这样的数据处理模式,或者以该处理模式为主。由于需要完整地保存整个数据集,并且在上面进行分析处理,比起流式数据处理系统,人们需要投入更多的硬件资源。

批处理系统可以存取已经入库的所有数据,人们可以对数据进行复杂深入的分析,分析处理的延迟以分钟或者小时计。批处理作业(Job)一旦提交,则一直运行,直到获得最终结果或者失败退出,无需用户人工干预。这些作业在整个数据集或者某个子集上执行一系列的分析,产生分析结果。在性能方面,批处理系统主要考虑系统的吞吐能力,而不是单个分析处理任务的处理延迟(Latency)。

在流式数据处理模式里,数据持续到达,系统及时处理新到达的数据,并不断产生输出。处理过的数据一般丢弃掉,当然也可以保存起来。流式数据处理模式强调数据处理的速度(Velocity)。部分原因是数据产生的速度很快,需要及时进行处理。由于流式数据处理系统能够对新到达的数据进行及时的处理,所以它能够给决策者提供最新的事物发展变化的趋势,以便对突发事件进行及时响应,调整应对措施。

实时(Real-time)数据处理系统和流式数据处理系统:
对于批量数据处理系统,当分析处理的响应速度快到一定的程度,这样的系统可以称为实时系统(响应时间达到毫秒级)或者交互式系统(响应时间达到秒级或者亚秒级)。

流式数据处理模式对每个新到达的数据元素(Data Element)或者一个比较小的时间窗口内的数据元素进行计算。数据上的计算或者分析处理相对来讲是比较简单的,不是复杂的分析处理。完成分析处理的时间,需要达到实时或者接近实时的响应时间要求。不同数据元素上的分析处理,相互之间是独立的。流式数据处理系统要尽快完成数据的处理。上游数据源无须等待下游流式数据处理系统处理完毕。

即席查询(Ad-Hoc):
即席查询是用户根据自己的需求,灵活的选择查询条件,系统能够根据用户的选择生成相应的统计报表。即席查询与普通应用查询最大的不同是普通的应用查询是定制开发的,而即席查询是由用户自定义查询条件的。

例如: 在一个电子商务网站,把每月(周、天)所有的交易记录保存起来,然后在固定的时间点,比如月末(周末、日终)进行一些SQL查询分析,这种处理模式就是批处理模式。当然,在系统不断累积交易记录的过程中,比如在某天的中午,管理者想看一下某个商品最近一段时间的销售量,他临时发起一个SQL查询,这个查询就称为即席查询。

猜你喜欢

转载自blog.csdn.net/tsundere_x/article/details/110825145