一、概要
1、什么是流?
不可变的数据集,无限的没有边界。一旦产生不可修改和移除其中的元素,可以查看内部的元素,或者做转换。
2、datasource
3、datasink
4、Iterations
5、容错
6、控制延迟
二、执行模式
1、批处理,命令行设置
$ bin/flink run -Dexecution.runtime-mode=BATCH examples/streaming/WordCount.jar
2、流处理,默认方式
3、执行行为,任务调度和网络shuffle的两种模式也不相同
流处理:所有任务在同一时间在线,立即持续不断的低延迟的处理新数据,taskmanage为job分配足够的资源跑所有任务在同一时间;网络shuffle,低延迟的发往下游任务节点,伴随着网络缓冲,这是因为在任务之间处理连续数据,没有可以落地的时间点。
批处理:把任务切分成阶段,一个一个处理,在送往下一个阶段,完成处理的完。分阶段处理需要Flink将任务的中间结果物化到一些非临时存储中,从而允许下游任务重新进行存储。
三、事件时间和水印
当使用事件时间,就没办法保证数据按事件发生的时间到来的数据。
批处理预先对输入数据是可知的
四、容错
流处理:chickpoint
批处理:回溯到先前的处理阶段
五、水印策略
时间戳注册,水印生成器两个方法
周期性生成,和来一条生成一条两种方式
六、处理状态