flink1.12.x 教程目录

基础

  1. flink1.12.x 介绍

  2. flink1.12.x 目录结构

安装部署

local 单机模式(学习用)

  1. flink1.12.x local单机模式-原理(图)

  2. flink1.12.x local单机模式-安装部署、启动、测试wordcount(读写本地文件)

  3. flink1.12.x local单机模式-支持 HDFS(hadoop3)、测试wordcount(读写HDFS文件)

standalone 独立集群模式(企业几乎不用)

  1. flink1.12.x standalone独立集群模式-原理 和 服务器规划(图)

  2. flink1.12.x standalone独立集群模式-安装部署(支持 HDFS)

  3. flink1.12.x standalone独立集群模式-启动、停止

  4. flink1.12.x standalone独立集群模式-开启历史服务(historyserver)

  5. flink1.12.x 启动、停止历史服务命令(historyserver)

  6. flink1.12.x standalone独立集群模式-测试wordcount(读写HDFS文件)

  7. flink1.12.x 8081 web管理页面

  8. flink1.12.x 8082 历史服务web管理页面

  1. flink on yarn:Per-Job模式、Session模式
per-job cluster模式(企业主流)
  1. flink1.12.x:per-job cluster模式(yarn-cluster)部署

  2. flink1.12.x per-job cluster模式(yarn-cluster)-测试SocketWindowWordCount

session cluster模式
  1. flink1.12.x:session cluster模式部署

  2. flink1.12.x:session cluster模式-测试wordcount

命令

  1. flink1.12.x flink run 执行flink程序(per-job cluster模式)

  2. flink1.12.x flink run 执行flink程序(session cluster模式)

  3. flink1.12.x flink cancel停止flink任务命令

其他

yarn-session.sh命令参数

flink1.12.x flink run命令参数

api 快速入门

  1. flink1.12.x api介绍

  2. flink1.12.x 创建第一个工程(修改maven settings.xml)

  3. flink1.12.x DataSet实现wordcount

  4. flink1.12.x 代码设置流模式、批模式、自动模式

  5. flink1.12.x DataStream实现wordcount- 连接socket(TCP)服务器-java写法

  6. flink1.12.x DataStream实现wordcount- 连接socket(TCP)服务器-lambda写法

  7. flink1.12.x DataStream实现wordcount- 连接socket(TCP)服务器-lambda简化写法

  1. flink1.12.x 实现wordcount-上传到flink集群,flink run执行jar-连接socket(TCP)服务器

  2. flink1.12.x 实现wordcount-上传到flink集群,flink run执行jar-读写HDFS文件

  3. flink1.12.x flink run命令参数

  4. flink1.12.x 设置job名称

  5. flink1.12.x idea本地执行时启动webui服务

  6. flink1.12.x 打印执行计划

架构和概念

  1. flink1.12.x client、JobManager、TaskManager角色分工和执行流程(Dataflow)

  2. flink1.12.x Task Slots 和 slot sharing共享slot

  3. flink1.12.x Streaming Dataflow并行原理(Partition、Subtask、Parallelism)

  4. flink1.12.x Streaming Dataflow:source、Transformation、sink和对应程序代码

  5. flink1.12.x 相关概念:无界数据(无界流)和有界数据(有界流)、批计算和流式计算

api 详解

  1. flink1.12.x StreamExecutionEnvironment获取执行环境

source数据源

  1. flink1.12.x source数据源介绍

  2. flink1.12.x source数据源-文件

  3. flink1.12.x source数据源-集合

  4. flink1.12.x source数据源-socket套接字

  5. flink1.12.x Connector连接器

  6. flink1.12.x source数据源-kafka

  7. flink1.12.x 自定义source数据源-SourceFunction、ParallelSourceFunction、RichParallelSourceFunction

数据类型

  1. flink1.12.x 支持的数据类型

Transformation

注意1:flink1.12.x 算子运算时,不要抛出异常,否则可能会导致其他算子无法继续运行,抛出Interrupted after 0 tries while maxAttempts=16异常

