流处 理与批处理框架
· 阅读需 3 分钟
为什么需要这样的框架?
- 以低延迟处理高吞吐量。
- 分布式系统中的容错能力。
- 通用抽象以满足多变的业务需求。
- 适用于有界数据集(批处理)和无界数据集(流处理)。
批处理/流处理的简史
- Hadoop 和 MapReduce。Google 使批处理在分布式系统中变得简单,如 MR
result = pairs.map((pair) => (morePairs)).reduce(somePairs => lessPairs)
。 - Apache Storm 和 DAG 拓扑。MR 无法有效表达迭代算法。因此,Nathan Marz 将流处理抽象为喷口和螺栓的图。
- Spark 内存计算。Reynold Xin 表示,Spark 使用 10 倍更少的机器 以 3 倍更快 的速度对相同数据进行排序。
- 基于 Millwheel 和 FlumeJava 的 Google Dataflow。Google 支持批处理和流处理计算,使用窗口 API。