这是一本理论高度概括的书,讲解流式处理核心、本质的概念、特性、设计和方法。本书分为两部分:第一部分以Beam的编程模型为抓手讨论流处理的种种核心问题,重点是相对高层次地讨论批处理模型以及流处理模型;第二部分讨论流与表的二象性,即两者之间的类比与差异,对概念进行深入探讨,并讨论关于流处理的“流与表”的思考方式。本书还概要浏览大数据处理系统的家族历史,深入讨论流式系统发展领域的一些重要贡献。此外,本书配有大量的动画示意图,读者可以在线查看相关动图示例。 本书覆盖流式系统的核心理论和本质概念,适合大数据系统爱好者、相关专业学生、数据工程师、数据科学家和开发人员阅读和参考。尽管本书只是流式系统的导论读物,但是仍然需要读者了解大数据处理系统的基本原理并具备相关的使用经验。
1.本书从宏观层面介绍流计算,并介绍处理实时数据流的内容、地点、时间和方式。
2.本书一作泰勒·阿基道是谷歌公司的高级软件工程师、数据处理语言和系统部门的技术负责人,拥有丰富的经验,负责谷歌的Apache Beam、Cloud Dataflow、Flume、MapReduce和MillWheel等内部数据处理工具。他还是Apache Beam PMC的创始成员。
3.本书译者为阿里技术团队,由专门的流式系统技术的推广团队,可以借势推广。
泰勒·阿基道(Tyler Akidau)是谷歌的高级软件工程师、数据处理语言与系统团队的技术负责人,也是Apache Beam PMC的创始成员。 斯拉瓦·切尔尼亚克(Slava Chernyak)是谷歌西雅图办公室的高级软件工程师。他花了6年多的时间研究在谷歌内部使用的大规模流数据处理系统。 鲁文·拉克斯(Reuven Lax)是谷歌西雅图办公室的高级软件工程师,过去十多年他一直在帮助制定谷歌的数据处理和分析的战略。他也是Apache Beam PMC的成员。
第 一部分 Beam模型
第 1章 流式处理入门2
1.1 术语:什么是流3
1.2 数据处理模式9
1.3 小结17
第 2章 数据处理的来龙去脉19
2.1 路线图20
2.2 批基础:定义及位置21
2.3 开始流处理:时机及方法27
2.4 小结44
第3章 水位47
3.1 定义47
3.2 源端水位的创建49
3.3 水位传播53
3.4 百分比水位65
3.5 处理时间水位67
3.6 案例分析69
3.7 小结75
第4章 高级开窗76
4.1 时机/位置:处理时间开窗76
4.2 位置:会话82
4.3 位置:自定义开窗85
4.4 小结95
第5章 精确一次及副作用97
5.1 为什么精确一次这么重要97
5.2 准确性与完整性98
5.3 确保在混洗中精确一次101
5.4 解决确定性102
5.5 性能102
5.6 源端的精确一次105
5.7 汇端的精确一次106
5.8 用例107
5.9 其他系统110
5.10 小结112
第二部分 流和表
第6章 流和表114
6.1 流和表的基础:“流表相对论”的特殊理论115
6.2 批处理与流和表116
6.3 流和表世界的定义、位置、时机和方法121
6.4 “流表相对论”的一般理论137
6.5 小结139
第7章 持久化状态的实践141
7.1 动机141
7.2 隐式状态144
7.3 广义状态149
7.4 小结162
第8章 流式SQL163
8.1 什么是流式SQL163
8.2 回顾:流和表的设计偏好174
8.3 展望:迈向健壮的流式SQL184
8.4 小结204
第9章 流式连接207
9.1 所有连接都是流式连接207
9.2 非开窗连接208
9.3 开窗连接219
9.4 小结234
第 10章 大规模数据处理的演化236
10.1 MapReduce237
10.2 Hadoop241
10.3 Flume242
10.4 Storm247
10.5 Spark250
10.6 MillWheel252
10.7 Kafka256
10.8 Cloud DataFlow259
10.9 Flink261
10.10 Beam265
10.11 小结268