注意2:flink1.12.x 算子有成员变量时,该成员变量必须实现Serializable序列话接口

  1. flink1.12.x Transformation-map算子

  2. flink1.12.x Transformation-filter算子

  3. flink1.12.x Transformation-flatMap算子

  4. flink1.12.x Transformation-keyBy算子

  5. flink1.12.x Rich Function富函数

重分区算子

  1. flink1.12.x 重分区算子-forward()

  2. flink1.12.x 重分区算子-rebalance()

  3. flink1.12.x 重分区算子-global()

  4. flink1.12.x 重分区算子-broadcast() 广播

  5. flink1.12.x 重分区算子-partitionCustom自定义分区

  6. flink1.12.x 重分区算子-shuffle()、rescale()

sink

  1. flink1.12.x sink

  2. flink1.12.x Connector连接器

  3. flink1.12.x sink-JdbcSink保存数据到mysql数据库

  4. flink1.12.x sink-发送数据到kafka(自定义序列化器)

  5. flink1.12.x sink-发送数据到kafka-自定义分区器(partition)

  6. flink1.12.x sink-发送数据到elasticsearch7

  7. flink1.12.x sink-发送数据到redis(bahir)

  8. flink1.12.x sink-自定义sink(继承RichSinkFunction)

  9. flink1.12.x sink-自定义sink将数据保存到redis中

flink1.12.x 四个重要概念:Checkpoint、State、Time、Window

Window 窗口

  1. flink1.12.x window窗口和分类(time window、count window、session window会话窗口)

窗口 api

  1. flink1.12.x window窗口api使用说明:assigner、function、triger、evictor

  2. flink1.12.x timeWindow()、countWindow()和timeWindowAll()、countWindowAll()、window()、windowAll()区别

数量窗口

  1. flink1.12.x count window 数量滚动窗口(Tumbling Window)

  2. flink1.12.x count window 数量滑动窗口(Sliding Windows)

会话窗口

flink1.12.x 会话窗口

Time 时间

  1. flink1.12.x Time分类-Event Time事件时间、Ingestion Time摄入时间、Processing Time处理时间

  2. flink1.12.x time window属性:size窗口大小、slide滑动间隔 和 滑动窗口、滚动窗口

处理时间窗口

  1. flink1.12.x window api使用-处理时间的滚动窗口(TumblingProcessingTimeWindows)

  2. flink1.12.x window api使用-处理时间的滑动窗口(SlidingProcessingTimeWindows)

窗口函数(window function)

  1. flink1.12.x 窗口函数介绍、分类

  2. flink1.12.x window function窗口函数-增量聚合函数、全量窗口函数(全窗口函数)

  3. flink1.12.x 窗口函数(window function)-增量 AggregateFunction

  4. flink1.12.x 窗口函数(window function)-全量窗口函数 ProcessWindowFunction

  5. flink1.12.x 窗口函数(window function)-全量窗口函数 WindowFunction

  6. flink1.12.x 窗口函数(window function)-增量 AggregateFunction 结合 全量 ProcessWindowFunction

Event Time 事件时间 和 WaterMark 水位线

  1. flink1.12.x Event Time事件时间的重要性、乱序数据、迟到数据、WaterMark

  2. flink1.12.x watermark 水印、水位线

  3. flink1.12.x 创建 watermark 步骤

  4. flink1.12.x WaterMark 案例:滚动窗口

  5. flink1.12.x watermark 源码分析

  6. flink1.12.x WaterMark 案例:滚动窗口验证

  7. flink1.12.x 水位线生成时机、分配器(Periodic Watermarks周期性分配水位线、Punctuated Watermarks定点水位线)

收集迟到丢弃的数据

  1. flink1.12.x Watermark 迟到数据 allowedLateness()

  2. flink1.12.x WaterMark 迟到数据丢失和收集OutputTag

  3. flink1.12.x WaterMark 迟到数据丢失和收集(OutputTag、allowLateness)

  4. flink1.12.x WaterMark 迟到数据丢失和收集(OutputTag、allowLateness)-案例

