- MAC安装Flink单机
- 提交word count到本地Flink
- Flink的集群架构
- jobManager
- TaskManager
- Client
- jobGraph
- Flink集群部署模式
- Session集群运行模式
- Per-job运行模式
- Session集群和Per-job类型集群问题
- Application Mode集群运行模式
- Flink集群部署 Cluster Management支持
- Native集群
- Standalone(多机)部署
- Yarn集群架构原理
- 分布式流处理模型(DataFlow)
- DataStream API
- Flink中的时间类型
- Watermark Generator
- Two Styles of Watermark Generation
- Timestamp Assign与Watermark Generate
- Timestamp Assign与Watermark Generate
- PeriodicWatermarks定义
- PunctuatedWatermarks定义
- Source Functions with Timestamps and Watermarks
- Watermark Strategies介绍
- Using Watermark Strategies
- Watermark Strategies and the Kafka Connector
- Writing WatermarkGenerators
- Periodic WatermarkGenerator Define
- Punctuated WatermarkGenerator
- Watermark总结
- 窗口计算
MAC安装Flink单机
| brew install apache-flink /opt/homebrew/Cellar/apache-flink/1.13.1/libexec/bin/start-cluster.sh http://localhost:8081/ |
|---|
提交word count到本地Flink
flink run -c com.cordell.SocketTextStreamWordCount /Users/leiwang/IdeaProjects/demo/target/demo-1.0-SNAPSHOT.jar 127.0.0.1 9000
Flink的集群架构
jobManager
TaskManager
Client
jobGraph
Flink集群部署模式
根据两种条件讲部署模式分为三种类型:
- 集群的生命周期和资源隔离
- 根据程序的main()方法执行在client还是在jobManager
- Session Mode
- 共享jobManager和TaskManager,所有提交的job都在一个runtime中运行。
- Per-job Mode
- 独享的jobManager与TaskManager,好比为每个job单独启动一个Runtime。
- Application Mode(1.11版本提出)
Per-job运行模式

Session集群和Per-job类型集群问题
Application Mode集群运行模式

Flink集群部署 Cluster Management支持
Native集群
Standalone(多机)部署

Yarn集群架构原理
Flink On Yarn Session

Flink On Yarn Per-job
Flink on Yarn优劣
分布式流处理模型(DataFlow)
DataStream API
API介绍
Flink DataStream程序实例
StreamExecutionEnvironment
DataStream数据源
DataStream基本数据源
Kafka连接器
import org.apache.flink.api.common.serialization.SimpleStringSchema;
import org.apache.flink.streaming.api.datastream.DataStreamSource;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer011;
import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer011;
import java.util.Properties;
public class FlinkDemo {
public static void main(String[] args) throws Exception {
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
Properties props = new Properties();<br /> props.put("bootstrap.servers", "localhost:9092");<br /> props.put("zookeeper.connect", "localhost:2181");<br /> props.put("group.id", "metric-group");<br /> props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer"); //key 反序列化<br /> props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");<br /> props.put("auto.offset.reset", "latest"); //value 反序列化DataStreamSource<String> dataStreamSource = env.addSource(new FlinkKafkaConsumer011<>(<br /> "metric", //kafka topic<br /> new SimpleStringSchema(), // String 序列化<br /> props)).setParallelism(1);<br /> //kafka生产者<br />// FlinkKafkaProducer011<String> flinkKafkaProducer = new FlinkKafkaProducer011<>(<br />// "metric"<br />// ,new SimpleStringSchema()<br />// ,props);<br />// dataStreamSource.addSink(flinkKafkaProducer);dataStreamSource.print(); //把从 kafka 读取到的数据打印在控制台<br /> env.execute("Flink add data source");<br /> }<br />}
DataStream主要转换操作
理解KeyedStream
DataStream之间的转换
物理分组操作
Flink中的时间类型
基于Event Time处理数据
Watermark

Watermark是一种告诉Flink一个消息延迟多少的方式。它定义了什么时候不再等待更早的数据。
可以把Watermarks理解为一个水位线,这个Watermarks在不断的变化。Watermark实际上作为数据流的一部分随数据流流动。
当Flink中的运算符接收到Watermarks时,它明白早于该时间的消息已经完全抵达计算引擎,即假设不会再有时间小于水位线的事件到达。
这个假设是触发窗口计算的基础,只有水位线越过窗口对应的结束时间,窗口才会关闭和进行计算。
并行中的Watermark
Watermark与window之间的关系(Append Mode)
Watermark与Window之间的关系(Update Mode)
Watermark使用总结
Watermark Generator
Two Styles of Watermark Generation
Timestamp Assign与Watermark Generate
Timestamp Assign与Watermark Generate
PeriodicWatermarks定义
PunctuatedWatermarks定义
Source Functions with Timestamps and Watermarks
在定义source的run方法里制定timestamps和watermarks的获取
Watermark Strategies介绍
Using Watermark Strategies
Watermark Strategies and the Kafka Connector
Writing WatermarkGenerators
Periodic WatermarkGenerator Define
Punctuated WatermarkGenerator
Watermark总结
窗口计算
为什么需要窗口计算
Window应用场景
Window抽象概念
Windows编程接口
Keyed Windows
Non-Keyed WIndows
Window Assigner
Flink中的窗口类型
Sliding Window滑动窗口
Tumbliing Window滚动窗口
Session Window
Global Window
Flink内置的windows
Predefined Keyed Windows
Predefined Keyed Windows实例
Predefined Non-keyed Windows
Window Trigger
触发机制
水位线触发

当时间进入后,算出waterMark大于算子中的waterMark,就会将12.00-12.05的窗口数据进行汇总。
指定时间触发

当事件中的间隔时间大于制定时间就会触发窗口的输出

12.03对于上一个12.04 没有触发两分钟的设置值,而且没有触发更新Watermark,所以不会参与窗口计算。
12.08进入以后触发更新水位,同时为更新模式,会把12.03的记录更新到上一个窗口。
Window Evictor 数据清除器
Window Function
Window AggregateFunction
WIndowProcessFunction
WindowFunction分类
ReduceFunction
AggregateFunction实例
Predefined Aggregations
ProcessWindowFunction定义
ProcessWindowFunction
多流合并











