Big Data Systems - Batch Processing

前言

      Batch Processing System,有时又称为Offline Systems,中文翻译为批处理系统/离线系统。自Hadoop的诞生已来, 这种系统目前已在业界广泛使用。
      本文结合作者多年的工作经验,结合一个体案例,对批处理系统的基本特点、常见架构、常用技术等进行了介绍。
      本文所有内容均为原创,转载请注明出处。

基本介绍

什么是批处理系统?

同时消费所有的输入数据,在一次计算过程中进行处理,产生输出数据。如果在处理部分数据的过程中出现了不可恢复的错误,整个批处理失败。

特点

  • 高吞吐量 -批处理系统能够同时处理大量的数据,并通过增加更多的计算节点横向扩展,因此具有很高的吞吐量。
  • 高延迟 - 单个请求的延迟取决于整个批处理的计算时间,因此批处理系统的延迟很高。常见批处理系统中,数据的处理过程通常需要一定的时间,从几分钟到几小时甚至几天不等,根据业务的需求决定。因为这种系统的处理延迟很高,线上系统根本无法忍受,这种计算又被称为离线计算。

运行模式

由于离线计算通常耗时较长,离线系统的运行模式通常是
  • 系统按某个时刻表,定期地进行计算(例如一天一次),计算完成后结果推送给用户
  • 用户给系统发计算请求,系统进行计算,计算结果异步地推送给用户

具体案例 - 产品销量预测系统

某B2C电商公司,业务涉及百万种商品,因业务需要,搭建产品销量预测系统,以更好地服务于商品的买入与清理,优化库存结构。

用户

  • 采购部门-采购合适树目的商品,用于未来的销售
  • 清仓部门-清楚商品库存,防止积压
  •  ...

系统架构

Big Data Systems - Batch Processing

组成部分

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

参考