Process Function

  1. flink1.12.x Process Function处理函数介绍、分类

  2. flink1.12.x Process Function-ProcessFunction函数,理解watermark计算方式

  3. flink1.12.x 窗口函数(window function)-增量 AggregateFunction 结合 全量 ProcessWindowFunction(watermark案例)

State 状态

  1. flink1.12.x State状态-无状态、有状态

  2. flink1.12.x State状态分类(Managed State、Raw State、Keyed State、Operator State)

  3. flink1.12.x State状态数据类型:ValueState、ListState、ReducingState、AggregatingState、MapState

  4. flink1.12.x State状态实现 maxBy() 功能

综合案例

  1. flink1.12.x Process Function-KeyedProcessFunction函数-订单超时取消案例(定时器)

  2. flink1.12.x Process Function-KeyedProcessFunction函数-订单超时取消案例(处理时间)

Checkpoint 检查点

  1. flink1.12.x 为什么提出checkpoints一致性检查点

  2. flink1.12.x Checkpoint检查点流程

  3. flink1.12.x Checkpoint检查点算法Barrier

  4. flink1.12.x checkpoint:从检查点恢复状态

  5. flink1.12.x End-to-End 端到端数据一致性:at-most-once、at-least-once

  6. flink1.12.x 容错机制:State Backends状态后端-MemoryStateBackend、FsStateBackend、RocksDBStateBackend

  7. flink1.12.x Checkpoint 清除策略

  8. flink1.12.x 容错机制:状态后端-全局配置、代码中配置

  9. flink1.12.x checkpoint:代码演示案例(封装设置checkpoint方法)

  10. flink1.12.x 容错机制:状态恢复和自动重启策略分类

    1. flink1.12.x 容错机制:自动重启策略-默认重启策略(代码演示)

    2. flink1.12.x 容错机制:自动重启策略-无重启策略(代码演示)

    3. flink1.12.x 容错机制:自动重启策略-固定延迟重启策略(常用,代码演示)

    4. flink1.12.x 容错机制:自动重启策略-失败率重启策略(代码演示)

savepoint

  1. flink1.12.x Savepoint(与 checkpoint 的区别)

  2. flink1.12.x Savepoint 案例 - per-job cluster模式

  3. flink1.12.x Savepoint 案例 - session cluster模式

sink

  1. flink1.12.x sink-FileSink写入到文件

  2. flink1.12.x sink-FileSink写入到文件,自定义桶名(文件夹名)

多流操作

合并流

  1. flink1.12.x Transformation-union()合并同类型的数据流

  2. flink1.12.x Transformation-connect()合并不同类型的数据流

  3. flink1.12.x Transformation-union() 和 connect() 的区别

拆分流

  1. flink1.12.x Transformation-拆分流-侧流(side output)

  2. flink1.12.x 先connect连接流,再拆分流-侧流(side output)

join

  1. flink1.12.x 双流 join - 介绍

  2. flink1.12.x 双流 join - tumbling window join滚动窗口联结

  3. flink1.12.x 双流 join - interval join间隔联结

table api 和 SQL

  1. flink1.12.x Table API 和 SQL介绍

  2. flink1.12.x Table API 和 SQL:TableEnvironment、table表和view视图

  3. flink1.12.x Table API 和 SQL:开发流程-流转换动态表

  4. flink1.12.x Table API 和 SQL:开发流程-动态表 和 持续查询

  5. flink1.12.x Table API 和 SQL:开发流程-查询结果表转换成流

  6. flink1.12.x Table API 和 SQL:基本程序结构

source:DataStream 转换成 Table

  1. flink1.12.x SQL:创建工程,从socket读取数据,实现查询(DataStreamSource转View)

  2. flink1.12.x Table API 和 SQL:Connector 连接器

  3. flink1.12.x Table API 和 SQL:Connector 连接器从kafka读取数据

  4. flink1.12.x Table API 和 SQL:创建工程,读取csv文件,创建表,实现查询(connector连接器)

