[套装书]Flink技术内幕:架构设计与实现原理+Flink设计与实现:核心原理与源码解析(2册)

作者
罗江宇 赵士杰 李涵淼 闵文俊 等
丛书名
大数据技术丛书
出版社
机械工业出版社
ISBN
9782112161642
简要
简介
内容简介书籍计算机书籍 ---------------------------8084940 - Flink技术内幕:架构设计与实现原理--------------------------- 内容简介 这是一部从源代码角度出发,通过分析Flink的各个功能模块的实现来剖析Flink的架构设计和实现原理的著作。它将能指导读者更好地对Flink进行性能调优、可用性保障、效能优化和二次开发。 四位作者都是非常资深的Flink专家,部分作者是Flink源代码的维护者和改造者,本书总结了他们在阿里巴巴、蚂蚁集团、滴滴等企业的大规模Flink实践经验。 全书共11章,主要内容如下。 第1章 阅读Flink源代码前的准备 主要介绍了Flink源代码的获取、编译、调试,以及它的目录结构、设计理念和基本架构。此外,还分析了Flink与Hadoop MapReduce、Spark在设计上的差异。 第2~8章 Flink功能模块源代码和架构解析 从源码角度分析了Flink的编程模型与API、运行时组件与通信、状态管理与容错、任务提交与执行、Flink网络栈、Flink Connector、部署模式等功能模块的原理。力求让读者深入理解Flink的原理,而不只是跟着本书读一遍Flink源代码。原理和思想是不局限于某一个框架和技术,了解了Flink的原理和思想,可以将其扩展到其他框架和技术上。 第9~10章 Flink Table、SQL与Flink CEP 编程方式逐渐从原先基于Map-Reduce的任务模式向SQL化演进,SQL意味着标准和效率。这两章重点讲解了StreamTableEnvironment的实现过程、SQL的解析过程、Table Connector以及Flink CEP的内部实现原理。 第11章 Flink监控 主要讲解了Flink的监控指标、常用系统指标和监控体系的建设,以及常用的定位手段。 . ---------------------------8083126 - Flink设计与实现:核心原理与源码解析--------------------------- 内容简介 这是一本从源代码角度剖析Flink设计思想、架构原理以及各功能模块的底层实现原理的著作。 作者是Flink领域的资深技术专家和架构师,对Flink的源代码进行了深入分析和解读,同时融入了自己丰富的工程实践经验,既能让理解Flink的设计与实现原理,又能为他们解决性能优化等实际应用问题提供源码级别的指导。源码大多艰涩难懂,为了降低读者的学习门槛,本书提供了大量架构设计图、UML图和代码注释。 通过阅读本书,你将: ?彻底掌握Flink源码设计与实现 ?深度掌握Flink作业运行流程 ?深入了解Flink部署模式实现原理 ?深度掌握Flink Runtime设计和实现原理 ?庖丁解牛Flink网络通信原理 ?探索Flink内存管理实现 ?深入了解Flink接口设计 ?从Flink源码中学习架构设计经验
目录
[套装书具体书目]
8083126 - Flink设计与实现:核心原理与源码解析 - 9787111687832 - 机械工业出版社 - 定价 129
8084940 - Flink技术内幕:架构设计与实现原理 - 9787111696292 - 机械工业出版社 - 定价 99



---------------------------8084940 - Flink技术内幕:架构设计与实现原理---------------------------


