2021年最新最全Flink系列教程_Flink原理初探和流批一体API(二.五)
2023-04-18 12:54:50 时间
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 sum
- sink - 落地数据 addSink print
Source
基于集合的Source
合并-拆分
分流 select 和 outputside
数据重平衡 rebalance
Sink
预定义Sink
/**
* 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
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击