当前位置: 首页 > news >正文

【Flink精讲】Flink任务调度机制

Graph 的概念

Flink 中的执行图可以分成四层: StreamGraph -> JobGraph -> ExecutionGraph -> 物理执
行图。

  • StreamGraph:是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。
  • JobGraph: StreamGraph 经过优化后生成了 JobGraph,提交给 JobManager 的数据结构。主要的优化为,将多个符合条件的节点 chain 在一起作为一个节点,这样可以减少数据在节点之间流动所需要的序列化/反序列化/传输消耗。
  • ExecutionGraph: JobManager 根据 JobGraph 生成 ExecutionGraph。 ExecutionGraph 是JobGraph 的并行化版本,是调度层最核心的数据结构。
  • 物 理 执 行 图 : JobManager 根据 ExecutionGraph 对 Job 进行调度后,在各个TaskManager 上部署 Task 后形成的“图”,并不是一个具体的数据结构。

WordCount举例

public static void main(String[] args) throws Exception {
// 检查输入
final ParameterTool params = ParameterTool.fromArgs(args);
...
// set up the execution environment
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
// get input data
DataStream<String> text =
env.socketTextStream(params.get("hostname"), params.getInt("port"), '\n', 0);
DataStream<Tuple2<String, Integer>> counts =
// split up the lines in pairs (2-tuples) containing: (word,1)
text.flatMap(new Tokenizer())
// group by the tuple field "0" and sum up tuple field "1"
.keyBy(0)
.sum(1);
counts.print();
// execute program
env.execute("WordCount from SocketTextStream Example");
}

StreamGraph在Client生成 

分区器

JobGraph在Client生成  

ExecutionGraph在JobManager生成

相关文章:

  • ElasticSearch语法
  • 【计算机网络】深度学习使用应用层的HTTP协议
  • 设计模式: 策略模式
  • 猫毛过敏却想养猫时?如何缓解猫毛过敏?宠物空气净化器推荐
  • Linux——缓冲区封装系统文件操作
  • 3.WEB渗透测试-前置基础知识-快速搭建渗透环境(上)
  • 手写commonJS里面的require函数
  • 基于相位的运动放大:如何检测和放大难以察觉的运动(01/2)
  • 【Java EE初阶二十一】http的简单理解(二)
  • 数据结构 计算结构体大小
  • Spring Boot 手写starter!!!
  • 第二章、FFmpeg增加RTP协议外部扩展信息解析
  • 蓝桥杯嵌入式第12届真题(完成) STM32G431
  • 内核内存回收关键隐藏变量之page引用计数
  • unity学习(38)——创建(create)角色脚本(panel)--EventSystem
  • Bytom交易说明(账户管理模式)
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • javascript 总结(常用工具类的封装)
  • Median of Two Sorted Arrays
  • PAT A1017 优先队列
  • ReactNative开发常用的三方模块
  • 阿里云应用高可用服务公测发布
  • 从零开始学习部署
  • 复习Javascript专题(四):js中的深浅拷贝
  • 解析 Webpack中import、require、按需加载的执行过程
  • 应用生命周期终极 DevOps 工具包
  • 怎么将电脑中的声音录制成WAV格式
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • 测评:对于写作的人来说,Markdown是你最好的朋友 ...
  • ​​​​​​​​​​​​​​Γ函数
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (k8s中)docker netty OOM问题记录
  • (保姆级教程)Mysql中索引、触发器、存储过程、存储函数的概念、作用,以及如何使用索引、存储过程,代码操作演示
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (一)python发送HTTP 请求的两种方式(get和post )
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net core 依赖注入的基本用发
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net2005怎么读string形的xml,不是xml文件。
  • .NET的数据绑定
  • .net连接oracle数据库
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • @ 代码随想录算法训练营第8周(C语言)|Day53(动态规划)
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型
  • [DM复习]Apriori算法-国会投票记录关联规则挖掘(上)