新書推薦:
![中国书法嬗变与思考(国家社科基金后期资助项目)](http://103.6.6.66/upload/mall/productImages/24/31/9787101165432.jpg)
《
中国书法嬗变与思考(国家社科基金后期资助项目)
》
售價:HK$
112.7
![关键冲突:如何化人际关系危机为合作共赢(原书第2版)](http://103.6.6.66/upload/mall/productImages/24/31/9787111750918.jpg)
《
关键冲突:如何化人际关系危机为合作共赢(原书第2版)
》
售價:HK$
86.3
![探索清陵五十年](http://103.6.6.66/upload/mall/productImages/24/30/9787507769098.jpg)
《
探索清陵五十年
》
售價:HK$
1012.0
![定鼎中原之路:从皇太极入关到玄烨亲政](http://103.6.6.66/upload/mall/productImages/24/31/9787108062819.jpg)
《
定鼎中原之路:从皇太极入关到玄烨亲政
》
售價:HK$
101.2
![财之道丛书·如何让人投资你:股权激励融资全揭秘](http://103.6.6.66/upload/mall/productImages/24/31/9787213115257.jpg)
《
财之道丛书·如何让人投资你:股权激励融资全揭秘
》
售價:HK$
101.2
![PyTorch深度学习与计算机视觉实践](http://103.6.6.66/upload/mall/productImages/24/30/9787302665144.jpg)
《
PyTorch深度学习与计算机视觉实践
》
售價:HK$
90.9
![新任经理 100 天实战指南](http://103.6.6.66/upload/mall/productImages/24/29/9787566923387.jpg)
《
新任经理 100 天实战指南
》
售價:HK$
89.7
![日本百鬼画谱](http://103.6.6.66/upload/mall/productImages/24/31/9787201199009.jpg)
《
日本百鬼画谱
》
售價:HK$
71.3
|
編輯推薦: |
(1)作者背景资深:某头部短视频平台Flink专家,拥有多年流式计算开发、优化、保障和治理经验,对Flink大数据计算引擎有着深入的理解。(2)作者经验丰富:有从0到1使用Flink SQL建设实时数仓的经验,在Flink场景化应用方面有丰富的经验,能够使用Flink等技术组件解决千万级别QPS的实时数据场景下的痛点问题。(3)双重视角展开:从Flink使用和定制开发双重视角,循序渐进讲解Flink的分布式系统架构设计、流计算API设计、时间处理、状态管理等核心技术的原理和实现。(4)理论深入详细:除了Flink的架构设计和核心技术的原理外,本书还详细讲解了SQL API、Table API、DataStream API 和有状态流处理 API四大API的细节。(5)注重工程实战:用大量案例和图表详解用Java和Flink SQL开发Flink流处理作业的方法和过程,掌握工程化实践能力。
|
內容簡介: |
内容简介这是一本从使用和定制开发双重视角,循序渐进地讲解Flink的分布式系统架构设计、流计算API设计、时间处理、状态管理等核心技术的原理和实现的著作。它面向Flink的初学者,内容沿着基础知识、实际问题和解决方案这条主线展开,不仅层层剖析了Flink学习中的重点和难点,而且还通过大量案例展示了如何快速获得工程化实践能力。全书共11章,主要内容如下:(1)Flink基础知识(第1、2章)主要介绍了Flink的定位、核心特性、API分类,演示了如何搭建Flink作业的基础环境、如何创建一个Flink项目以及如何开发入门应用程序WordCount,并结合该应用程序说明了常见Flink作业的骨架结构。(2)Flink分布式架构及核心概念(第3章)主要内容包括Flink作业的运行时架构、部署模式、资源提供框架,以及开发 Flink作业时涉及的核心概念,对于后续学习Flink DataStream API和Flink SQL API很有帮助。(3)Flink DataStream API(第4~6章)讲解了Flink DataStream API的核心知识,包括执行环境、数据源、数据简单转换、数据分组与聚合、数据汇等,并讲解了Flink DataStream API中的时间语义、时间窗口、有状态计算和检查点这四大“王*牌武器”的由来与实现原理。(4)Flink有状态流处理API(第7章)Flink DataStream API不能优雅地解决窗口使用不灵活和分流成本高这两个问题,于是Flink提供了有状态流处理API。本章主要讲解了Flink有状态流处理API解决上述两个问题的方法。(5)Flink Table API与SQL API(第8~11章)Flink Table API和Flink SQL API的底层原理相同,可以相互转换,但Flink SQL API更为简单和常用。这4章分别介绍了Flink Table API、Flink SQL API 的功能,以及使用SQL实现流处理的核心技术,结合大量代码示例着重介绍了Flink SQL API的语法、函数、参数配置及性能优化方法。
|
關於作者: |
羊艺超资深大数据开发工程师,现就职于某头部短视频公司。拥有多年流式计算开发、优化、保障和治理经验,以及从0到1使用Flink SQL建设实时数仓的经验。对Flink大数据计算引擎有着深入的理解,在Flink的场景化应用方面有丰富的经验,能够使用Flink等技术组件解决千万级别QPS的实时数据场景下的痛点问题。开源了自己的 Flink 学习项目 https://github.com/yangyichao-mango/flink-study。对Redis、Kafka、ClickHouse等实时数仓构建过程中依赖的引擎都较为熟悉。个人微信公众号:大数据羊说。发表了数十篇关于实时数仓建设的原创文章,深受读者喜爱。
|
目錄:
|
Contents目 录前 言第1章 初识Flink 11.1 Flink定位 11.1.1 Flink是什么 21.1.2 Flink对于数据的定义 31.1.3 Flink的3种应用场景 41.1.4 Flink的3个企业应用案例 71.2 Flink的核心特性 91.2.1 Flink的5个核心特性 91.2.2 3种流处理引擎特性的对比 101.3 Flink的API 111.3.1 Code API 111.3.2 关系型API 131.4 与Flink搭配使用的引擎 151.5 本章小结 16第2章Flink WordCount作业开发及运行 172.1 基础环境准备 172.2 创建一个Flink项目 182.3 Flink WordCount代码案例 212.4 Flink作业的骨架结构 242.5 本章小结 25第3章Flink分布式架构及核心概念 263.1分布式应用与非分布式应用的异同 273.2 Flink作业的运行时架构 283.2.1 Flink作业提交部署流程 283.2.2 Client 303.2.3 JobManager 303.2.4 TaskManager 313.3 Flink作业的3种部署模式 313.3.1 Session模式 323.3.2 Per-Job模式 333.3.3 Application模式 353.4 Flink作业的2种资源提供框架 363.4.1 Standalone 363.4.2 YARN 403.5开发Flink作业时涉及的核心概念 423.5.1 Function 443.5.2 Operator 443.5.3 算子并行度 463.5.4 Operator Chain 493.5.5 Task和SubTask 523.5.6 Task Slot和共享Task Slot 533.5.7 算子最大并行度 543.6 Flink Web UI 563.6.1 概览模块 573.6.2 Flink作业详情 583.7 本章小结 64第4章 Flink DataStream API 654.1 什么是DataStream 654.2 执行环境 664.3 数据源 674.3.1从数据源存储引擎中读取数据的API 674.3.2 从Socket中读取数据 694.3.3 从Kafka中读取数据 694.3.4 从自定义数据源中读取数据 744.4 数据简单转换 764.4.1 单流的3种数据简单转换 764.4.2 多流的4种数据简单转换 804.5 数据分组与聚合 844.5.1 KeyBy 854.5.2 Max、Min和Sum 884.5.3 Reduce 924.6 数据汇 954.6.1向数据汇存储引擎写数据的API 954.6.2 向控制台输出数据 954.6.3 向Kafka写入数据 964.6.4 向自定义数据汇写入数据 994.7 算子间数据传输的8种策略 1004.7.1 Forward 1004.7.2 Rebalance 1034.7.3 Shuff?le 1064.7.4 KeyGroup 1064.7.5 Rescale 1074.7.6 Broadcast 1084.7.7 Global 1104.7.8 Custom Partition 1104.8 数据异步I/O处理 1124.8.1同步I/O处理导致作业低吞吐 1124.8.2同步I/O处理低吞吐的4种解决方案 1134.8.3 异步I/O处理原理 1134.8.4 异步I/O处理API 1144.8.5异步I/O处理API的注意事项 1174.9 RichFunction 1184.10 数据序列化 1214.10.1Flink数据序列化机制的诞生过程 1224.10.2Flink支持的7种数据类型 1234.10.3TypeInformation与TypeSerializer 1254.10.4Java Lambda表达式对数据序列化的影响 1274.10.5 使用注意事项 1294.11 工具类及Debug建议 1314.11.1 ParameterTool 1314.11.2 Debug建议 1324.12 本章小结 132第5章Flink的时间语义和时间窗口 1345.1 时间语义和时间窗口概述 1345.2 时间窗口 1375.2.1 Flink中的时间窗口 1385.2.2 为什么需要时间窗口 1395.2.3时间窗口程序的骨架结构 1415.2.4 时间窗口的计算机制 1435.2.5 窗口分配器 1455.2.6 窗口处理函数 1545.2.7 窗口触发器 1695.3 时间语义 1765.3.1 处理时间 1775.3.2 事件时间 1785.3.3 摄入时间 1805.4 Watermark 1805.4.1 Watermark的诞生背景 1805.4.2 Watermark的定义及特点 1855.4.3 Watermark的传输策略 1875.4.4使用Watermark缓解数据乱序问题 1935.4.5 生成Watermark的API 1965.5 双流数据时间窗口关联 2045.5.1 时间窗口关联 2055.5.2 时间窗口CoGroup操作 2085.5.3 时间区间关联 2105.6 计数窗口 2135.7生产中的常见问题及解决方案 2155.7.1事件时间窗口不触发计算的3种原因及解决方案 2165.7.2事件时间窗口数据乱序问题的体系化解决方案 2235.7.3windowAll()方法导致数据倾斜问题的解决方案 2305.7.4扩展思考?:Watermark是否只能从时间戳中取值 2335.8 本章小结 233第6章Flink状态原理及异常容错机制 2356.1 Flink有状态计算 2356.1.1 状态及有状态计算的定义 2356.1.2Flink有状态计算的4类应用 2376.1.3传统有状态计算方案应用于大数据场景时存在的3个问题 2376.1.4Flink实现有状态计算的思路 2406.1.5Flink实现有状态计算面临的2个难题 2486.1.6 Flink有状态计算总结 2516.2 Flink状态接口 2526.2.1 Flink状态的分类 2526.2.2 算子状态 2576.2.3 键值状态 2696.2.4 广播状态 2866.2.5 键值状态保留时长 2946.2.6 F
|
內容試閱:
|
Preface前 言为什么要写这本书相比于国内很多用户来说,我接触Flink的时间不算长,我是从2019年开始学习和使用Flink解决工作中遇到的问题的,那么是什么原因促使我写这本书?第一,我想把我对Flink特性的理解进行系统的总结。我在初期学习Flink时,在窗口、有状态计算等特性的学习上投入的成本是比较高的。随着使用Flink越来越多,对Flink的各种特性越来越熟悉,我将自己对于Flink的理解和使用经验整理成文章,并且发布在公众号“大数据羊说”上。随着公众号的读者越来越多,我也收到了越来越多的反馈。总结下来,我的文章能够吸引读者的亮点在于,我是从背景知识、要解决的问题以及Flink中的实现方案这3个角度解释Flink的技术特性,而这一点恰好是很多想要深入学习Flink但是找不到好的学习资料的读者急需的。很多读者的反馈给了我持续写文章的动力,也让我产生了写一本书来帮助更多读者的想法。第二,我算得上是Flink SQL API的早期用户,Flink SQL API由于具有易用的特性,用户越来越多,发展势头越来越猛、而市面上关于Flink SQL API的中文资料比较少,因此我想将自己对于Flink SQL API的理解梳理出来,在推广Flink SQL API的同时也能够帮助读者学习Flink SQL API。读者对象本书适合以下读者阅读。开设Flink相关课程的院校师生。实时计算开发工程师。大数据开发工程师。如何阅读本书本书详细剖析了Flink中的时间、窗口、有状态计算和检查点这4项核心难点,尽可能降低读者的学习成本,并且相对全面地介绍了Flink SQL API的内容。本书分为11章,各章内容层层递进。第1~3章是Flink初学者内容,主要介绍Flink的由来、特性、API的使用方法和运行时的架构。如果读者想使用Java开发一个Flink流处理作业,推荐仔细阅读第4~7章。第4章介绍Flink DataStream API中的基础接口。第5章和第6章介绍Flink中的时间、窗口、有状态计算和检查点的相关知识。第7章介绍Flink有状态流处理API。如果读者想使用SQL开发一个Flink流处理作业,推荐仔细阅读第8~11章。第8章介绍Flink Table API和SQL API中的基础概念,第9章介绍Flink SQL API中的语法及其执行过程,第10章介绍Flink SQL API中的函数,第11章介绍Flink SQL API中的参数及SQL优化方法。勘误和支持由于水平有限,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正,并将宝贵的意见反馈到公众号“大数据羊说”的后台中。由于Flink技术的参考资料较少,因此书中的部分内容参考了Flink官方文档,读者可以结合Flink官网来学习。此外,书中的代码源文件可以从GitHub网站下载,地址为https://github.com/yangyichao-mango/flink-study.git。致谢在写作过程中,我得到了很多朋友的支持。感谢公众号的读者,因为有他们的支持,我才能坚持将本书写完。感谢我的父母将我培养成人,并时时刻刻为我传递信心和力量!谨以此书献给我最亲爱的家人,以及众多热爱Flink的朋友!
|
|