作品简介

本书以核心概念和基本应用为脉络,介绍Flink的核心特性(如检查点机制、时间与窗口、混洗机制等)、任务部署、DataStream API、DataSet API、Table API的应用以及运行时原理等内容。每章先对概念进行基本介绍,然后基于应用实例详细分析Flink的设计思想和源码实现,逐步引领读者掌握定制化的开发特性并提升性能,让读者对Flink的理解有质的飞跃。本书内容是作者多年工作实践的总结,能够帮助读者实现真实的企业级需求。

本书适合想要学习Flink设计原理并希望对Flink进行定制化开发的平台开发工程师,需要进行架构设计和技术选型的架构师与项目经理,以及计算机相关专业的学生阅读。

黄伟哲,约翰斯·霍普金斯大学硕士,架构师、软件开发工程师、咨询师,Spark Contributor。《人工智能技术与大数据》译者,目前就职于美团。在开源大数据框架的应用与特性开发方面有丰富的经验。

作品目录

  • 内容提要
  • 序  一
  • 序  二
  • 前  言
  • 资源与支持
  • 第一部分 设计思想篇
  • 第1章 序篇
  • 1.1 Flink的诞生与发展
  • 1.2 Flink的应用场景
  • 1.3 Flink的核心特性与架构
  • 1.4 准备工作
  • 1.5 总结
  • 第2章 Flink编程
  • 2.1 API层级
  • 2.2 DataStream API
  • 2.3 DataSet API
  • 2.4 Table API
  • 2.5 SQL
  • 2.6 总结
  • 第3章 Flink API层的实现原理
  • 3.1 DataStream API
  • 3.2 DataSet API
  • 3.3 Table API和SQL
  • 3.4 总结
  • 第4章 Flink的执行图
  • 4.1 StreamGraph的生成
  • 4.2 Plan的生成
  • 4.3 从StreamGraph到JobGraph
  • 4.4 从Plan到JobGraph
  • 4.5 从JobGraph到ExecutionGraph
  • 4.6 总结
  • 第5章 Flink的运行时架构
  • 5.1 客户端代码的运行
  • 5.2 高可用相关组件
  • 5.3 派发器的初始化与启动
  • 5.4 资源管理器的初始化与启动
  • 5.5 TaskExecutor的初始化与启动
  • 5.6 JobMaster的初始化与启动
  • 5.7 总结
  • 第6章 任务调度
  • 6.1 调度器
  • 6.2 调度拓扑
  • 6.3 调度策略
  • 6.4 调度过程的实现
  • 6.5 任务的部署
  • 6.6 Execution对象在调度过程中的行为
  • 6.7 总结
  • 第7章 任务的生命周期
  • 7.1 任务的提交
  • 7.2 任务的初始化
  • 7.3 任务的执行
  • 7.4 总结
  • 第8章 数据传输
  • 8.1 基本概念与设计思想
  • 8.2 数据的输出
  • 8.3 数据的读取
  • 8.4 反压机制的原理
  • 8.5 总结
  • 第9章 时间与窗口
  • 9.1 基本概念和设计思想
  • 9.2 WindowedStream
  • 9.3 窗口相关模型的实现
  • 9.4 WindowOperator
  • 9.5 水位线
  • 9.6 定时器
  • 9.7 总结
  • 第10章 状态与容错
  • 10.1 基本概念与设计思想
  • 10.2 状态存储
  • 10.3 状态恢复
  • 10.4 状态的重分配策略
  • 10.5 总结
  • 第二部分 特性开发篇
  • 第11章 动态调整并行度
  • 11.1 模型设计
  • 11.2 指标收集
  • 11.3 指标管理
  • 11.4 总结
  • 第12章 自适应查询执行
  • 12.1 Flink框架下的自适应查询执行
  • 12.2 统计信息的收集
  • 12.3 执行图与调度拓扑的修改
  • 12.4 上下游关系的建立
  • 12.5 总结
  • 第13章 Flink Sort-Merge Shuffle
  • 13.1 混洗机制的对比
  • 13.2 Flink混洗机制
  • 13.3 Blink混洗的数据流转
  • 13.4 Blink混洗的Sort-Merge过程
  • 13.5 文件的读取和元信息管理
  • 13.6 总结
  • 第14章 修改检查点的状态
  • 14.1 状态修改的原理
  • 14.2 状态处理器API
  • 14.3 总结
  • 附录A 资源管理
  • A.1 TaskSlot与TaskSlotTable
  • A.2 槽的注册与申请
  • A.3 物理槽与槽资源池
  • A.4 给任务分配槽
  • A.5 共享槽
  • A.6 组件间的交互
  • A.7 总结
  • 附录B 类型系统
  • B.1 主要数据类型
  • B.2 类型的指定
  • B.3 类型信息的提取
  • B.4 数据的序列化与反序列化
  • B.5 总结
展开全部