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

文章目录

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.自定义序列化器

05 Flink DataStream API

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.7 flink 程序中使用参数

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 TypeRemarks for Data Type
CHAR
VARCHAR
STRING
BOOLEAN
BINARY
VARBINARY
BYTES
DECIMALSupports fixed precision and scale.
TINYINT
SMALLINT
INTEGER
BIGINT
FLOAT
DOUBLE
DATE
TIMESupports only a precision of 0.
TIMESTAMP
TIMESTAMP_LTZ
INTERVALSupports only interval of MONTH and SECOND(3).
ARRAY
MULTISET
MAP
ROW
RAW
Structured typesOnly 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 持久化

8.11 Flink JDBC Driver

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 Flink debugging 调试

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 应用实例展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/653193.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

车载电子电器架构 —— 多核处理器刷写策略

车载电子电器架构 —— 多核处理器刷写策略 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消…

嵌入式Linux系统引导过程详解

大家好,今天给大家介绍嵌入式Linux系统引导过程详解,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 嵌入式Linux系统引导过程是系统启动的关键环节,它涉及…

代码随想录刷题笔记-Day10

1. 用栈实现队列 232.用栈实现队列https://leetcode.cn/problems/implement-queue-using-stacks/description/ 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类&#xf…

ID Mapping技术解析:从Redis到Spark GraphX的演进与应用

目录 一、ID Mapping的背景 二、ID Mapping的重要性 三、ID Mapping的方案 3.1 基于Redis的ID Mapping(效率不行)

Java基础数据结构之反射

一.定义 Java的反射机制是在运行状态中的,对于任意一个类都能知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法及属性。既然能拿到,我们就可以修改部分类型信息。这种动态获取信息以及动态调用对象方法的功能…

Django笔记(七):JWT认证

首 前后端分离的项目更多使用JWT认证——Json Web Token。本文记录djangorestframework-simplejwt的使用方式。文档 安装 pip install djangorestframework-simplejwt 配置settings.py: INSTALLED_APPS [rest_framework_simplejwt, ]REST_FRAMEWORK {DEFAULT_AUTHENTICA…

第一讲_JavaScript概述及三种使用方式

JavaScript概述及三种使用方式 1. JavaScript概述1.1 JavaScript 的作用 2 JavaScript使用方式2.1 行内使用2.2 内部使用2.3 外部使用 1. JavaScript概述 JavaScript主页由三部分组成: ECMAScript:规定 JavaScript 核心,定义了语言的基本语…

系统架构设计师教程(十九)大数据架构设计理论与实践

大数据架构设计理论与实践 19.1 传统数据处理系统存在的问题19.2 大数据处理系统架构分析19.2.1 大数据处理系统面临挑战19.2.2 大数据处理系统架构特征19.3 Lambda架构19.3.1 Lambda架构对大数据处理系统的理解19.3.2 Lambda架构应用场景19.3.3 Lambda架构介绍19.3.4 Lambda架…

【ASP.NET Core 基础知识】--身份验证和授权--用户认证的基本概念

用户认证在网络安全中起着至关重要的作用。首先,它可以确保只有经过授权的用户才能访问特定的资源或服务,从而保护了系统和数据的安全。其次,用户认证可以帮助追踪和记录用户的活动,如果出现安全问题,可以追踪到具体的…

无人机调试开源软件

无人机调试开源软件有以下几个: MissionPlanner:一款功能丰富的开源软件,支持多种无人机,包括固定翼、多旋翼和直升机。它提供了实时的飞行数据监控、地图导航、任务规划以及详细的参数调整选项。APMPlanner2.0:专为A…

CSS--Emmet 语法

Emmet语法的前身是Zen coding,它使用缩写,来提高html/css的编写速度, Vscode内部已经集成该语法. 目录 1. 快速生成HTML结构语法 1.1 快速生成HTML结构语法 2. 快速生成CSS样式语法 2.1 快速生成CSS样式语法 1. 快速生成HTML结构语法 1.1 快速生成HTML结构语法 1. 生成标…

【大厂AI课学习笔记】1.1.4 学科和学习路径

一、8大学科 特点是特点 :厚基础、重交叉、宽口径。 八大学科分别是:数学与统计、科学与工程、计算机科学与技术、人工智能核心、认知与神经科学、先进机器人技术、人工智能工具与平台。 每个学科,又向下延伸。 MORE: AI,即人…

【Java】Java类动态替换Class

Java类动态替换Class 通过Java的Class对象,可以实现动态替换Class。 预习几个知识点 getClassLoader Java提供的ClassLoader可用于动态加载的Java类,可以通过多种形式获取ClassLoader。比如通过Class类获取 // 通过Class获取 ClassLoader classLoade…

springIoc以及注解的使用

注解 注解的定义 注解(Annotation)是一种在 Java 程序中以元数据的形式对代码进行标记和说明的机制。它可以被添加到类、方法、字段、参数等程序元素上,用于提供额外的信息和指示。 也就是说注解是一种标记 注解怎么生效呢? 通…

网络相关知识

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 目录 一、导读二、概览三、相关工具3.1 network profiler/ In…

WebSocket实现私信功能

&#xff37;ebSocket实现私信功能 引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>配置文件 WebSocketConfig package com.example.common;im…

springboot的服务定位模式

一、文件解析器的例子 在开发中我们可能会解析CSV&#xff0c;JSON等文件类型&#xff0c;显然要用策略模式 我们先定义一个Parser接口 public interface Parser {void parse(String input); } Parser接口的实现类有JSONParser&#xff0c;CSVParser Component("CSV&qu…

gRPC 基本原理

基础知识 RPC的语义是远程过程调用&#xff08;Remote Procedure Call&#xff0c;RPC&#xff09;就是将一个服务调用封装在一个本地方法中&#xff0c;让调用者像使用本地方法一样调用服务&#xff0c;对其屏蔽实现细节。 RPC 会给对应的服务接口名生成一个代理类&#xff0c…

DPlayer m3u8 视频禁止下载

1. 介绍 正常的 m3u8 格式视频通过控制台是无法下载的&#xff0c;但是可以通过插件下载&#xff0c;下面介绍如何规避这个问题。 思路&#xff1a;后端生成一个一次性的密钥&#xff0c;前端放在请求头中&#xff0c;可以防止大部分插件下载。这里只说前端。 2. 实现 集成 …

[docker] 关于docker的面试题

docker命名空间&#xff1f; docker与虚拟机的区别&#xff1f; 容器虚拟机所有容器共享宿主机的内核每个虚拟机都有独立的操作系统和内核通过namespace实现资源隔离&#xff0c;通过cgroup实现限制资源的最大使用量完全隔离。每个虚拟机都有独立的硬件资源秒级启动速度分钟级…