注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計Flink設計與實現:核心原理與源碼解析

Flink設計與實現:核心原理與源碼解析

Flink設計與實現:核心原理與源碼解析

定 價:¥129.00

作 者: 張利兵 著
出版社: 機械工業(yè)出版社
叢編項: 大數據技術叢書
標 簽: 暫缺

購買這本書可以去


ISBN: 9787111687832 出版時間: 2021-09-01 包裝: 平裝
開本: 16開 頁數: 515 字數:  

內容簡介

  這是一本從源代碼角度剖析Flink設計思想、架構原理以及各功能模塊的底層實現原理的著作。 作者是Flink領域的資深技術專家和架構師,對Flink的源代碼進行了深入分析和解讀,同時融入了自己豐富的工程實踐經驗,既能讓理解Flink的設計與實現原理,又能為他們解決性能優(yōu)化等實際應用問題提供源碼級別的指導。源碼大多艱澀難懂,為了降低讀者的學習門檻,本書提供了大量架構設計圖、UML圖和代碼注釋。 通過閱讀本書,你將: l徹底掌握Flink源碼設計與實現 l深度掌握Flink作業(yè)運行流程 l深入了解Flink部署模式實現原理 l深度掌握Flink Runtime設計和實現原理 l庖丁解牛Flink網絡通信原理 l探索Flink內存管理實現 l深入了解Flink接口設計 l從Flink源碼中學習架構設計經驗

作者簡介

  張利兵 資深大數據專家和架構師,現任第四范式AI數據平臺架構師,曾就職于明略數據。Apache Flink的貢獻者,對Flink有非常深入的研究。 長期從事大數據架構落地以及機器學習平臺與數據平臺研發(fā)架構工作,在Hadoop、Spark、機器學習等方面積累了豐富的經驗。先后參與和主導了銀行、證券、地鐵等領域的大數據平臺的架構設計與實現。 《Flink原理、實戰(zhàn)與性能優(yōu)化》作者,極客時間《Flink原理與實戰(zhàn)》專欄作者。獲得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 源碼調試環(huán)境搭建 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與物理分區(qū) 59
2.5.2 WindowedStream的設計與實現 62
2.6 本章小結 68
第3章 運行時的核心原理與實現 69
3.1 運行時的整體架構 69
3.1.1 運行時整體架構概覽 69
3.1.2 集群的啟動與初始化 72
3.2 運行時組件的創(chuàng)建和啟動 79
3.2.1 集群組件的創(chuàng)建和啟動 79
3.2.2 WebMonitorEndpoint的創(chuàng)建與初始化 85
3.2.3 Dispatcher的創(chuàng)建與初始化 91
3.2.4 ResourceManager的創(chuàng)建與初始化 98
3.2.5 TaskManager的創(chuàng)建與啟動 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章 任務提交與執(zhí)行 145
4.1 客戶端作業(yè)提交 145
4.1.1 命令行提交 145
4.1.2 創(chuàng)建和初始化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任務與分發(fā) 180
4.4.3 JobManager啟動與初始化 184
4.4.4 JobMaster詳解 188
4.5 ExecutionGraph的調度與執(zhí)行 195
4.5.1 ExecutionGraph生成 198
4.5.2 SchedulerNG調度器 200
4.6 Task的執(zhí)行與注銷 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的創(chuàng)建與獲取 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章 狀態(tài)管理與容錯 275
6.1 狀態(tài)數據管理 275
6.1.1 狀態(tài)數據類型 275
6.1.2 狀態(tài)初始化流程 279
6.2 KeyedState的創(chuàng)建與管理 285
6.2.1 KeyedStateBackend的整體設計 285
6.2.2 HeapKeyedStateBackend的實現 286
6.3 OperatorState的創(chuàng)建與管理 295
6.3.1 OperatorStateBackend的整體設計 295
6.3.2 基于DefaultOperatorState-Backend創(chuàng)建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的觸發(fā)過程 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動態(tài)代理實現 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

本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號