2025年最新最全Flink系列教程_Flink原理初探和流批一体API(二.五)

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模式
Flink之执行图
流处理概念数据的时效性 强调的是数据的处理时效 处理的时间窗口, 按月, 按天, 按小时还是秒级处理 流处理和批处理 批处理是有界的数据 处理完整的数据集, 比如排序数据, 计算全局的状态, 生成最终的输入概述.批量计算: 统一收集数据->存储到DB->对数据进行批量处理 流处理是无界的数据 窗口操作来划分数据的边界进行计算流式计算,顾名思义,就是对数据流进行处理 在Flink1.12时支持流批一体 既支持流处理也支持批处理。
流批一体 Flink1.12.x 批处理和流处理 可复用性: 作业在流模式或者批处理两种模式自由切换, 无需重写任何代码.维护简单: 统一的 API 意味着流和批可以共用同一组 connector,维护同一套代码.编程模型
source - 读取数据源transformation - 数据转换 map flatMap groupBy keyBy sumsink - 落地数据 addSink printSource基于集合的Source合并-拆分分流 select 和 outputside数据重平衡 rebalanceSink预定义Sink代码语言:javascript代码运行次数:0运行复制
/** * 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 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();    }}
自定义SinkConnectorFlink官方提供的连接器, 用于连接 JDBC 或者 Kafka ,MQ等JDBC 连接方式Kafka 连接方式从 kafka 集群中消费数据Flink写入到 Redis 数据库问题 vmware 打开镜像文件 15.5.x 升级为 16.1.0 , 可以升级为 fromSequece(1,10) , CPU 12线程, from log