前言

写作背景

党中央、国务院高度重视大数据产业发展,推动实施国家大数据战略。习近平总书记就推动大数据和数字经济相关战略部署、发展大数据产业多次做出重要指示。工业和信息化部会同相关部委建立大数据促进发展部际联席会议制度,不断完善政策体系,聚力打造大数据产品和服务体系,积极推进各领域大数据融合应用,培育发展大数据产业集聚高地。

党的二十大报告指出“深入实施科教兴国战略、人才强国战略、创新驱动发展战略,开辟发展新领域新赛道,不断塑造发展新动能新优势”。随着大数据应用技术的快速发展,企业对流式数据进行实时处理和分析的应用将越来越普遍。所谓流式数据,就是源源不断产生的数据流。这类数据流没有起点,也没有终点。对流式数据的处理和分析,需要首先将无界的数据流转换为有界的数据流,然后进行实时的处理和分析。一个典型的应用场景是网站单击流的实时分析。用户在网站上浏览网页,单击自己感兴趣的网站链接,此时,用户所有的单击行为都是以数据流的形式发送到服务器。对用户行为进行分析,不仅可以为用户及时推荐其感兴趣的网站内容、提供更好的用户体验,而且会为网站带来更多的收益。

Apache Flink是一个开源的分布式大数据处理引擎和计算框架,能够对无界数据流和有界数据流进行统一处理,也可以对流式数据进行有状态和无状态计算。2014年,Flink以孵化项目的形式进入Apache软件基金会,并在2015年成为Apache基金会的顶级项目。Flink在初创阶段就非常活跃,用户及贡献者群体不断扩大。随着Flink的快速发展,它在企业级项目中的应用越来越广泛,被认为是工业界最好的数据流处理引擎之一。

本书采用理论与实践相结合的方式,以项目为主线设计教学实践环节,由浅入深地讲解 Flink 在企业级项目中的应用,尤其是网站日志实时分析系统的应用。读者在项目学习过程中,可以边学边练,循序渐进。相信按照本书讲解的步骤进行操作,读者可以完成相应的学习任务。通过本书的学习,读者可以逐步增强使用Flink大数据分析项目的实践能力。

本书读者对象

本书适合需要使用Flink进行大数据处理的程序员、架构师和产品经理作为技术参考手册和培训资料,也可作为高校本科生和研究生的教材。

如何阅读本书

本书以项目实践作为主线,结合必需的理论知识,以任务的形式进行教学设计,每个任务都包含任务描述及任务实施的步骤。

各项目的主要内容如下。

项目1介绍流式数据的基础知识,涉及Flink的简介及发展历史、Flink的系统架构及Flink API概念,同时介绍了如何基于IDEA搭建项目开发环境,以便为后续开发项目打下基础。

项目2讲解Flink的集群部署模式、如何搭建Flink集群,以单词实时统计项目为例来介绍从Flink程序开发到部署以及集群运行的整个流程。

项目3讲解Flink流式API的基本应用,主要包括Flink程序执行环境、数据源、数据转换操作及与结果输出相关的流式API的应用。

项目4讲解Flink时间和窗口API的应用,可以帮助读者深入理解Flink时间语义、窗口、水位线、侧输出流等概念及应用场景。

项目5介绍Flink高级应用,主要包括数据的分流及合并流操作、Flink状态管理及故障恢复机制的设置等。

项目6阐述Flink Table和SQL的应用。Flink Table和SQL属于Flink更高层的API,用于将数据流转换为表,可以帮助开发人员通过比较熟悉的SQL语句对表进行操作,降低Flink API的学习成本,从而极大地提高Flink项目的开发效率。

项目7讲解Flink CEP的应用。Flink CEP是Flink处理复杂事件的库,该库通过定义复杂事件的模式,从数据流中提取异常事件,如用户登录连续失败的应用等。

项目8介绍Kafka集群的安装和常用操作,以及Flink和Kafka的集成方式。Flink可以作为Kafka的数据源,Kafka中的消息也可以实时地写入Flink中,Flink和Kafka的集成可以建立流式数据实时处理的通道。

项目9阐述基于Flink的网站日志实时分析系统。该项目综合运用本书的知识点,讲解网站日志的生成、收集及分析的流程。

勘误和支持

由于作者的水平有限,加上编写时间仓促,书中难免会存在疏漏之处,恳请读者批评指正。如果你有更多的宝贵意见,欢迎通过出版社与我们取得联系,期待能够得到你们的真挚反馈。

编著者