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

Flink设计与实现:核心原理与源码解析
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2021-09
ISBN: 9787111687832
定价: 129.00
13人买过
  • 这是一本从源代码角度剖析Flink设计思想、架构原理以及各功能模块的底层实现原理的著作。 
    作者是Flink领域的资深技术专家和架构师,对Flink的源代码进行了深入分析和解读,同时融入了自己丰富的工程实践经验,既能让理解Flink的设计与实现原理,又能为他们解决性能优化等实际应用问题提供源码级别的指导。源码大多艰涩难懂,为了降低读者的学习门槛,本书提供了大量架构设计图、UML图和代码注释。 
    通过阅读本书,你将: 
    l  彻底掌握Flink源码设计与实现 
    l  深度掌握Flink作业运行流程 
    l  深入了解Flink部署模式实现原理 
    l  深度掌握Flink Runtime设计和实现原理 
    l  庖丁解牛Flink网络通信原理 
    l  探索Flink内存管理实现 
    l  深入了解Flink接口设计 
    l  从Flink源码中学习架构设计经验 

    张利兵 
    资深大数据专家和架构师,现任第四范式AI数据平台架构师,曾就职于明略数据。Apache Flink的贡献者,对Flink有非常深入的研究。 
    长期从事大数据架构落地以及机器学习平台与数据平台研发架构工作,在Hadoop、Spark、机器学习等方面积累了丰富的经验。先后参与和主导了银行、证券、地铁等领域的大数据平台的架构设计与实现。 
    《Flink原理、实战与性能优化》作者,极客时间《Flink原理与实战》专栏作者。获得Cloudera CCAH认证、Cloudera SEBC认证以及Cloudera认证,拥有非常丰富的写作和授课经验。 

    前 言 
    第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
  • 内容简介:
    这是一本从源代码角度剖析Flink设计思想、架构原理以及各功能模块的底层实现原理的著作。 
    作者是Flink领域的资深技术专家和架构师,对Flink的源代码进行了深入分析和解读,同时融入了自己丰富的工程实践经验,既能让理解Flink的设计与实现原理,又能为他们解决性能优化等实际应用问题提供源码级别的指导。源码大多艰涩难懂,为了降低读者的学习门槛,本书提供了大量架构设计图、UML图和代码注释。 
    通过阅读本书,你将: 
    l  彻底掌握Flink源码设计与实现 
    l  深度掌握Flink作业运行流程 
    l  深入了解Flink部署模式实现原理 
    l  深度掌握Flink Runtime设计和实现原理 
    l  庖丁解牛Flink网络通信原理 
    l  探索Flink内存管理实现 
    l  深入了解Flink接口设计 
    l  从Flink源码中学习架构设计经验 

  • 作者简介:
    张利兵 
    资深大数据专家和架构师,现任第四范式AI数据平台架构师,曾就职于明略数据。Apache Flink的贡献者,对Flink有非常深入的研究。 
    长期从事大数据架构落地以及机器学习平台与数据平台研发架构工作,在Hadoop、Spark、机器学习等方面积累了丰富的经验。先后参与和主导了银行、证券、地铁等领域的大数据平台的架构设计与实现。 
    《Flink原理、实战与性能优化》作者,极客时间《Flink原理与实战》专栏作者。获得Cloudera CCAH认证、Cloudera SEBC认证以及Cloudera认证,拥有非常丰富的写作和授课经验。 

  • 目录:
    前 言 
    第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
查看详情
12
相关图书 / 更多
您可能感兴趣 / 更多
Flink设计与实现:核心原理与源码解析
Flink原理、实战与性能优化
张利兵 著