[Flink基本概念与部署]--Flink 编程模型【一】

版权声明:尊重原创,转载请标明"本文转自:https://blog.csdn.net/high2011" https://blog.csdn.net/high2011/article/details/83311720

一、Flink基本编程模型

图1

1、Stateful Stream Processing

  • 它位于最底层, 是core API 的底层实现;推荐学习时使用,生产中以稳定为主,不建议使用。
  • processFunction:开发复杂、比较灵活,刚开始学习时,不推荐使用。
  • 利用低阶 API,构建一些新的组件(比如:利用其定时做一定情况下的匹配和缓存)
  • 灵活性高,但开发比较复杂。

2、Core APIs

  • DataStream
  • DataSet

3、Table & SQL

  • SQL 构建在Table 之上,都需要构建Table 环境。
  • 不同的类型的Table 构建不同的Table 环境。
  • Table 可以与DataStream或者DataSet进行相互转换。
  • Streaming SQL 不同于存储的SQL, 最终会转化为流式执行计 划。

二、Flink 构建的流程

1、构建计算环境(决定采用哪种计算执行方式)

datastream(无边界,死循环) 和 dataset(有边界,直到找到那个数据为止)

2、创建Source(可以多个数据源)

•对数据进行不同方式的转换(提供了丰富的算子)

•对结果的数据进行Sink(可以输出到多个地方)

注意:不能少写execute

3、Flink DataFlow

4、Flink 并行化DataFlow

5、window

无界的数据转换为有界的。

•什么是window?

•Window 类 型?

Count Window、Time Window、自定义window

•Window 聚合日常会遇到的问题(数据过热,延迟数据丢弃, 反压等问题)

6、Time类型

•Event Time

•Ingestion Time

•Processing Time

•经常与window 结合

举例:

•一条日志进入Flink的时间为2017-11-12 10:00:00,123】--进入时间,

到达window的系统时 间为2017-11-12 10:00:01,234】--process time. 日志的内容如下:

•2017-11-02 18:37:15,624】--event time INFO

org.apache.hadoop.yarn.client.ConfiguredRMFailoverProxyProvider -  Failing over to rm2

7、State

•什么是状态,状态托管

某个算子的中间状态,有状态的计算比较复杂,无状态计算比较简单(不依赖于其他状态)。

8、Operator State

存储在内存中

9、Keyed State

根据具体情况存储

10、State Backend (rocksdb + hdfs)

先存放在 rocksdb,再异步同步到 hdfs 中。

11、checkpoint

  • 量级容错机制(全局异步,局部同步)
  • 保证exactly-once 语义
  • flink 内部保持一致,不含其他组件时。
  • 用于内部失败的恢复
  • 基本原理(这是面试经常问的)

(1)通过往source 注入barrier

(2)barrier作为checkpoint的标志

12、savepoint

•流处理过程中的状态历史版本

•具有可以replay的功能

•外部恢复(应用重启和升级--修改并行度)

•两种方式触发

(1)Cancel with savepoint:元数据 copy

(2)手动主动触发:某个时间点触发

猜你喜欢

转载自blog.csdn.net/high2011/article/details/83311720