查询结果 Table 转换成 DataStream

  1. flink1.12.x Table API 和 SQL:Table 转换成 DataStream

  2. flink1.12.x Table API 和 SQL:更新模式:追加Append、撤回Retract、更新插入Upsert

  3. flink1.12.x SQL:从socket读取数据,实现分组聚合查询(Retract)

  4. flink1.12.x Table API 和 SQL:读取csv文件,实现分组聚合查询(Retract)

sink

  1. flink1.12.x Table API 和 SQL:sink将查询结果写入到文件(非聚合查询)

kafka

  1. flink1.12.x Table API 和 SQL:从kafka读取数据,执行查询,将结果写入到kafka中

  2. flink1.12.x Table API 和 SQL:sink将查询结果写入到elasticsearch(聚合查询)

  3. flink1.12.x Table API 和 SQL:从kafka读取数据,聚合查询,写入到elasticsearch

窗口 和 时间

  1. flink1.12.x SQL:事件时间和watermark,时间类型(TIMESTAMP和TIMESTAMP_LTZ)

  2. flink1.12.x SQL:Group Windows 窗口查询

  3. flink1.12.x SQL:滚动窗口-显示窗口时间函数:TUMBLE_START、TUMBLE_END、TUMBLE_ROWTIME、TUMBLE_PROCTIME

  4. flink1.12.x SQL:滚动窗口、水位线 案例

udf用户自定义函数

  1. flink1.12.x Table API 和 SQL:UDF用户自定义函数介绍

  2. flink1.12.x Table API 和 SQL:UDF用户自定义函数-ScalarFunction标量函数

  3. flink1.12.x Table API 和 SQL:UDF用户自定义函数-AggregateFunction聚合函数

table api

  1. flink1.12.x Table API:从socket读取数据,实现分组聚合查询(Retract)

其他

  1. flink1.12.x Table API 和 SQL:Catalogs 介绍

  2. flink1.12.x Table API 和 SQL:Row、RowTypeInfo、TypeInformation、BasicTypeInfo

  3. flink1.12.x Table API 和 SQL:Table转View

  4. flink1.12.x SQL:时间戳转换:TO_TIMESTAMP、FROM_UNIXTIME

CEP

  1. flink1.12.x FlinkCEP介绍

  2. flink1.12.x FlinkCEP-模式:.where()、begin()、next()、followedBy()

  3. flink1.12.x FlinkCEP-处理匹配事件:select()、flatSelect()、process()

  4. flink1.12.x FlinkCEP创建工程-处理连续三次登录失败

  5. flink1.12.x FlinkCEP-打印watermark,理解处理连续三次登录失败

打包运行

  1. flink1.12.x 打包pom.xml,yarn方式运行(socket案例)

  2. flink1.12.x 打包pom.xml,yarn方式运行(kafka案例)

  3. flink1.12.x Table API 和 SQL:kafka读写数据,打包、上传到flink集群、yarn方式执行

  4. flink1.12.x Table API 和 SQL:kafka读写数据,上传到flink集群,flink run执行jar(独立集群模式)

  5. flink1.12.x Table API 和 SQL:读取HDFS文件,将结果写入到HDFS,上传到flink集群,flink run执行jar(独立集群模式)

  6. flink1.12.x Table API 和 SQL:从kafka读取数据,写入到elasticsearch,上传flink集群,flink run执行jar(独立集群模式)

解析命令行参数、读取外部配置文件

  1. flink 使用 ParameterTool 解析命令行参数

  2. flink 使用 ParameterTool 读取外部配置文件

  3. flink 使用 ParameterTool 读取外部配置文件,在算子中访问配置(全局变量)

其他

  1. flink1.12.x 执行官方例子-wordcount

  2. flink1.12.x 支持HDFS(hadoop3)

  3. flink1.12.x flink run命令参数

  4. flink 维表关联、翻译字典

常见错误

  1. maven-resources-plugin:jar:2.6 is missing, no dependency information available

  2. flink1.12.x:Could not complete the operation. Number of retries has been exhausted.

  3. flink1.12.x:拒绝连接: hadoop2/192.168.58.102:47

  4. Slot request bulk is not fulfillable! Could not allocate the required slot within slot request timeout


原文出处:/show_1IX204ietmJH.html