本文将探讨大数据系统发展的历史轨迹,旨在以轻松活泼的方式介绍大数据的通俗知识。本文翻译自《Streaming System》的最后一章《The Evolution of Large-Scale Data Processing》,该书在流式系统领域非常独到,值得深入学习。
大数据处理跨越了大约十五年的时间,从Google发布的MapReduce论文开始。本文将简要回顾这十五年的关键变化,并重点介绍流式处理的发展历程。此外,我们还会提及一些知名的大数据处理系统,并提供一些参考资料供读者进一步学习。
本文主要关注MapReduce/Hadoop系统及其衍生系统,不涉及SQL引擎或HPC系统。尽管章节标题听起来涵盖广泛,但实际上聚焦于大数据处理的一个垂直领域。
本文中会提及一些与Google相关的技术,这与作者在Google工作多年的经验有关。另外,Google的技术因其重要性及保密性而备受关注。因此,本文会对Google的一些技术进行较为详细的讨论。
为使大数据旅行更具体和条理化,我们设计了时间表,展示不同系统的诞生日期。每个系统介绍过程中,会尽量概述其历史,并从流式处理系统的角度阐述其贡献。
我们从MapReduce开始,它在2003年由Google工程师开发,目的是解决大数据处理中的三大难题:数据处理、可扩展性和容错。MapReduce通过提供简洁的数据处理API,简化了分布式系统的复杂性,使得工程师可以更专注于业务逻辑。
Hadoop在2005年由Doug Cutting和Mike Cafarella创立,基于Google的MapReduce理念。Hadoop通过开源模式推动了大数据处理工具的生态繁荣。Hadoop不仅影响了大数据领域,也促进了开源社区的发展。
Flume是Google内部MapReduce的继承者,旨在解决MapReduce的一些固有问题,如单个作业无法完成复杂任务。Flume通过提供高级抽象模型和自动优化机制,使得编写清晰、高效的分布式大数据处理逻辑变得更容易。
Apache Storm是第一个广泛应用的流式处理系统。Storm的设计注重实时数据处理的低延迟,而非数据一致性。尽管Storm存在局限性,但它推动了低延迟流式处理的发展。
Spark在2009年诞生于加州大学伯克利分校,最初因内存计算的优势而闻名。Spark Streaming通过强大的批处理引擎简化了流处理系统,使得用户可以避免使用Lambda架构。Spark在流处理、迭代处理和机器学习等领域都有出色表现。
MillWheel是Google最早期的通用流处理架构,它在处理无序数据方面表现出色。MillWheel通过支持乱序数据处理和持久化状态存储等功能,提供了工业级的流处理保障。
Kafka是一个持久的流式数据传输和存储工具,由LinkedIn开发。Kafka通过持久化和可重放性功能,提升了流计算的健壮性和可靠性。Kafka还推动了流和表理论的普及,对数据处理领域产生了深远影响。
Google Cloud DataFlow是一个完全托管的、基于云架构的数据处理服务。DataFlow整合了MapReduce、Flume和MillWheel的经验,提供了一个统一的批流处理模型。DataFlow在正确性、延迟和成本之间取得了良好的平衡。
Flink在2015年迅速崛起,成为一个知名的流式处理引擎。Flink通过采用Dataflow/Beam编程模型和高效的快照机制,提供了强一致性保证。Flink在性能和功能上都有显著优势,推动了整个流处理领域的创新。
Apache Beam是一种编程模型和API设计,旨在成为程序化数据处理的通用语言。Beam提供了一个统一的批量和流式编程模型,支持多种语言和执行引擎。Beam的目标是实现跨语言和跨执行引擎的可移植性。
本文回顾了大数据处理技术在过去十五年中的发展历程,重点介绍了推动流式计算发展的关键系统和思想。MapReduce、Hadoop、Flume、Storm、Spark、MillWheel、Kafka、DataFlow、Flink和Beam各具特色,推动了大数据处理技术的进步。未来,大数据处理仍有许多挑战需要解决。
陈守元(花名:巴真),阿里巴巴高级产品专家,负责阿里实时计算产品的规划与设计,致力于推动Flink成为下一代大数据处理标准。《Streaming System》一书由阿里巴巴实时计算团队翻译,预计今年年底上市,对流式系统感兴趣的读者可以关注。