批处理与流处理

大数据基础

Posted by Galvin on August 5, 2019

批处理(Batching Processing)

绝大部分情况,批处理输入数据是 有边界数据(Bounded Data) ,同时输出也是 有边界数据 。更关心的是数据的 事件时间(Event Time)

应用场景
  • 日志分析
  • 计费应用程序
  • 数据仓库
主要项目

由Google MapReduce 衍生出来的 Apache Hadoop 或者 Apache Spark 都是支持批处理架构的 批处理架构有高延迟性

流处理(Streaming Processing)

流处理的输入数据基本都是 无边界数据(Unbounded Data)

  • 网页监控系统这样的流处理系统需要计算网站的QPS,关心的是 处理时间(Processing Time),也就是网页请求数据被监控系统接收到的时间
  • 在一些医疗护理监控系统中,更关心 事件时间(Event Time)
特点
  • 高吞吐量,低延迟
  • 数据到达磁盘之前就已经做了分析
  • 实时监控、实时商业智能、销售终端(POS)系统
主要项目
  • Apache Kafka
  • Apache Flink
  • Apache Storm

发布/订阅模式(Publish/Subscribe Pattern)

消息的发送方可以将消息异步地发送给一个系统中的不同组件,而无需知道接收方是谁。 image

优点
  • 松耦合(Loose Couping)
  • 高伸缩性(High Scalability)
  • 系统间通信更加简介
案例
  • Google Cloud Pub/Sub 平台
  • AWS SNS
  • Apache Kafka:Log offset实现接收响应机制