Big Data Systems - Batch Processing
前言
Batch Processing System,有时又称为Offline Systems,中文翻译为批处理系统/离线系统。自Hadoop的诞生已来, 这种系统目前已在业界广泛使用。本文结合作者多年的工作经验,结合一个体案例,对批处理系统的基本特点、常见架构、常用技术等进行了介绍。
本文所有内容均为原创,转载请注明出处。
基本介绍
什么是批处理系统?
同时消费所有的输入数据,在一次计算过程中进行处理,产生输出数据。如果在处理部分数据的过程中出现了不可恢复的错误,整个批处理失败。特点
- 高吞吐量 -批处理系统能够同时处理大量的数据,并通过增加更多的计算节点横向扩展,因此具有很高的吞吐量。
- 高延迟 - 单个请求的延迟取决于整个批处理的计算时间,因此批处理系统的延迟很高。常见批处理系统中,数据的处理过程通常需要一定的时间,从几分钟到几小时甚至几天不等,根据业务的需求决定。因为这种系统的处理延迟很高,线上系统根本无法忍受,这种计算又被称为离线计算。
运行模式
由于离线计算通常耗时较长,离线系统的运行模式通常是- 系统按某个时刻表,定期地进行计算(例如一天一次),计算完成后结果推送给用户
- 用户给系统发计算请求,系统进行计算,计算结果异步地推送给用户
具体案例 - 产品销量预测系统
某B2C电商公司,业务涉及百万种商品,因业务需要,搭建产品销量预测系统,以更好地服务于商品的买入与清理,优化库存结构。用户
- 采购部门-采购合适树目的商品,用于未来的销售
- 清仓部门-清楚商品库存,防止积压
- ...
系统架构
组成部分
input collection
- 历史销售纪录(historic demand)
- 消费者行为(customer behaviors), 例如消费者的点击数,评论等
- 产品属性(product properties),例如品名、商标、大小等
- 反馈(feedbacks),来自用户(系统的实际用户,例如采购部门)关于预测准确性的反馈
input audit
- 数据丢失检查(missing data check)
- 数据质量检查(data quality check)
transform
- 训练预测模型(train prediction models)
- 预测(predict)
output audit
- 无预测比例检查 (no forecat check)
- 预测统计检查(forecast statistics check)
- ...
publish
- 发布到网站(to website)
- 发布到数据仓库(to DB)
storage
- 输入存储(input storage), 用于存输入,被系统用户使用
- 输出存储(output storage), 用于存输出,被系统用户使用
- 快照数据存储(snapshot data store),被外部用户使用
monitor
- 性能指标(metric),例如输入数据丢失率,系统执行状态等
- 警报(alarm),当某个指标超出预期时,自动报警
- 可视化(visulisation),所有指标都能以图标等形式展示
forecast website
预测网站,主要实现以下功能- 可视化,用户能轻松查询到某个产品过去的销量纪录,未来的销量预测,产品的相关信息等
- 反馈收集,用户能提供及时关于预测准确性的反馈
技术
- 存储 - 主要使用 HDFS 和 HBase。商品粒度的输入输出都存放在HBase中,以商品id作为row key,以同时支持批处理计算和单商品debug、单商品查询等。其他数据存放在HDFS上;
- 计算 - 使用MapReduce框架或Spark进行批处理计算,主要用在transform阶段。特别地,使用Hive、Pig或Spark SQL进行分析计算,主要用于audit阶段。
- 工作流 - 使用Oozie管理调度各批处理job的依赖关系,建立workflow。
- 机器学习 - 使用 Spark Mlib
参考
- Hadoop - http://hadoop.apache.org/
- Spark - https://spark.apache.org/
- HBase - http://hbase.apache.org/
- Hive - https://hive.apache.org/
- Pig - https://hive.apache.org/
- Oozie - http://oozie.apache.org/
- Spark Mlib - http://spark.apache.org/mllib/
- Oozie - http://oozie.apache.org/