数据收集和存储后,通常无法立即用于分析或应用。它需要进行处理。处理此问题最常见且成熟的方法之一是批处理。
设想一下你的邮寄信件。它不会在一天中零散地送达。相反,邮递员会收集你路线上的所有邮件,然后一次性(通常每天一次)递送。数据工程中的批处理工作原理类似:数据在一段时间内收集,然后作为一个大组或“批次”一起处理。
什么是批处理?
批处理涉及执行处理长时间收集的大量数据的任务。这些任务通常在预定的时间间隔(如每晚或每周)运行,或者当累计数据达到特定大小时触发。批处理系统不会在每条数据到达时立即处理,而是等待并一次性处理大量数据块。
设想一下公司如何生成客户账单。他们通常不会在服务使用后立即发送账单。相反,他们会收集一个月的用量数据,然后在月底运行一个批处理任务,处理所有客户的所有用量记录,计算应付款项,并生成发票。
批处理如何运作
典型流程如下所示:
- 数据收集: 来自各种来源(如日志、用户活动、传感器读数)的数据随着时间在存储系统(如文件系统或数据库暂存区)中积累。
- 任务调度: 处理任务被安排在特定时间(例如,每天凌晨2:00)运行,或者由某个事件触发(例如,当输入数据文件夹达到10 GB时)。
- 处理: 批处理任务启动,读取整个累计数据块,执行所需的转换(如清洗、聚合、丰富),并计算结果。
- 输出存储: 处理后的结果被写入目标系统,例如数据仓库、数据库或文件,以备报告或分析之用。
此循环在每个处理间隔重复。
数据从各种来源积累,由计划任务批量处理,结果存储以备后续使用。
批处理的特点
- 处理大量数据: 批处理擅长高效处理超大数据集。批量处理数据可以实现逐个处理单条记录时无法实现的优化。
- 高延迟: 结果无法立即获得。从数据生成到处理结果就绪之间存在延迟(等待时间)。此延迟取决于批处理计划(例如,每日批处理意味着数据可能长达24小时未更新)。
- 资源密集型(计划性): 批处理任务通常需要大量计算资源(CPU、内存、I/O),但这种使用集中在计划的处理时段内。这可以节约成本,因为资源不需要持续活跃。
- 面向吞吐量: 主要目标是高吞吐量,意味着在给定时间内处理大量数据,而不是低延迟。
常见应用场景
批处理非常适合许多不严格要求实时结果的任务:
- 数据仓库: 使用大量事务数据填充和更新数据仓库,用于商业智能和报告。这通常在夜间进行。
- 计费系统: 根据累计的用量数据生成月度或定期发票。
- 工资处理: 在一个工资周期结束时,计算所有员工的工资和扣款。
- 大规模数据转换: 对大型数据集进行复杂的数据清洗、格式化和聚合任务。
- 报告生成: 生成需要处理大量历史数据的复杂汇总报告。
- 机器学习模型训练: 模型训练通常涉及处理大型静态数据集,这与批处理模型非常契合。
优点与缺点
优点:
- 效率: 优化用于高效处理大量数据。
- 简易性: 对于那些自然符合计划性、非实时模式的任务,实施和管理可以更简单。
- 成本效益高: 资源可以在批处理任务运行期间临时配置,与常开系统相比,可能降低成本。
缺点:
- 延迟: 数据新鲜度受批处理间隔限制。不适用于需要即时信息或操作的场景。
- 资源峰值: 在处理时段内可能需要大量的临时资源。
批处理是数据工程中的一项基本技术,对于涉及大型数据集且不以即时结果为主要考量的任务,它尤为有效。它构成了许多传统数据仓库和报告系统的核心。理解批处理为我们后续学习其对应部分——流处理——打下良好基础。