新書推薦:
《
《全面与进步跨太平洋伙伴关系协定》国有企业条款研究
》
售價:NT$
449.0
《
银行业架构网络BIAN(全球数字化时代金融服务业框架)(数字化转型与创新管理丛书)
》
售價:NT$
449.0
《
金托邦:江湖中的沉重正义
》
售價:NT$
275.0
《
易经今解:释疑·解惑·见微
》
售價:NT$
403.0
《
东欧史(全二册)-“中间地带”的困境
》
售價:NT$
1010.0
《
虚拟资本:金融怎样挪用我们的未来
》
售價:NT$
352.0
《
刻意练习不生气
》
售價:NT$
179.0
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:NT$
500.0
|
編輯推薦: |
本书从设计思想与特性开发两个视角,对Flink框架进行介绍。设计思想篇概述Flink的历史、应用场景与架构,介绍Flink核心API的使用方式,并分模块介绍Flink的源码实现及其设计思想。特性开发篇基于真实的企业级代码运行流程,针对Flink核心功能进行特性开发,帮助读者解决复杂的业务难题。
|
內容簡介: |
本书主要分为两部分。第一部分以核心概念和基本应用为脉络,介绍了Flink的核心特性(如检查点机制、时间与窗口、shuffle机制等),部署,DataStream API、Dataset API、Table API的应用,运行时的原理等内容,每一章先对概念做基本的介绍,然后基于应用实例详细分析Flink的设计思想和源码实现。第二部分基于对原理的理解,手把手教读者如何进行定制化的特性开发和性能提升,能够让读者对Flink的理解有质的飞跃。这一部分内容来自作者大量的工作实践,所引用例均源自企业级的真实需求,能够解决非常复杂的现网问题。
|
關於作者: |
黄伟哲,约翰斯·霍普金斯大学硕士,架构师、软件开发工程师、咨询师,Spark Contributor。《人工智能技术与大数据》译者,目前就职于美团。在开源大数据框架的应用与特性开发方面有丰富的经验。
|
目錄:
|
第 一部分 设计思想篇第 1章 序篇 31.1 Flink的诞生与发展 31.1.1 Stratosphere项目 31.1.2 Apache Flink的发展 41.2 Flink的应用场景 51.2.1 事件驱动型应用 51.2.2 数据分析型应用 51.2.3 数据管道型应用 91.3 Flink的核心特性与架构 91.3.1 核心特性 91.3.2 架构 101.4 准备工作 111.5 总结 12第 2章 Flink编程 132.1 API层级 132.2 DataStream API 142.2.1 DataStream版本的 WordCount 142.2.2 数据源 162.2.3 数据的转换操作 162.2.4 数据的输出 202.2.5 重分区 212.3 DataSet API 212.3.1 DataSet版本的WordCount 212.3.2 数据源 222.3.3 数据的转换操作 222.3.4 数据的输出 242.3.5 重分区 252.4 Table API 252.4.1 Table API版本的WordCount 252.4.2 初始化执行环境 262.4.3 获取Table对象 282.4.4 Table API中的转换操作及输出 282.5 SQL 342.6 总结 34第3章 Flink API层的实现原理 363.1 DataStream API 373.1.1 StreamExecutionEnvironment执行环境 373.1.2 Function接口分析 423.1.3 StreamOperator算子分析 453.1.4 转换操作分析 483.1.5 数据流相关类分析 533.2 DataSet API 593.2.1 ExecutionEnvironment执行环境 593.2.2 InputFormat和OutputFormat 623.2.3 数据集相关类分析 633.3 Table API和SQL 683.4 总结 71第4章 Flink的执行图 724.1 StreamGraph的生成 734.1.1 StreamGraphGenerator分析 734.1.2 StreamGraph分析 774.1.3 StreamNode和StreamEdge 804.2 Plan的生成 814.2.1 OperatorTranslation分析 824.2.2 Plan分析 844.3 从StreamGraph到JobGraph 854.3.1 StreamingJobGraphGenerator分析 874.3.2 JobGraph分析 934.3.3 JobVertex、JobEdge和IntermediateDataSet 944.4 从Plan到JobGraph 954.5 从JobGraph到ExecutionGraph 964.5.1 ExecutionGraphBuilder分析 984.5.2 ExecutionGraph分析 994.5.3 ExecutionJobVertex、ExecutionVertex和Execution分析 1024.5.4 IntermediateResult、IntermediateResultPartition和ExecutionEdge 1064.6 总结 108第5章 Flink的运行时架构 1095.1 客户端代码的运行 1105.2 高可用相关组件 1155.2.1 EmbeddedHaServices 1155.2.2 EmbeddedLeaderService 1175.3 派发器的初始化与启动 1225.4 资源管理器的初始化与启动 1285.5 TaskExecutor的初始化与启动 1315.6 JobMaster的初始化与启动 1345.7 总结 137第6章 任务调度 1386.1 调度器 1386.1.1 调度器的基本构成与初始化 1396.1.2 构造ExecutionGraph 1426.2 调度拓扑 1436.3 调度策略 1476.3.1 EagerSchedulingStrategy 1476.3.2 LazyFromSourcesSchedulingStrategy 1496.3.3 InputDependencyConstraintChecker 1526.4 调度过程的实现 1576.4.1 开始调度 1576.4.2 更新任务状态 1596.4.3 调度或更新消费者 1636.5 任务的部署 1636.6 Execution对象在调度过程中的行为 1666.7 总结 173第7章 任务的生命周期 1747.1 任务的提交 1747.1.1 TaskDeploymentDescriptor 1767.1.2 ResultPartitionDeployment Descriptor 1787.1.3 InputGateDeployment Descriptor 1807.1.4 ShuffleDescriptor 1817.1.5 ProducerDescriptor和PartitionDescriptor 1857.1.6 TaskDeploymentDescriptor的提交 1887.2 任务的初始化 1897.2.1 Task的初始化 1897.2.2 ResultPartition的初始化 1917.2.3 InputGate的初始化 1947.3 任务的执行 1977.3.1 StreamTask的初始化 2027.3.2 StreamTask中的重要概念 2047.3.3 StreamTask的实现类 2197.3.4 StreamTask的生命周期 2227.3.5 DataSourceTask、BatchTask和DataSinkTask 2277.4 总结 237第8章 数据传输 2388.1 基本概念与设计思想 2388.1.1 从逻辑执行图到物理执行图 2398.1.2 用同一套模型应对批处理和流处理 2428.1.3 混洗 2428.1.4 流量控制 2458.2 数据的输出 2528.2.1 ResultPartitionType 2538.2.2 ResultPartitionWriter 2568.2.3 ResultSubpartition 2628.3 数据的读取 2658.3.1 ResultSubpartitionView 2668.3.2 InputGate 2698.3.3 InputChannel 2738.4 反压机制的原理 2788.5 总结 283第9章 时间与窗口 2849.1 基本概念和设计思想 2849.1.1 从批处理到流处理 2849.1.2 数据流模型的设计思想 2879.1.3 Flink中与窗口操作相关的核心概念 2899.2 WindowedStream 2909.3 窗口相关模型的实现 2929.3.1 Window类 2929.3.2 WindowAssigner类 2939.3.3 Trigger类 2949.3.4 Evictor类 2969.4 WindowOperator 2979.5 水位线 2999.5.1 产生水位线 3009.5.2 多个数据流传来的水位 3039.6 定时器 3049.7 总结 307第 10章 状态与容错 30810.1 基本概念与设计思想 30810.1.1 状态与容错的基本概念 30810.1.2 Hadoop与Spark如何设计容错机制 31110.1.3 Flink中容错机制的设计思想 31110.1.4 Flink的状态与容错机制的核心概念 31310.2 状态存储 31510.2.1 检查点的触发 31610.2.2 栅栏的传输 32310.2.3 状态数据的更新和存储 33110.2.4 元信息的存储 33610.3 状态恢复 34110.3.1 元信息的读取 34210.3.2 状态的重分配 34410.3.3 状态数据的恢复 34710.4 状态的重分配策略 34910.4.1 操作符状态的重分配 35010.4.2 键控状态的重分配 35210.5 总结 353第二部分 特性开发篇第 11章 动态调整并行度 35711.1 模型设计 35711.1.1 传统模型的局限 35711.1.2 DS2模型的核心概念 35811.1.3 算法原理 35911.1.4 架构设计 36011.1.5 使用DS2模型的注意事项 36111.2 指标收集 36111.3 指标管理 36411.4 总结 366第 12章 自适应查询执行 36712.1 Flink框架下的自适应查询执行 36812.1.1 执行阶段的划分 36812.1.2 优化流程 36812.1.3 优化策略 37012.2 统计信息的收集 37312.3 执行图与调度拓扑的修改 37412.4 上下游关系的建立 37712.5 总结 378第 13章 Flink Sort-Merge Shuffle 37913.1 混洗机制的对比 37913.2 Flink混洗机制 38113.3 Blink混洗的数据流转 38213.3.1 ExternalResultPartition 38313.3.2 PartitionMergeFileWriter 38413.4 Blink混洗的Sort-Merge过程 38613.4.1 PushedUnilateralSort Merger 38713.4.2 NormalizedKeySorter 39013.4.3 排序线程 39313.4.4 溢写线程 39313.4.5 合并线程 39513.5 文件的读取和元信息管理 39813.5.1 ExternalBlockResultPartition Manager 39813.5.2 ExternalBlockResultPartition Meta 39913.5.3 ExternalBlockSubpartition View 40013.6 总结 402第 14章 修改检查点的状态 40314.1 状态修改的原理 40314.1.1 状态元信息的读取 40414.1.2 状态数据的读取 40514.2 状态处理器API 40714.2.1 数据的读取 40914.2.2 数据的写出 41314.3 总结 414
|
|