1、flink关键字对比spark
flink | spark |
---|---|
operator | RDD |
operator chain | stage |
data flow | DAG |
one to one | 窄依赖 |
redistribute | 宽依赖 |
subtask | task |
task | taskset |
partition | partition |
Parallelism | Parallelism |
2、任务调度流程
- client向HDFS提交flink的jar包和相关配置
- 然后向resourceManager提交任务,resourceManager分配Container资源并通知相应的NodeManager启动ApplicationMaster
- ApplicationMaster启动后加载flink的jar包和相关配置,同时启动jobManager
- ApplicationMaster向resourceManager申请资源启动taskManager
- resourceManager为taskManager分配资源后,由ApplicationMaster在对应的NodeManager上启动taskManager
- taskManager启动完成后,加载flink的jar包和相关配置
- taskManager向jobManager发送心跳包汇报运行状况,等待jobManager分配运行任务
3、Flink的执行图
- Flink会根据代码执行流程生成DAG数据流图,生成顺序为:streamGraph、jobGraph、executionGraph、物理执行图
- 1、streamGraph:程序原始执行流程图,也就是算子的依赖关系,在client上生成
- 2、jobGraph:对程序执行流程图进行一定程度的优化,如将one to one的operator生成operator chain,在client上生成
- 3、executionGraph:对程序中设置的并行度和提交的资源进行并行规划,在jobManager上生成
- 4、物理执行图:将executionGraph的并行计划落实到taskManager上,将subTask落实到具体的taskSlot上