了解批处理和流处理
了解批处理和流处理
了解批处理和流处理
数据处理就是通过某个过程将原始数据转换为有意义的信息。 有两种用于处理数据的一般方法:
- 批处理,在此方法中,收集并存储多项数据记录,然后在一次操作中一起处理它们。
- 流处理,在此方法中,持续监视数据源,并在出现新数据事件时实时处理数据源。
了解批处理
在批处理中,收集并存储新到达的数据元素,整个组以批处理方式一起处理。 处理每个组的确切时间可以通过多种方式来确定。 例如,可以根据计划的时间间隔(例如,每小时)处理数据,也可以在到达特定数量的数据时触发数据处理,或者作为某些其他事件的结果进行处理。
例如,假设你想通过计算一段道路上的汽车数目来分析道路交通。 在此情况下,批处理方法将要求你在停车场收集汽车,然后在这些汽车处于静止状态时在一次操作中对其进行计数。
如果道路繁忙,大量汽车在路上频繁行驶,则此方法可能不切实际;请注意,在停止一批汽车并对其进行计数之前,你不会获得任何结果。
批处理的一个现实生活中的例子就是信用卡公司处理账单的方式。 客户不会收到每笔信用卡消费的帐单,而是当月所有消费的月度账单。
批处理的优点包括:
- 可以在方便的时间处理大量数据。
- 可以计划在计算机或系统可能处于空闲状态(如整夜)或在非高峰时间运行。
批处理的缺点包括:
- 引入数据和获取结果之间的时间延迟。
- 在执行批处理之前,必须准备好批处理作业的所有输入数据。 这意味着必须仔细检查数据。 在批处理作业期间发生的数据问题、错误和程序崩溃会使整个进程停止运行。 必须仔细检查输入数据,然后才能再次运行作业。 即使是微小的数据错误也可能会阻止批处理作业运行。
了解流处理
在流式处理中,每个新数据在到达时就会得到处理。 与批处理不同,不存在等待下一批要处理的数据的情况,而是将数据作为独立单位实时进行处理,不视为一次处理一个的批次。 在连续生成新动态数据的情况下,流式数据处理非常有用。
例如,解决我们假设的汽车计数问题的一种更好的方法可能是应用流方法,具体操作是在汽车经过时实时对其进行计数:
在此方法中,无需等到所有汽车都停止才开始处理它们,并且可以通过时间间隔聚合数据;例如,通过计算每分钟经过的汽车数目。
流数据的现实生活中的示例包括:
- 金融机构会实时跟踪股票市场的变化,计算风险值,并根据股票价格变动自动重新平衡投资组合。
- 在线游戏公司收集有关玩家游戏交互的实时数据,并将数据馈送到其游戏平台。 然后,它会实时分析数据,提供奖励和动态体验来吸引玩家。
- 一个房地产网站需要跟踪移动设备中的数据子集,并基于其地理位置对要访问的房产提供实时房产建议。
流处理非常适合需要实时响应的时间关键操作。 例如,监控建筑物烟雾和热量的系统需要触发警报并为门解锁,以便在发生火灾时居民能够立即逃离。
了解批处理数据和流式处理数据之间的差异
批处理和流式处理之间除了处理数据的方式以外,还有一些其他不同之处:
- 数据范围:批处理可处理数据集中的所有数据。 流式处理通常只能访问接收到的最新数据,或在滚动时间范围(例如过去 30 秒)内访问。
- 数据大小:批处理适用于高效处理大型数据集。 流式处理适用于单个记录或包含少量记录的小批数据。
- 性能:延迟是接收和处理数据所需的时间。批处理的延迟通常是几个小时。 流式处理通常会立即发生,延迟以秒或毫秒计。
- 分析:通常使用批处理来执行复杂的分析。流式处理用于简单的响应功能、聚合或计算(例如移动平均值)。
结合批处理和流式处理
许多大规模分析解决方案包括批处理和流处理的混合,同时支持历史和实时数据分析。 流处理解决方案通常捕获实时数据,通过筛选或聚合这些数据对其进行处理,并通过实时仪表板和可视化效果呈现它们(例如,显示当前一小时内经过道路的行驶的汽车总数),同时也将处理后的结果保存在数据存储中,以便与批处理数据一起用于历史分析(例如,用于分析过去一年的交通量)。
即使不需要对数据进行实时分析或可视化,也经常使用流技术来捕获实时数据并将其存储在数据存储中,以供后续进行批处理(这相当于将沿道路行驶的所有汽车重定向到停车场,然后再对其进行计数)。
下图显示了可在大规模数据分析体系结构中结合批处理和流处理的一些方法。
- 实时捕获来自流数据源的数据事件。
- 将来自其他源的数据引入到数据存储(通常是数据湖)供进行批处理。
- 如果不需要实时分析,将捕获的流数据写入到数据存储以供后续进行批处理。
- 在需要实时分析时,使用流处理技术来准备供实时分析或可视化的流数据;通常通过筛选或聚合临时窗口的数据。
- 定期对非流数据进行批处理,以准备用于分析,并将结果保存在分析数据存储(通常称为数据仓库)中供进行历史分析。
- 流处理的结果也可以保存在分析数据存储中,以支持历史分析。
- 使用分析和可视化工具来显示和浏览实时和历史数据。
注意:结合的批数据处理和流数据处理的常用解决方案体系结构包括 lambda 和 delta 体系结构。 这些体系结构的详细信息不在本课程的范围之内,但它们包含用于大规模批数据处理和实时流处理的技术,以创建端到端分析解决方案。
本文原文来自Microsoft官方文档