前 言
第1章 阅读Flink源代码前的准备 1
1.1 环境准备 1
1.2 获取、编译和调试Flink的源代码 4
1.2.1 获取与导入Flink源代码 4
1.2.2 编译与调试Flink源代码 6
1.3 Flink源代码的结构 9
1.4 Flink设计理念与基本架构 11
1.4.1 Flink与主流计算引擎对比 11
1.4.2 Flink基本架构 14
1.5 本章小结 17
第2章 编程模型与API 18
2.1 DataStream 18
2.2 算子 21
2.3 窗口 28
2.3.1 窗口的基本概念 28
2.3.2 窗口的执行流程 30
2.3.3 窗口分配器 32
2.3.4 触发器 37
2.3.5 窗口函数 41
2.4 本章小结 43
第3章 运行时组件与通信 44
3.1 运行时组件 44
3.1.1 REST 45
3.1.2 Dispatcher 54
3.1.3 ResourceManager 61
3.1.4 JobMaster 75
3.1.5 TaskExecutor 85
3.2 组件间通信 95
3.2.1 Akka与Actor模型 95
3.2.2 组件间通信实现 99
3.3 运行时组件的高可用 117
3.3.1 Master节点上组件的高可用 117
3.3.2 现有运行时组件高可用存在的问题及其解决方案 126
3.4 本章小结 128
第4章 状态管理与容错 129
4.1 状态 129
4.1.1 状态的原理与实现 129
4.1.2 状态生存时间的原理与实现 134
4.2 检查点 137
4.2.1 检查点机制原理 137
4.2.2 检查点执行过程 137
4.2.3 任务容错 140
4.3 状态后端 143
4.4 本章小结 148
第5章 任务提交与执行 149
5.1 任务提交整体流程 149
5.2 DAG转换 152
5.2.1 DAG的4层转换 152
5.2.2 WordCount转换过程 152
5.3 Slot分配 160
5.3.1 相关概念和实现类 160
5.3.2 Slot申请流程 162
5.3.3 任务部署 168
5.4 任务执行机制 170
5.4.1 任务执行过程 170
5.4.2 MailBox线程模型 174
5.5 本章小结 177
第6章 Flink网络栈 178
6.1 内存管理 178
6.2 网络传输 182
6.2.1 什么是Flink网络栈 182
6.2.2 非流控模型的网络传输流程 184
6.2.3 流控模型的网络传输流程 197
6.3 流批一体的shuffle架构 199
6.3.1 生命周期管理 199
6.3.2 数据shuffle 207
6.4 本章小结 208
第7章 Flink Connector的设计与实现 209
7.1 Kafka Connector实现原理 209
7.1.1 Kafka Source Connector实现 209
7.1.2 Kafka Sink Connector 实现 216
7.2 HBase Table Connector 实现原理 220
7.2.1 HBase Source Connector和Sink Connector的工厂实现 221
7.2.2 HBase维表实现 222
7.3 本章小结 224
第8章 部署模式 225
8.1 Local部署 225
8.2 Standalone部署 228
8.3 Flink on YARN模式 240
8.3.1 YARN基本架构 240
8.3.2 Flink on YARN模式介绍 241
8.3.3 Flink on YARN启动过程 243
8.4 Flinkon Kubernetes模式 260
8.5 本章小结 265
第9章 Flink Table与SQL 266
9.1 StreamTableEnvironment类介绍 266
9.1.1 StreamExecution-Environment类 267
9.1.2 EnvironmentSettings类 267
9.1.3 TableConfig类 268
9.1.4 StreamTableEnvironment的创建过程 269
9.2 SQL解析过程 270
9.2.1 SQL解析 270
9.2.2 SQL优化 277
9.2.3 RelNode转换 279
9.3 Table Connector 281
9.3.1 TableSource 282
9.3.2 TableSink 286
9.3.3 SPI机制在Table Connector中的应用 288
9.4 UDF与内置算子 292
9.4.1 UDF 292
9.4.2 内置算子 294
9.5 本章小结 297
第10章 Flink CEP 原理解析 298
10.1 CEP的基本概念 298
10.1.1 什么是Flink CEP 298
10.1.2 Pattern 298
10.1.3 量词 300
10.1.4 条件 301
10.1.5 连接 302
10.1.6 Flink CEP作业编写举例 302
10.2 CEP内部实现原理 304
10.2.1 NFA简介 305
10.2.2 匹配过程 305
10.2.3 CEP状态存储 310
10.2.4 CEP和SQL结合 313
10.3 本章小结 315
第11章 Flink监控 316
11.1 监控指标 316
11.1.1 指标类型 316
11.1.2 系统指标及自定义指标 318
11.1.3 指标的使用 319
11.2 常用系统指标 322
11.3 监控体系建设 324
11.3.1 指标监控及展示 324
11.3.2 日志分析处理 326
11.3.3 定位手段 326
11.4 本章小结 327



---------------------------8083126 - Flink设计与实现:核心原理与源码解析---------------------------


