# Flink设计与实现-核心原理与源码解析 **Repository Path**: xiehongwang/flink-source-code-book ## Basic Information - **Project Name**: Flink设计与实现-核心原理与源码解析 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 10 - **Created**: 2021-09-25 - **Last Updated**: 2021-09-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 目录 ### 第1章 设计理念与基本架构 5 #### 1.1 基本设计思想 5 [1.1.1 Stratosphere系统架构 5]() 1.1.2 DataFlow模型的设计思想 8 1.1.3 分布式一致快照算法 11 #### 1.2 Flink整体架构 15 1.2.1 架构介绍 15 1.2.2 Flink集群架构 19 1.2.3 核心概念介绍 20 #### 1.3 Flink源码分析与编译 23 1.3.1 源码编译 23 1.3.2 源码调试环境搭建 24 ## 第2章 DataStream设计与实现 29 ### 2.1 DataStream API的主要组成 29 2.1.1 DataStream API应用实例 29 2.1.2 Transformation详解 33 ### 2.2 StreamOperator的定义与实现 36 2.2.1 StreamOperator接口实现 37 2.2.2 OneInputStreamOperator与TwoInputStreamOperator 43 2.2.3 StreamOperatorFactory详解 46 ### 2.3 Function定义与实现 49 2.3.1 RichFunction详解 50 2.3.2 SourceFunction与SinkFunction 53 2.3.3 ProcessFunction的定义与实现 61 ### 2.4 TimerService的设计与实现 65 2.4.1 时间概念与Watermark 65 2.4.2 TimerService时间服务 73 2.5 DataStream核心转换 80 2.5.1 KeyedStream与物理分区 80 2.5.2 WindowedStream设计与实现 84 ## 第3章 Runtime核心原理与实现 93 ### 3.1 Runtime整体架构 93 3.1.1 Runtime整体概览 93 3.1.2 集群启动与初始化 96 3.2 Runtime组件创建和启动 104 3.2.1 集群组件创建和启动 104 3.2.2 WebMonitorEndpoint的创建与初始化 112 3.2.3 Dispatcher创建与初始化 122 3.2.4 ResourceManager创建与始化 130 3.2.5 TaskManager创建与启动 140 ### 3.3 集群资源管理 154 3.3.1 ResourceManager详解 154 3.3.2 ResourceManagerGateway接口实现 157 3.3.3 Slot计算资源管理 159 ### 3.4 系统高可用与容错 175 3.4.1 HighAvailabilityServices的设计与实现 175 3.4.2 基于Zookeeper实现高可用 181 3.4.3 JobGraphStore的设计与实现 190 ## 第4章 任务提交与执行 193 ### 4.1 客户端作业提交 193 4.1.1 命令行提交 193 4.1.2 创建和初始化CLIFrontend 195 4.1.3 PackagedProgram构造 198 ### 4.2 ExecutionEnvironment初始化 202 4.2.1 ExecutionEnvironment类型 202 4.2.2 StreamExecutionEnvironment详解 204 ### 4.3 Pipeline转换成JobGraph 214 4.3.1 Transformations生成Pipeline 215 4.3.2 StreamGraph转换为JobGraph 224 4.3.2 提交JobGraph到集群运行时 233 ### 4.4 JobGraph接收与运行 237 4.4.1 JobGraph提交整体流程 237 4.4.2 Dispatcher任务与分发 239 4.4.3 JobManager启动与初始化 244 4.4.4 JobMaster详解 251 ### 4.5 ExcutionGraph调度与执行 260 4.5.1 ExcutionGraph生成 262 4.5.2 SchedulerNG调度器 265 ### 4.6 Task执行与注销 274 4.6.1 Task启动与注销 276 4.6.2 AbstractInvokable加载与初始化 280 4.6.3 StreamTask详解 282 4.6.4 StreamTask线程模型 287 4.6.5 Task重启与容错策略 298 ## 第5章 集群部署模式 313 ### 5.1 基本概念 313 5.1.1 ClusterClient的创建与获取 313 5.1.2 ClusterEntrypoint集群启动类 319 ### 5.2 Flink On Yarn的设计与实现 324 5.2.1 Yarn架构设计与实现 324 5.2.2 Session集群部署与启动 327 5.2.3 YarnResourceManager详解 335 ### 5.3 Flink On Kubernetes的设计与实现 343 5.3.1 Flink On Kubernetes架构 344 5.3.2 Session集群部署与启动 347 5.3.3 KubernetesResourceManager详解 357 ## 第6章 状态管理与容错 366 ### 6.1 状态数据管理 367 6.1.1 状态数据类型 367 6.1.2 状态初始化流程 371 ### 6.2 KeyedState的创建与管理 381 6.2.1 KeyedStateBackend的整体设计 381 6.2.2 HeapKeyedStateBackend的实现 382 ### 6.3 OperatorState的创建与管理 394 6.3.1 OperatorStateBackend整体设计 395 6.3.2 基于DefaultOperatorStateBackend创建OperatorState 396 ### 6.4 StateBackend详解 400 6.4.1 StateBackend的整体设计 401 6.4.2 MemoryStateBackend实现 407 ### 6.5 Checkpoints的设计与实现 413 6.5.1 Checkpoint的实现原理 414 6.5.2 Checkpoint触发过程 424 ## 第7章 ⽹络通信 464 ### 7.1 集群RPC通信机制 464 7.1.1 Flink RPC框架整体设计 464 7.1.2 AkkaRpcService详解 470 7.1.3 RpcServer动态代理实现 481 7.1.4 AkkaRpcActor设计与实现 487 7.1.5 集群组件之间RPC通信 491 ### 7.2 NetworkStatck设计与实现 503 7.2.1 NetworkStatck整体概览 503 7.2.2 StreamTask数据流 506 7.2.3 RecordWriter详解 521 7.2.4 ShuffleMaster与ShuffleEnvironment 535 7.2.5 ResultPartition与InputGate详解 558 7.2.6 ConnectManager的设计与实现 578 7.2.7 NetworkBuffer资源管理 615 ### 7.3 基于Credit的反压机制实现 635 7.3.1 反压机制理论基础 635 7.3.2 基于Credit的反压机制详解 638 ## 第8章 内存管理 654 ### 8.1 内存管理概述 654 8.1.1 积极的内存管理 654 8.1.2 Flink内存模型 656 ### 8.2 MemorySegment设计与实现 658 8.2.1 MemorySegment架构概览 658 8.2.2 MemorySegment详解 660 8.2.3 MemorySegment内存使用 666 ### 8.3 DataInputView与DataOutputView 670 8.3.1 DataInputDeserializer和DataOutputSerializer 672 8.3.2 DataInputViewStreamWrapper与DataOutputViewStreamWrapper 677 8.3.3 AbstractPagedInputView与AbstractPagedOutputView 679 ### 8.4 数据序列化与反序列化 684 8.4.1 TypeInformation类型系统 684 8.4.2 RecordSerializer与RecordDeserializer 695 ### 欢迎支持个人作品,包含以上全部章节内容: image-20210901223313354 京东商城: https://item.jd.com/12913445.html 当当: http://product.dangdang.com/29285280.html