2021-12-07 10:13:50
浏览数 (1)
day02-03_流批一体API
今日目标
- 流处理原理初探
- 流处理概念(理解)
- 程序结构之数据源Source(掌握)
- 程序结构之数据转换Transformation(掌握)
- 程序结构之数据落地Sink(掌握)
- Flink连接器Connectors(理解)
流处理原理初探
- Flink的角色分配
- JobMaster 老大, 主要负责 集群的管理, 故障的恢复, checkpoint 检查点设置
- taskmanager worker 小弟, 具体负责任务的执行节点
- client 提交任务的界面
- taskmanager 执行能力
- taskslot 静态的概念
- parallelism 并行度 动态概念
- 每个节点就是一个 task 任务
每个任务拆分成多个并行处理的任务, 多个线程就有多个子任务,就叫子任务 subtask
- 流图 StreamGraph 逻辑执行流图 DataFlow
operator chain 操作链
- JobGraph
ExecuteGraph 物理执行计划
- Event 事件 带有时间戳的
- Operator 传递模式 : one to one 模式, redistributing模式
流处理概念
数据的时效性
- 强调的是数据的处理时效
处理的时间窗口, 按月, 按天, 按小时还是秒级处理
流处理和批处理
- 批处理是有界的数据
- 处理完整的数据集, 比如排序数据, 计算全局的状态, 生成最终的输入概述.
- 批量计算: 统一收集数据->存储到DB->对数据进行批量处理
- 流处理是无界的数据
- 窗口操作来划分数据的边界进行计算
- 流式计算,顾名思义,就是对数据流进行处理
- 在Flink1.12时支持流批一体 既支持流处理也支持批处理。
- 流批一体 Flink1.12.x 批处理和流处理
- 可复用性: 作业在流模式或者批处理两种模式自由切换, 无需重写任何代码.
- 维护简单: 统一的 API 意味着流和批可以共用同一组 connector,维护同一套代码.
编程模型
- source - 读取数据源
- transformation - 数据转换 map flatMap groupBy keyBy sum
- sink - 落地数据 addSink print
Source
基于集合的Source
合并-拆分
分流 select 和 outputside
数据重平衡 rebalance
Sink
预定义Sink
代码语言:javascript
复制/**
* Author itcast
* Desc
* 1.ds.print 直接输出到控制台
* 2.ds.printToErr() 直接输出到控制台,用红色
* 3.ds.collect 将分布式数据收集为本地集合
* 4.ds.setParallelism(1).writeAsText("本地/HDFS的path",WriteMode.OVERWRITE)
*/
public class SinkDemo01 {
public static void main(String[] args) throws Exception {
//1.env
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
//2.source
//DataStream ds = env.fromElements("hadoop", "flink");
DataStream<String> ds = env.readTextFile("data/input/words.txt");
//3.transformation
//4.sink
ds.print();
ds.printToErr();
ds.writeAsText("data/output/test", FileSystem.WriteMode.OVERWRITE).setParallelism(2);
//注意:
//Parallelism=1为文件
//Parallelism>1为文件夹
//5.execute
env.execute();
}
}
自定义Sink
Connector
- Flink官方提供的连接器, 用于连接 JDBC 或者 Kafka ,MQ等
JDBC 连接方式
Kafka 连接方式
从 kafka 集群中消费数据
Flink写入到 Redis 数据库
问题
- vmware 打开镜像文件 15.5.x 升级为 16.1.0 , 可以升级为
- fromSequece(1,10) , CPU 12线程, from <= to
设置的并行度大于生成的数据, 并行度为12, 生成数据只有 10 个,报这个。
- Flink Standalone HA 高可用
jobmanager -> log