来自灵魂的发问之——Flink

祝各位秃头同行们天天开心

1.Flink的抽象层级有几种

Stateful stream processing
Core Api
Table
Sql

2.Window类型
  1. TimeWindow

    Tumbling Window(滚动窗口)
    Sliding Window(滑动窗口)
    Session Window(会话窗口)
    Global Window(全局窗口)

  2. countWindow

  3. 自定义Window

3.Time类型

Flink中的事件和其他流式计算系统的事件一样分为三类:事件时间,摄入事件,处理时间三种。
如果以EventTime为基准来定义事件窗口形成EventTImeWindow,要求消息本身就应该携带EventTime。
如果以IngesingTime为基准来定义事件窗口形成IngestingTimeWindow,以Source的systemTIme为准。
如果以ProcessingTIme为基准来定义事件窗口将形成ProcessingTimeWindow,以operator的systemTIme为基准。

4.FLink Checkpoint的理解

轻量级容错机制(全局异步,局部同步)
保证exactly-once语义
用于内部失败的恢复
基本原理:通过source注入barrier,barrier作为checkpoint的标志

5.Flink SavePoint的理解

流处理过程中的状态历史版本
具有可以replay的功能
外部恢复(应用重启和升级)
两种方式触发:Cancel with savepoint,手动主动触发
$s bin/flink savepoint :jobId [:targetDirectory]
$ bin/flink cancel -s [:targetDirectory] :jobId

6.Flink runtime architecture(结构)

jobmanager
taskmanager
Client
角色间的通信(Akka)
数据的传输(Netty)

7.什么是solts

solts:槽,solt的数量通常与每个taskmanager的可用CPU内核数成比例。
一般情况下你的solt数量是你每个taskmanager的CPU的核数。

8.什么是状态

Defintion
Task/Operator在某个时刻的中间结果
Snapshot
Effect:记录状态并且在失败时用于恢复
Basic type:Operator State,Keyed State

9.运行模式

job模式
独享Dispatcher和Resourcemanager
资源按需申请
适合大大作业
Session模式
共享Dispatcher和Resourcemanager
共用Taskmanager
适合规模小小,运行时间短的作业

10.全量聚合和增量聚合Window

全量聚合:ProcessWindowFunction
增量聚合:ReduceFunction,AggregateFunction,FoldFuncion

11.FLink分区策略

GlobalPartitioner数据会被分发到下游算子的第一个实例中进行处理。
ShufflePartitioner数据会被随机分发到下游算子的每一个实例中进行处理。
RebalancePartitioner数据会被循环发送到下游的每一个实例中进行处理。
RescalePartitioner这种分区器会根据上下游算子的并行度,循环的方式输出到下游算子的每个实例。这里有点难以理解,假设上游并行度为2,编号为A和B。下游并行度为4,编号为1,2,3,4。那么A则把数据循环发送给1和2,B则把数据循环发送给3,4。假设上游并行度为4,标号为A,B,C,D下游并行度为2,标号为1,2,那么A和B则把数据发送给1,C和D则把数据发送给2.
BroadcastPartitioner广播分区会将上游数据输出到下游算子的每个实例中。适合于大数据集和小数据集做join的场景。
ForwardOartitionerForwardPartitioner 用于将记录输出到下游本地的算子实例。它要求上下游算子并行度一样,简单的说,ForwardPartitioner用来做数据的控制台打印。
keyGroupStreamPartitionerHash分区器,会将数据按key的hash值输出到下游算子实例中
CustomPartitionerWrapper用户自定义分区器。需要用户自己实现Partitioner接口,来定义自己的分区逻辑

12.FLink有没有重启策略

FLink实现了多种重启测试。
固定延迟重启策略(Fixed Delay Restart Strategy)
故障录重启策略(Failure Rate Restart Strategy)
没有重启策略(No Restart Strategy)
Fallback 重启策略(Fallback Restart Strategy)

13.FLink中的广播变量

Flink是并行的,计算过程可能不在一个Slot中进行,那么有一种情况即:当我们需要访问同一份数据。那么Flink中的广播变量就是为了解决这种情况。
我们可以把广播变量理解为一个公共的共享变量,我们可以把一个DataSet数据集广播出去,然后不同的Task在节点上都能够获取到,这个数据在每个节点上只会存在一份。

14.Flink中的窗口

Flink支持两种划分窗口的方式,按照Time和Count,如果根据时间划分窗口,那么它就是一个Time-Window如果根据数据划分窗口,那么它就是一个Count-Window。
FLink支持窗口的两个重要属性(size和interval)
如果size=interval,那么就会形成tumbling-window(无重叠数据)如果 size>interval,那么就会形成Sliding-Window(you重叠数据)
通过组合可以得出四种基本窗口:
time-tumbling-window 无重叠数据的时间窗口,设置方式举例:timeWIndow(Time.second(5))
time-sliding-window 有重叠数据的时间窗口,设置方式举例:timeWindow(Time.seconds(5), Time.seconds(3))
count-tumbling-window 无重叠数据的数量窗口,设置方式举例:countWindow(5)
count-sliding-window 有重叠数据的数量窗口,设置方式举例:countWindow(5,3)

15.Flink中的状态存储

FLink在做计算的过程中经常需要存储中间状态,来避免数据丢失和状态恢复。选择的状态存储策略不同,会影响状态持久化如何和checkpoint交互。
FLink提供了三种状态存储方式:MemoryStateBackend,FsStateBackend,RocksDbStateBackend。

16.Flink中水印(watermark)

Watermark是Apache Flink为了处理EventTime窗口计算提出的一种机制,本质上是一种时间戳。一般来讲WaterMark经常和

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值