Apache Flink 是一个开源的、基于流的、有状态的计算框架。它是分布式地执行的,具备低延迟、高吞吐的优秀性能,并且非常擅长处理有状态的复杂计算逻辑场景。
- 分布式计算框架
- Stateful Computations over Data Streams 数据流之上的状态计算
- 状态state 计算过程中的中间结果
- 数据流,Flink将数据抽象封装到DataStream中
- 有界 批
- 无解 流
流式计算思想
Flink流式计算程序 来一条处理一条,每次处理一条数据
image.png
step1 ,数据从数据源中获取,封装到datastream中
step 2 ,数据处理中调用算子进行处理
Source
- 流计算与批处理的不同
-
批处理(离线分析)
数据集 -> Task 任务数目 -> 启动Task任务 -> 处理数据 -
流计算(实时分析)
设置Task 任务数目 -> 先启动Task任务 -> 等待数据到达 -> 当数据达到时,各个任务立即处理 -
批处理 数据是一批一批进行处理
流处理 数据是一条一条数据进行处理 -
批处理是先有数据,然后启动程序去处理
流计算是先启动程序,然后等待数据到达, -
批处理 程序处理完成结束关闭
流计算 一般不会关闭,除非手动关闭
-
- Fink cluster
Flink 应用在运行时分为 jobManager taskmanager
客户端将job应用提交给 job manager,jobmanager 分配 slot资源给taskmanager去处理task任务
Flink支持多种安装运行模式,可以将Flink程序运行在很多地方:
本地 集群 k8s
本地模式
启动一个jvm进程 jobmanager和taskmanager 运行在一个机器一个jvm进程内 伪分布式
Standalone集群
image.png- Client客户端提交任务给JobManager;
- JobManager负责申请任务运行所需要的资源并管理任务和资源;
- JobManager分发任务给TaskManager执行;
- TaskManager定期向JobManager汇报状态;
网友评论