流处理和批处理框架
· 阅读需 3 分钟
为什么有这种框架?
- 为了在更短的时间内处理更多的数据。
- 统一处理分布式系统中的容错问题。
- 将任务简化抽象以应对多变的业务要求。
- 分别适用于有界数据集(批处理)和无界数据集(流处理)。
批处理与流处理的发展史简介
- Hadoop 与 MapReduce。谷歌让批处理在一个分布式系统中像 MapRduce
result = pairs.map((pair) => (morePairs)).reduce(somePairs => lessPairs)
一样简单。 - Apache Storm 与有向图拓扑结构。MapReduce 不能很好地表示迭代算法。因此,内森·马兹(Nathan Marz)将流处理抽象成一个由 spouts 和 bolts 组件构成的图结构。
- Spark 内存计算。辛湜(Reynold Xin)指出 Spark 在处理相同数据的时候比 Hadoop 少使用十倍机器的同时速度却快三倍
- 基于 Millwheel 和 FlumeJava 的谷歌数据流(Google Dataflow)。谷歌使用窗口化API同时支持批处理与流处理。