描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302626947丛书名: 开发者成长丛书
本书除了提供了丰富的上机实践操作和范例程序详细讲解之外,本书作者还为购买和使用本书的读者提供了搭建好的Hadoop和Flink大数据开发和学习环境。读者既可以参照本书的讲解自行搭建Hadoop和Flink环境,也可直接使用作者提供的开始和学习环境,快速开始大数据和Flink的学习。
本书具有以下几个特点:
(1) 面向零基础读者,知识点深浅适当,代码完整易懂。
(2) 内容全面系统,包括架构原理、开发环境及程序部署、流和批计算等,并特别包含了第7章“基于Flink构建批流一体数仓”和第8章“基于Flink和数据湖构建实时数仓”内容。
(3) 所有代码均基于Flink 1.13.2。
(4) 双语实现,大部分示例、案例,均包含Scala和Java两种语言版本的实现。
本书讲述Apache Flink大数据框架的原理,以及如果将Apache Flink应用于大数据的实时流处理、批处理、批流一体分析等各个场景。通过原理深入学习和实践示例、案例的学习应用,使读者了解并掌握Apache Flink流处理的框架的基本原理和技能,接近理论与实践的距离。 全书共分为8章,主要内容包括Flink架构与集群安装、Flink开发环境准备(基于IntelliJ IDEA和Maven)、开发Flink实时数据处理程序、Flink流数据分析、时间和水印概念、窗口操作、状态和容错、侧输出流、Flink流连接器、Flink流处理案例、开发Flink批数据处理程序、使用Table API进行数据处理、Flink on YARN、基于Flink构建批流一体数仓、基于Flink和Iceberg数据湖构建实时数仓。本书源码全部在Apache Flink 1.13.2上调试成功,所有示例和案例均提供Scala语言和Java语言两套API的实现(第8章除外),供读者参考。 本书系统讲解了Apache Flink大数据框架的原理和流、批处理的开发实践,内容全面、实例丰富、可操作性强,做到了理论与实践相结合。本书适合大数据学习爱好者、想要入门Apache Flink的读者作为入门和提高的技术参考书,也适合用作大中专院校大数据专业相关的学生和老师的教材或教学参考书。
第1章Flink架构与集群安装(81min)
1.1Flink简介
1.1.1Flink发展历程
1.1.2Flink特性
1.2Flink应用场景
1.2.1事件驱动应用程序
1.2.2数据分析应用程序
1.2.3数据管道应用程序
1.3Flink体系架构
1.3.1Flink系统架构
1.3.2Flink运行时架构
1.3.3Flink资源管理
1.3.4Flink作业调度
1.3.5Flink故障恢复
1.3.6Flink程序执行模式
1.4Flink集群安装
1.4.1Flink独立集群安装和测试
1.4.2Flink完全分布式集群安装
1.4.3Flink常用命令
第2章Flink开发环境准备(37min)
2.1安装和配置
2.1.1安装和配置Maven
2.1.2修改Maven本地仓库默认位置
2.1.3创建初始模板项目
2.1.4构建打包项目
2.2使用IntelliJ IDEA Maven开发Flink项目
2.2.1在IntelliJ IDEA中创建Flink项目
2.2.2设置项目基本依赖
2.2.3用于构建具有依赖项的JAR的模板
2.2.4编写批处理代码并测试执行
2.2.5项目打包并提交Flink集群执行
2.3Flink相关概念
2.3.1Flink数据流
2.3.2Flink分层API
第3章开发Flink实时数据处理程序(376min)
3.1Flink流处理程序编程模型
3.1.1流数据类型
3.1.2流应用程序实现
3.1.3流应用程序剖析
3.2Flink支持的数据源
3.2.1基于Socket的数据源
3.2.2基于文件的数据源
3.2.3基于集合的数据源
3.2.4自定义数据源
3.3Flink数据转换
3.3.1map转换
3.3.2flatMap转换
3.3.3filter转换
3.3.4keyBy转换
3.3.5reduce转换
3.3.6聚合转换
3.3.7union转换
3.3.8connect转换
3.3.9coMap及coFlatMap转换
3.3.10iterate转换
3.3.11project转换
3.4Flink流数据分区
3.4.1流数据分发模式
3.4.2数据分区方法
3.4.3数据分区示例
3.4.4理解操作符链
3.5Flink数据接收器
3.5.1内置数据接收器
3.5.2使用流文件连接器
3.5.3自定义数据接收器
3.6时间和水印概念
3.6.1时间概念
3.6.2事件时间和水印
3.6.3水印策略
3.6.4处理空闲数据源
3.6.5编写水印生成器
3.6.6内置水印生成器
3.6.7分配时间戳和水印示例
3.7窗口操作
3.7.1理解Flink窗口概念
3.7.2窗口分配器
3.7.3窗口函数
3.7.4触发器
3.7.5清除器
3.7.6处理迟到数据
3.7.7处理窗口结果
3.7.8窗口连接
3.8低级操作
3.8.1ProcessFunction
3.8.2KeyedProcessFunction示例
3.8.3案例: 服务器故障检测报警程序
3.9状态和容错
3.9.1状态运算
3.9.2状态的类型
3.9.3使用托管的Keyed State
3.9.4使用托管Operator State
3.9.5广播状态
3.9.6状态后端
3.9.7检查点机制
3.9.8状态快照
3.10侧输出流
3.10.1什么是侧输出流
3.10.2侧输出流应用示例
3.11Flink流连接器
3.11.1Kafka连接器
3.11.2JDBC连接器
3.12其他
3.12.1在应用程序中使用日志
3.12.2使用ParameterTool
3.12.3命名大型TupleX类型
3.13Flink流处理案例
3.13.1处理IoT事件流
3.13.2运输公司车辆超速实时监测
第4章开发Flink批数据处理程序(64min)
4.1Flink批处理程序编程模型
4.1.1批应用程序实现
4.1.2批应用程序剖析
4.2数据源
4.2.1基于文件的数据源
4.2.2基于集合的数据源
4.2.3通用的数据源
4.2.4压缩文件
4.3数据转换
4.3.1map转换
4.3.2flatMap转换
4.3.3mapPartition转换
4.3.4filter转换
4.3.5reduce转换
4.3.6在分组数据集上的reduce转换
4.3.7在分组数据集上的GroupReduce转换
4.3.8在分组数据集上的GroupCombine转换
4.3.9在分组元组数据集上执行聚合
4.3.10在分组元组数据集上执行minBy转换
4.3.11在分组元组数据集上执行maxBy转换
4.3.12在全部元组数据集上执行聚合操作
4.3.13distinct转换
4.3.14join连接转换
4.3.15union转换
4.3.16project转换
4.3.17firstn转换
4.4数据接收器
4.4.1将计算结果保存到文本文件
4.4.2将计算结果保存到JDBC
4.4.3标准DataSink方法
4.4.4本地排序输出
4.5广播变量
4.6分布式缓存
4.7参数传递
4.7.1通过构造函数传参
4.7.2通过withParameters(Configuration)传参
4.7.3通过ExecutionConfig传递全局参数
4.8数据集中的拉链操作
4.8.1密集索引
4.8.2唯一索引
4.9Flink批处理示例
4.9.1分析豆瓣热门电影数据集——Scala实现
4.9.2分析豆瓣热门电影数据集——Java实现
第5章使用Table API进行数据处理(136min)
5.1依赖
5.2Table API与SQL编程模式
5.2.1TableEnvironment
5.2.2Table API与SQL程序的结构
5.2.3在Catalog中创建表
5.2.4查询表
5.2.5向下游发送表
5.2.6翻译并执行查询
5.3Table API
5.3.1关系运算
5.3.2窗口运算
5.3.3基于行的操作
5.4Table API与DataStream API集成
5.4.1依赖
5.4.2在DataStream和Table之间转换
5.4.3处理insertonly流
5.4.4处理变更日志流
5.5Table API实时流处理案例
5.5.1传感器温度实时统计
5.5.2车辆超速实时监测
5.5.3电商用户行为实时分析
第6章Flink on YARN(13min)
6.1Flink on YARN session
6.1.1下载Flink集成Hadoop依赖包
6.1.2运行Flink on YARN session
6.1.3提交Flink作业
6.1.4停止Flink on YARN session
6.2Flink on YARN支持的部署模式
6.2.1Application模式
6.2.2PerJob集群模式
6.2.3session模式
第7章基于Flink构建流批一体数仓(27min)
7.1Flink集成Hive数仓
7.1.1Flink集成Hive的方式
7.1.2Flink集成Hive的步骤
7.1.3Flink连接Hive模板代码
7.2批流一体数仓构建实例
7.2.1数据集说明
7.2.2创建Flink项目
7.2.3创建执行环境
7.2.4注册HiveCatalog
7.2.5创建Kafka流表
7.2.6创建Hive表
7.2.7流写Hive表
7.2.8动态读取Hive流表
7.2.9完整示例代码
7.2.10执行步骤
7.3纯SQL构建批流一体数仓
7.3.1使用Flink SQL客户端
7.3.2集成Flink SQL CLI和Hive
7.3.3注册HiveCatalog
7.3.4使用SQL Client提交作业
7.3.5构建批流一体数仓完整过程
第8章基于Flink和Iceberg数据湖构建实时数仓(23min)
8.1现代数据湖概述
8.1.1什么是数据湖
8.1.2数据湖架构
8.1.3开源数据湖框架
8.2基于Flink Iceberg构建企业数据湖
8.2.1Apache Iceberg的优势
8.2.2Apache Iceberg经典业务场景
8.2.3应用Apache Iceberg的准备工作
8.2.4创建和使用Catalog
8.2.5Iceberg DDL命令
8.2.6Iceberg SQL查询
8.2.7Iceberg SQL写入
8.2.8使用DataStream读取
8.2.9使用DataStream写入
8.2.10重写文件操作
8.2.11未来改进
8.3基于Flink Iceberg构建准实时数仓
8.3.1实时数仓构建
8.3.2执行OLAP联机分析
图书推荐
实时数据分析一直是一个热门话题,需要实时数据分析的场景也越来越多,如金融支付中的风控、基础运维中的监控告警、实时大盘等,此外,AI模型也需要依据更为实时的聚合结果来达到很好的预测效果。
Apache Flink是下一代开源大数据处理引擎。它是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态计算; 可部署在各种集群环境中,对各种大小规模的数据进行快速计算。
Apache Flink已经被证明可以扩展到数千个内核和TB级的应用程序状态,提供高吞吐量和低时延,并支持世界上一些要求很高的流处理应用程序。例如,Apache Flink在2019年阿里巴巴“双11”场景中突破实时计算消息处理峰值,达到25亿条/秒; 2020年“双11”当时的实时计算峰值达到了破纪录的40亿条/秒,数据量也达到了惊人的7TB/s,相当于一秒读完500万本《新华字典》!随着2020年“双11”阿里巴巴基于Flink实时计算场景的成功,毋庸置疑,Flink将会加速成为大厂主流的数据处理框架,最终化身为下一代大数据处理标准。
Apache Flink作为当前热门的实时计算框架之一,是从业人员及希望进入大数据行业的人员必须学习和掌握的大数据技术之一,但是作为大数据的初学者,在学习Flink时通常会遇到以下几个难题:
(1) 缺少面向零基础读者的Flink入门教程。
(2) 缺少系统化的Flink大数据教程。
(3) 现有的Flink资料、教程或图书较陈旧。
(4) 官方全英文文档难以阅读和理解。
(5) 缺少必要的数据集、可运行的实践案例及学习平台。
特别是Apache Flink从2019年被阿里巴巴收购以后,进入快速版本迭代期,不但版本更新快,而且API变化频繁,笔者在应用和研究Apache Flink时,每当遇到Flink版本更新,就不得不花费大量精力重构已经完成的代码。
为此,一方面是为了笔者自己能更系统、更及时地跟进Flink的演进和迭代; 另一方面也是为了解决面向零基础读者学习Flink(及其他大数据技术)的入门难度,编写了《Flink原理深入与编程实战——Scala Java(微课视频版)》。笔者以为,本书具有以下几个特点:
(1) 面向零基础读者,知识点深浅适当,代码完整易懂。
(2) 内容全面系统,包括架构原理、开发环境及程序部署、流和批计算等,并特别包含了第7章“基于Flink构建批流一体数仓”和第8章“基于Flink和Iceberg数据湖构建实时数仓”内容。
(3) 所有代码均基于Flink 1.13.2。
(4) 双语实现,大部分示例、案例包含Scala和Java两种语言版本的实现。
为降低读者学习大数据技术的门槛,本书除提供了丰富的上机实践操作和详细的范例程序讲解之外,作者还为购买和使用本书的读者提供了搭建好的Hadoop和Flink大数据开发和学习环境。读者既可以参照本书的讲解自行搭建Hadoop和Flink环境,也可直接使用作者提供的开发和学习环境,快速开始对大数据和Flink的学习。
本书特别适合想要入门并深入掌握Apache Flink、流计算的读者,需要大数据系统参考教材的老师及想要了解最新Flink版本应用的从业人员。
当然,由于笔者水平所限,书中难免存在疏漏,敬请读者批评指正。
辛立伟
2022年10月
教学课件(PPT)
本书源代码
评论
还没有评论。