Flink基础
Flink核心特性
- 统一数据处理组件栈,处理不同类型的数据需求(Batch,Stream,Machine Learning,Graph)
- 支持事件时间,接入时间,处理时间等时间概念

- 基于轻量级分布式快照实现的容错

- 支持有状态计算
- Support for very large state
- querable state支持
- 灵活的state-backend(HDFS,内存,RocksDB)
- 支持高度灵活的窗口操作

- 带反压的连续流模型

- 基于JVM实现独立的内存管理
- 应用可以超出主内存的大小限制,并且承受更少的垃圾收集的开销
- 对象序列化二进制存储,类似于C对内存的管理

Flink集群架构
集群架构
- JobManager:管理节点,每个集群至少一个,管理整个集群计算资源,Job管理与调度执行,以及checkpoint协调。
- TaskManager:每个集群有多个TM,负责计算资源提供。
- Client:本性执行main方法解析JobGraph对象,并最终将JobGraph提交到JobManager运行,同时监控Job执行的状态。

JobManager

- Checkpoint Coordinator
- JobGraph ->Execution Graph
- Task部署与调度
- RPC通信(Actor System)
- Job接收(Job Dispatch)
- 集群资源管理(ResourceManager)
- TaskManager注册与管理
TaskManager

- Task Execution
- Network Manager
- Shuffle Environment 管理
- Rpc通信(Actorsystem)
- Heartbeat withJobManager And RM
- Data Exchange
- Memory Management
- Register To RM
- Offer Slots ToJobManager
Client

- Application's main()Method执行
- JobGraph Generate
- Execution Environment 管理
- Job提交与运行
- DependenyJar Ship·RPC WithJobManager
- 集群部署(Cluster Deploy)