前 言
第1章 Flink设计理念与基本架构 1
1.1 Flink基本设计思想 1
1.1.1 Stratosphere系统架构 1
1.1.2 DataFlow模型的设计思想 3
1.1.3 分布式异步快照算法 6
1.2 Flink整体架构 9
1.2.1 架构介绍 9
1.2.2 Flink集群架构 11
1.2.3 核心概念 12
1.3 Flink源码分析与编译 14
1.3.1 源码编译 14
1.3.2 源码调试环境搭建 15
1.4 本章小结 19
第2章 DataStream的设计与实现 20
2.1 DataStream API的主要组成 20
2.1.1 DataStream API应用实例 20
2.1.2 Transformation详解 23
2.2 StreamOperator的定义与实现 25
2.2.1 StreamOperator接口实现 26
2.2.2 OneInputStreamOperator与TwoInputStreamOperator 31
2.2.3 StreamOperatorFactory详解 33
2.3 Function的定义与实现 35
2.3.1 RichFunction详解 36
2.3.2 SourceFunction与SinkFunction 38
2.3.3 ProcessFunction的定义与实现 44
2.4 TimerService的设计与实现 47
2.4.1 时间概念与Watermark 47
2.4.2 TimerService时间服务 53
2.5 DataStream核心转换 59
2.5.1 KeyedStream与物理分区 59
2.5.2 WindowedStream的设计与实现 62
2.6 本章小结 68
第3章 运行时的核心原理与实现 69
3.1 运行时的整体架构 69
3.1.1 运行时整体架构概览 69
3.1.2 集群的启动与初始化 72
3.2 运行时组件的创建和启动 79
3.2.1 集群组件的创建和启动 79
3.2.2 WebMonitorEndpoint的创建与初始化 85
3.2.3 Dispatcher的创建与初始化 91
3.2.4 ResourceManager的创建与初始化 98
3.2.5 TaskManager的创建与启动 106
3.3 集群资源管理 115
3.3.1 ResourceManager详解 116
3.3.2 ResourceManagerGateway接口实现 118
3.3.3 Slot计算资源管理 119
3.4 系统高可用与容错 130
3.4.1 HighAvailabilityServices的设计与实现 130
3.4.2 基于ZooKeeper实现高可用 135
3.4.3 JobGraphStore的设计与实现 141
3.5 本章小结 144
第4章 任务提交与执行 145
4.1 客户端作业提交 145
4.1.1 命令行提交 145
4.1.2 创建和初始化CLIFrontend 148
4.1.3 PackagedProgram构造 150
4.2 ExecutionEnvironment初始化 152
4.2.1 ExecutionEnvironment类型 152
4.2.2 StreamExecutionEnvironment详解 154
4.3 将Pipeline转换成JobGraph 161
4.3.1 用Transformation生成StreamGraph 162
4.3.2 将StreamGraph转换为JobGraph 169
4.3.3 将JobGraph提交到集群运行时 176
4.4 JobGraph的接收与运行 178
4.4.1 JobGraph提交整体流程 178
4.4.2 Dispatcher任务与分发 180
4.4.3 JobManager启动与初始化 184
4.4.4 JobMaster详解 188
4.5 ExecutionGraph的调度与执行 195
4.5.1 ExecutionGraph生成 198
4.5.2 SchedulerNG调度器 200
4.6 Task的执行与注销 206
4.6.1 Task的启动与注销 208
4.6.2 AbstractInvokable的加载与初始化 211
4.6.3 StreamTask详解 212
4.6.4 StreamTask线程模型 216
4.6.5 Task重启与容错策略 223
4.7 本章小结 234
第5章 集群部署模式 235
5.1 基本概念 235
5.1.1 ClusterClient的创建与获取 235
5.1.2 ClusterEntrypoint集群启动类 241
5.2 Flink On Yarn的设计与实现 245
5.2.1 Yarn架构的设计与实现 245
5.2.2 Session集群的部署与启动 247
5.2.3 YarnResourceManager详解 253
5.3 Flink On Kubernetes的设计与实现 258
5.3.1 Flink On Kubernetes架构 259
5.3.2 Session集群的部署与启动 261
5.3.3 KubernetesResourceManager详解 268
5.4 本章小结 274
第6章 状态管理与容错 275
6.1 状态数据管理 275
6.1.1 状态数据类型 275
6.1.2 状态初始化流程 279
6.2 KeyedState的创建与管理 285
6.2.1 KeyedStateBackend的整体设计 285
6.2.2 HeapKeyedStateBackend的实现 286
6.3 OperatorState的创建与管理 295
6.3.1 OperatorStateBackend的整体设计 295
6.3.2 基于DefaultOperatorState-Backend创建OperatorState 296
6.4 StateBackend详解 299
6.4.1 StateBackend的整体设计 299
6.4.2 MemoryStateBackend的实现 303
6.5 Checkpoint的设计与实现 308
6.5.1 Checkpoint的实现原理 308
6.5.2 Checkpoint的触发过程 315
6.6 本章小结 341
第7章 网络通信 342
7.1 集群RPC通信机制 342
7.1.1 Flink RPC框架的整体设计 342
7.1.2 AkkaRpcService详解 347
7.1.3 RpcServer动态代理实现 357
7.1.4 AkkaRpcActor的设计与实现 360
7.1.5 集群组件之间的RPC通信 363
7.2 NetworkStack的设计与实现 371
7.2.1 NetworkStack概览 371
7.2.2 StreamTask数据流 374
7.2.3 RecordWriter详解 384
7.2.4 ShuffleMaster与Shuffle-Environment 394
7.2.5 ResultPartition与InputGate详解 410
7.2.6 ConnectManager的设计与实现 424
7.2.7 NetworkBuffer资源管理 449
7.3 基于信用值的反压机制实现 463
7.3.1 反压机制理论基础 463
7.3.2 基于信用值的反压机制详解 466
7.4 本章小结 475
第8章 内存管理 476
8.1 内存管理概述 476
8.1.1 积极的内存管理 476
8.1.2 Flink内存模型 478
8.2 MemorySegment的设计与实现 479
8.2.1 MemorySegment架构概览 480
8.2.2 MemorySegment详解 481
8.2.3 MemorySegment内存使用 486
8.3 DataInputView与DataOutputView 489
8.3.1 DataInputDeserializer和DataOutputSerializer 491
8.3.2 DataInputViewStreamWrapper与DataOutputViewStreamWrapper 494
8.3.3 AbstractPagedInputView与AbstractPagedOutputView 495
8.4 数据序列化与反序列化 501
8.4.1 TypeInformation类型系统 501
8.4.2 RecordSerializer与RecordDeserializer 508
8.5 本章小结 515

推荐

车牌查询
桂ICP备20004708号-3