【极数系列】Flink详细入门教程 & 知识体系 & 学习路线(01)

文章目录

  • [01 引言](#01 引言)
  • [02 Flink是什么](#02 Flink是什么)
    • [2.1 Flink简介](#2.1 Flink简介)
    • [2.2 Flink架构](#2.2 Flink架构)
    • [2.3 Flink应用场景](#2.3 Flink应用场景)
    • [2.4 Flink运维](#2.4 Flink运维)
  • [03 Flink环境搭建](#03 Flink环境搭建)
    • [3.1 Flink服务端环境搭建](#3.1 Flink服务端环境搭建)
    • [3.2 Flink部署模式](#3.2 Flink部署模式)
    • [3.3 Flink开发环境搭建](#3.3 Flink开发环境搭建)
  • [04 Flink数据类型以及序列化](#04 Flink数据类型以及序列化)
    • [4.1 数据类型](#4.1 数据类型)
    • [4.2 数据序列化](#4.2 数据序列化)
  • [05 Flink DataStream API](#05 Flink DataStream API)
    • [5.1 执行模式](#5.1 执行模式)
    • [5.2 事件时间Watermark](#5.2 事件时间Watermark)
    • [5.3 自定义Functions](#5.3 自定义Functions)
    • [5.4 状态与容错](#5.4 状态与容错)
    • [5.5 应用程序参数处理](#5.5 应用程序参数处理)
    • [5.6 ParameterTool工具读取配置](#5.6 ParameterTool工具读取配置)
    • [5.7 flink 程序中使用参数](#5.7 flink 程序中使用参数)
    • [5.8 Java Lambda 表达式](#5.8 Java Lambda 表达式)
    • [5.9 执行配置](#5.9 执行配置)
  • [06 Flink数据源Source](#06 Flink数据源Source)
    • [6.1 核心组件](#6.1 核心组件)
    • [6.2 **流处理和批处理的统一**](#6.2 流处理和批处理的统一)
    • [6.3 Data Source API](#6.3 Data Source API)
    • [6.4 SplitReader API](#6.4 SplitReader API)
    • [6.5 事件时间和水印](#6.5 事件时间和水印)
  • [07 Flink窗口函数](#07 Flink窗口函数)
    • [7.1 窗口简介](#7.1 窗口简介)
    • [7.2 窗口生命周期](#7.2 窗口生命周期)
    • [7.3 窗口函数](#7.3 窗口函数)
    • [7.4 Triggers 触发器](#7.4 Triggers 触发器)
    • [7.5 Evictors数据剔除器](#7.5 Evictors数据剔除器)
    • [7.6 数据延迟处理](#7.6 数据延迟处理)
    • [7.7 窗口数据结果获取](#7.7 窗口数据结果获取)
    • [7.8 多个数据流合并](#7.8 多个数据流合并)
    • [7.9 Process Function 函数](#7.9 Process Function 函数)
    • [7.10 I/O异步操作](#7.10 I/O异步操作)
  • [08 Table API & SQL](#08 Table API & SQL)
    • [8.1 简介](#8.1 简介)
    • [8.2 通用api](#8.2 通用api)
    • [8.3 流式概念](#8.3 流式概念)
    • [8.4 流式聚合](#8.4 流式聚合)
    • [8.5 数据类型](#8.5 数据类型)
    • [8.6 时区](#8.6 时区)
    • [8.7 函数](#8.7 函数)
    • [8.8 存储过程](#8.8 存储过程)
    • [8.9 模块](#8.9 模块)
    • [8.10 Catalogs](#8.10 Catalogs)
    • [8.11 Flink JDBC Driver](#8.11 Flink JDBC Driver)
    • [8.12 SQL客户端](#8.12 SQL客户端)
  • [09 Table API](#09 Table API)
  • [10 SQL](#10 SQL)
  • [11 DataStream连接器](#11 DataStream连接器)
    • [11.1 数据格式](#11.1 数据格式)
    • [11.2 Data Source 和 Sink 的容错保证](#11.2 Data Source 和 Sink 的容错保证)
    • [11.3 支持的数据连接器](#11.3 支持的数据连接器)
  • [12 Table API 连接器](#12 Table API 连接器)
  • [13 Deployment部署](#13 Deployment部署)
    • [13.1 java兼容性](#13.1 java兼容性)
    • [13.2 部署方式](#13.2 部署方式)
    • [13.3 配置参数](#13.3 配置参数)
    • [13.4 内存配置](#13.4 内存配置)
    • [13.5 弹性扩缩容](#13.5 弹性扩缩容)
    • [13.6 命令行界面](#13.6 命令行界面)
    • [13.7 细粒度资源管理](#13.7 细粒度资源管理)
    • [13.8 File Systems](#13.8 File Systems)
    • [13.9 高可用](#13.9 高可用)
    • [13.10 系统指标采集导出](#13.10 系统指标采集导出)
    • [13.11 安全认证](#13.11 安全认证)
    • [13.12 拓展](#13.12 拓展)
  • [14 Flink debugging 调试](#14 Flink debugging 调试)
    • 14.1调试窗口与事件时间
    • [14.2 调试类加载](#14.2 调试类加载)
    • [14.3 火焰图](#14.3 火焰图)
    • [14.4 应用程序分析与调试](#14.4 应用程序分析与调试)
  • [15 Flink监控](#15 Flink监控)
    • [15.1 快照监控](#15.1 快照监控)
    • [15.2 监控背压](#15.2 监控背压)
  • [16 Flink图API](#16 Flink图API)
  • [17 Flink机器学习](#17 Flink机器学习)
    • [17.1 简介概述](#17.1 简介概述)
    • [17.2 机器学习算子](#17.2 机器学习算子)
    • [17.3 数据预处理](#17.3 数据预处理)
    • [17.4 推荐算法](#17.4 推荐算法)
    • [17.5 机器学习管道](#17.5 机器学习管道)
  • [18 Flink复杂事件处理](#18 Flink复杂事件处理)
    • [18.1 简介概述](#18.1 简介概述)
    • [18.2 Patterm API 使用](#18.2 Patterm API 使用)
    • [18.3 事件如何获取](#18.3 事件如何获取)
    • [18.4 应用实例展示](#18.4 应用实例展示)

01 引言

​ 1.最近工作中接触到相关的风控项目,里面用到Flink组件做相关的一些流数据或批数据处理,接触后发现确实大数据组件框架比之传统应用开发,部署,运维等方面有很大的优势;

​ 2.工作中遇到不少问题,可惜当时没有形成文档记录的习惯,不少宝贵的经验久而久之就忘了,所以开个**博客专栏《极数系列》**记录Flink以及大数据相关笔记,也是时刻提醒自己需要不断学习。

​ 3.学习任何框架之前还是需要对这个框架有些许了解,才好快速入门以及给后续进阶打基础,参考Flink官网最新的1.18版本文档,整理了下Flink框架相关的一些知识体系与架构,诸君共勉!

​ 4.相关网址:

​ Flink官网:https://flink.apache.org/

​ Flink版本:https://flink.apache.org/blog/

​ Flink文档:https://ci.apache.org/projects/flink/flink-docs-release-1.12/

​ Flink代码库:https://github.com/apache/flink

02 Flink是什么

2.1 Flink简介

2.2 Flink架构

1.无边界和有边界的数据

2.应用程序部署选择

3.应用程序运行模式

4.内存状态

2.3 Flink应用场景

1.事件驱动型应用

2.数据分析应用

3.数据管道应用

2.4 Flink运维

1.怎么保证7 * 24小时稳定运行?

2.怎么升级、迁移、暂停、恢复应用?

03 Flink环境搭建

3.1 Flink服务端环境搭建

1.Linux环境搭建

2.docker容器化环境搭建

3.2 Flink部署模式

1.本地单机模式部署

2.Standalone独立集群部署

3.HA高可用集群部署

4.Yarn部署

3.3 Flink开发环境搭建

1.idea开发工具配置

2.Flink依赖引入

3.maven使用 shade 插件构建包

4.Flink高级配置

04 Flink数据类型以及序列化

4.1 数据类型

1.Java元组和Scala案例类

2.Java POJO

3.原生数据类型

4.常规类型

5.数据值

6.Hadoop数据类型

7.特殊类型

4.2 数据序列化

1.状态数据结构升级

2.自定义状态数据序列化

3.自定义序列化器

5.1 执行模式

1.流模式

2.批模式

5.2 事件时间Watermark

1.Watermark简介

2.Watermark策略

5.3 自定义Functions

1.如何自定义?

2.定制累加器和计数器

5.4 状态与容错

1.状态计算

2.广播状态模

3.快照Checkpointing

4.状态管理器

5.5 应用程序参数处理

5.6 ParameterTool工具读取配置

5.8 Java Lambda 表达式

5.9 执行配置

06 Flink数据源Source

6.1 核心组件

1.分片

2.源阅读器

3.分片枚举器

6.2 流处理和批处理的统一

1.有界File Source

2.无界File Source

6.3 Data Source API

1.SplitEnumerator

2.SourceReader

3.Source 使用方法

6.4 SplitReader API

1.SplitReader

2.SourceReaderBase

3.SplitFetcherManager

6.5 事件时间和水印

1.事件时间戳

2.水印生成

07 Flink窗口函数

7.1 窗口简介

7.2 窗口生命周期

1.分组函数

2.窗口分配器

  • 滚动窗口
  • 滑动窗口
  • 会话窗口
  • 全局窗口

7.3 窗口函数

1.ReduceFunction 函数

2.AggregateFunction 函数

3.ProcessWindowFunction 函数

4.增量聚合ProcessWindowFunction 函数

5.在 ProcessWindowFunction 中使用 per-window state

6.WindowFunction(已过时)

7.4 Triggers 触发器

1.触发与清除(Fire & Purge)

2.WindowAssigner 默认的 Triggers

3.内置 Triggers 和自定义 Triggers

7.5 Evictors数据剔除器

  • CountEvictor
  • DeltaEvictor
  • TimeEvictor

7.6 数据延迟处理

1.旁路输出

2.建议

7.7 窗口数据结果获取

1.连续窗口操作

2.水印与窗口的交互

7.8 多个数据流合并

1.滚动合并

2.滑动合并

3.会话合并

4.Interval Join间隔合并

7.9 Process Function 函数

7.10 I/O异步操作

1.异步操作简介

2.超时处理

3.结果顺序

4.事件时间

5.容错保证

6.重试支持

7.实现方案

8.警告&注意事项

08 Table API & SQL

8.1 简介

1.什么是Table API ?可以做什么?

2.什么是Table SQL?可以做什么?

8.2 通用api

1.Table API 和 SQL 程序的结构

2.创建 TableEnvironment

3.在 Catalog 中创建表

4.查询表

5.输出表

6.翻译与执行查询

7.查询优化

8.解释表

8.3 流式概念

1.什么是流式概念?

2.动态表

3.流上的确定性

4.时间属性

5.时态表

6.Temporal Table Function 函数

8.4 流式聚合

1.MiniBatch 聚合

2.Local-Global 聚合

3.拆分 distinct 聚合

4.在 distinct 聚合上使用 FILTER 修饰符

8.5 数据类型

Data Type Remarks for Data Type
CHAR
VARCHAR
STRING
BOOLEAN
BINARY
VARBINARY
BYTES
DECIMAL Supports fixed precision and scale.
TINYINT
SMALLINT
INTEGER
BIGINT
FLOAT
DOUBLE
DATE
TIME Supports only a precision of 0.
TIMESTAMP
TIMESTAMP_LTZ
INTERVAL Supports only interval of MONTH and SECOND(3).
ARRAY
MULTISET
MAP
ROW
RAW
Structured types Only exposed in user-defined functions yet.

8.6 时区

1.TIMESTAMP vs TIMESTAMP_LTZ

2.时区的作用

3.时间属性和时区

4.夏令时支持

8.7 函数

1.函数

2.系统内置函数

3.自定义函数

8.8 存储过程

1.存储过程类

2.Call方法

3.类型推导

8.9 模块

1.模块类型

2.模块生命周期

3.命名空间

4.如何加载,卸载和使用模块

8.10 Catalogs

1.Catalogs类型

2.创建于注册到Catalog

3.Catalog API

4.Table API 与 SQL Client 如何操作?

5.Catalog Modification Listener

6.Catalog Store 持久化

1.依赖

2.JDBC POOL连接池

3.支持语言

8.12 SQL客户端

1.简介

2.安装部署

3.配置

8.13 SQL gateway

1.简介

2.如何启动与执行作业

3.REST Endpoint 交互

4.HiveServer2 Endpoint 交互

09 Table API

1.数据查询&过滤

2.列操作

3.分租聚合操作

4.联表操作

5.排序、偏移量,限制操作

6.插入

7.窗口分组操作

8.Over Windows

9.基于行生成多列输出的操作

10 SQL

1.简介

2.Flink sql 部署安装

3.Queries 查询

4.CREATE 语句

5.DROP 语句

6.ALTER 语句

7.INSERT 语句

8.ANALYZE 语句

9.DESCRIBE 语句

10.TRUNCATE 语句

11.EXPLAIN 语句

12.USE 语句

13.SHOW 语句

14.LOAD 语句

15.UNLOAD 语句

16.SET 语句

17.RESET 语句

18.JAR 语句

19.JOB 语句

20.UPDATE 语句

21.DELETE 语句

22.CALL 语句

11 DataStream连接器

11.1 数据格式

1.Avro

2.Azure Table

3.Hadoop

4.Parquet

5.Text files

6.JSON

7.CSV

11.2 Data Source 和 Sink 的容错保证

11.3 支持的数据连接器

1.kafka数据连接器

2.Cassandra数据连接器

3.Cassandra数据连接器

4.DynamoDB 数据连接器

5.elasticsearch 数据连接器

6.Firehose 数据连接器

7.亚马逊 Kinesis 数据流 SQL

8.MongoDB 数据连接器

9.Opensearch 数据连接器

10.文件系统

11.RabbitMQ 连接器

12.Google Cloud PubSub

13.Hybrid 连接器

14.Apache Pulsar 连接器

15.JDBC 数据库连接器

12 Table API 连接器

13 Deployment部署

13.1 java兼容性

1.java 8

2.java 11

3.java 17

13.2 部署方式

1.Standalone

2.Native Kubernetes

3.YARN

13.3 配置参数

13.4 内存配置

13.5 弹性扩缩容

13.6 命令行界面

13.7 细粒度资源管理

13.8 File Systems

13.9 高可用

13.10 系统指标采集导出

13.11 安全认证

13.12 拓展

14.1调试窗口与事件时间

1.监控当前时间

2.处理散乱的事件时间

14.2 调试类加载

1.简介概述

2.倒置类加载

3.避免用户代码的动态类加载

4.手动进行用户代码的类加载

5.X cannot be cast to X 异常

6.卸载用户代码中动态加载的类

7.通过maven-shade-plugin解决与Flink的依赖冲突

14.3 火焰图

14.4 应用程序分析与调试

1.使用 Java Flight Recorder 分析

2.使用 JITWatch 分析

3.分析内存溢出(OOM)问题

4.分析内存和垃圾回收行为

15 Flink监控

15.1 快照监控

1.概览(Overview)选项卡

2.历史记录(History)选项卡

3.摘要信息(Summary)选项卡

4.配置信息(Configuration)选项卡

5.Checkpoint 详细信息

15.2 监控背压

16 Flink图API

16.1 简介概述

16.2 Graph API

16.3 图迭代器

16.4 图生成器

17 Flink机器学习

17.1 简介概述

17.2 机器学习算子

17.3 数据预处理

17.4 推荐算法

17.5 机器学习管道

18 Flink复杂事件处理

18.1 简介概述

18.2 Patterm API 使用

18.3 事件如何获取

18.4 应用实例展示

相关推荐
WTT00111 小时前
2024楚慧杯WP
大数据·运维·网络·安全·web安全·ctf
云云3216 小时前
怎么通过亚矩阵云手机实现营销?
大数据·服务器·安全·智能手机·矩阵
新加坡内哥谈技术6 小时前
苏黎世联邦理工学院与加州大学伯克利分校推出MaxInfoRL:平衡内在与外在探索的全新强化学习框架
大数据·人工智能·语言模型
Data-Miner6 小时前
经典案例PPT | 大型水果连锁集团新零售数字化建设方案
大数据·big data
lovelin+v175030409667 小时前
安全性升级:API接口在零信任架构下的安全防护策略
大数据·数据库·人工智能·爬虫·数据分析
道一云黑板报7 小时前
Flink集群批作业实践:七析BI批作业执行
大数据·分布式·数据分析·flink·kubernetes
darkdragonking7 小时前
OpenEuler 22.03 安装 flink-1.17.2 集群
flink·openeuler
core5127 小时前
flink sink kafka
flink·kafka·sink
节点。csn7 小时前
flink集群搭建 详细教程
大数据·服务器·flink