事件驱动型应用-定义

事件驱动型应用是一类具有状态的应用,该应用会根据事件流中的事件触发计算、更新状态或进行外部系统操作。事件驱动型应用常见于实时计算业务中,比如:实时推荐,金融反欺诈,实时规则预警等。

事件驱动型应用架构

flink hudi cow mor 表区别 flink hop_flink

数据和计算中间结果存储在state中 数据的完整性和正确性的维护放在远程的分布式FS中。(详细:)

???SQL中hop函数的含义

hop(ts,INTERVAL’1’ MINUTE,INTERVAL’5’ MINUTE);//ts:为时间戳(格林威治事件距当前时间共有多少秒),第一个INTERVAL为滑动窗口的步长,第二个INTERVAL为滑动窗口的大小。

flink hudi cow mor 表区别 flink hop_数据_02


通过WATERMARK解决数据迟到的问题。

其中的Hop_ROWTIME()函数的作用是获取窗口中rowtime的最大值(注释:rowtime就是event_time)。

数据分析型应用

flink hudi cow mor 表区别 flink hop_事件驱动_03

???数据分析型应用-Over Window(开窗)

flink hudi cow mor 表区别 flink hop_数据_04


其中:

1、agg1(col1)表示聚合函数。

2、PARTITION BY表示分区(意思是确定col1上的某个具体的分量)。

3、ORDER BY表示按某个属性进行排序。

4、RANGE BETWEEN (UNBOUNDED | timelnterval)PRECEDING AND CURRENT ROW)AS colName,… 表示窗口的大小(意为从当前数据往前多少个数据或者多少时间内的数据)(其中 AS colName)表示在输出时给这个over函数计算出的这一列内容起个别名。

???UDF

指的是flink中的自定义函数

数据管道型应用

flink hudi cow mor 表区别 flink hop_flink_05

???ELT中的L

???数据库仓库与数据湖

???数据仓库中的schame

何为算子?

在流处理、交互式查询中有个常用的概念是“算子”,在英文中被成为“Operation”,其实就是一个处理单元,往往是指一个函数,在使用算子时往往会有输入和输出,算子则完成相应数据的转化,比如:Group、Sort等都是算子。

Flink状态一致性

状态一致性分类: https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/connectors/guarantees.html
• AT-MOST-ONCE(最多一次):当任务故障时,最简单的做法是什么都不干,既不恢复丢失的状态,也不重播丢失的数据。At-most-once 语义的含义是最多处理一次事件。
• AT-LEAST-ONCE(至少一次):在大多数的真实应用场景,我们希望不丢失事件。这种类型的保障称为 at- least-once,意思是所有的事件都得到了处理,而一些事件还可能被处理多次。
• EXACTLY-ONCE(精确一次):恰好处理一次是最严格的保证,也是最难实现的。恰好处理一次语义不仅仅 意味着没有事件丢失,还意味着针对每一个数据,内部状态仅仅更新一次

EXACTLY-ONCE(精确一次):通过checkpoint(快照)机制来保证

Flink安装

0、要在linux的环境下
1、安装java
2、在官网下载flink安装包https://flink.apache.org/zh/downloads.html#apache-flink-1113 3、下载flink后进行解压缩(我下载的是flink-1.11.3版本的)

tar zxf flink-1.11.1-bin-hadoop26-scala_2.11.tgz

4、配置环境变量

通过vim /etc/profile进入到配置文件中开始配置环境变量

flink hudi cow mor 表区别 flink hop_事件驱动_06

flink hudi cow mor 表区别 flink hop_事件驱动_07

5、然后进入到flink-1.11.3/bin文件夹中

cd flik-1.11.3
cd bin

然后查看bin目录下的内容

flink hudi cow mor 表区别 flink hop_flink_08


运行start-cluster.sh文件

flink hudi cow mor 表区别 flink hop_flink_09


提示权限不够输入sudo su命令然后输入管理员密码开启系统的管理员权限

然后再一次执行./start-cluster.sh命令

flink hudi cow mor 表区别 flink hop_flink_10


执行成功。

运行Flink自带的示例wordcount

1、通过浏览器进步flink的UI界面网址是localhost:8081

flink hudi cow mor 表区别 flink hop_flink_11

2、查看flink自带的示例有哪些

(1)进入到flink-1.11.3文件下的example文件在进入streaming文件查看flink提供的示例

flink hudi cow mor 表区别 flink hop_事件驱动_12


(2)我们可以看到里面包含很多示例,我们要运行的是SocketWindowWordCount.jar

3、此时重新打开一个终端输入命令nc -l 9000。目的是启动一个监听端口,用于模拟我们的数据流入口。

4、然后进入到flink.1.11.3的文件下,运行如下命令:

flink hudi cow mor 表区别 flink hop_flink_13


5、进入localhost:8081\进行查看

flink hudi cow mor 表区别 flink hop_数据_14


显示有一个任务正在运行

6、进入到flink-1.11.3的log文件中并查看其中的日志文件

flink hudi cow mor 表区别 flink hop_flink_15


运行如下命令查看日志文件中的结果

flink hudi cow mor 表区别 flink hop_flink_16


上图日志中包含之前的统计的记过(示例的统计逻辑为每行中每个单词的频率)

flink hudi cow mor 表区别 flink hop_flink_17