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

理解Flink并行度

前言

我们先提出一个问题:一个算子操作是不是就是一个任务?那是不是程序中的算子数量,就是最终执行的任务数呢?

什么是并行计算

对于 Spark而言,是把根据程序生成的 DAG 划分阶段(stage)、进而分配任务的。而对于 Flink 这样的流式引擎,其实没有划分 stage 的必要。因为数据是连续不断到来的,我们完全可以按照数据流图建立一个“流水线”,前一个操作处理完成,就发往处理下一步操作的节点。如果说 Spark基于 MapReduce 架构的思想是“数据不动代码动”,那么 Flink 就类似“代码不动数据流动”,原因就在于流式数据本身是连续到来的、我们不会同时传输所有数据,这其实是更符合数据流本身特点的处理方式。

在大数据场景下,我们都是依靠分布式架构做并行计算,从而提高数据吞吐量的。既然处理完一个操作就可以把数据发往别处,那我们就可以将不同的算子操作任务,分配到不同的节点上执行了。这样就对任务做了分摊,实现了并行处理。

但是仔细分析会发现,这种“并行”其实并不彻底。因为算子之间是有执行顺序的,对一条数据来说必须依次执行;而一个算子在同一时刻只能处理一个数据。比如WordCount入门程序,一条数据到来之后,我们必须先用 source 算子读进来、再做 flatMap 转换;一条数据被 source读入的同时,之前的数据可能正在被 flatMap 处理,这样不同的算子任务是并行的。但如果多条数据同时到来,一个算子是没有办法同时处理的,我们还是需要等待一条数据处理完、再处理下一条数据——这并没有真正提高吞吐量。

所以相对于上述的“任务并行”,我们真正关心的,是“数据并

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 构建电商Shopify 应用实战指南
  • 【网络】HTTP
  • C盘清理再也不用求人了!掌握这方法一辈子受用!快速彻底清理C盘垃圾
  • 【UCB CS61C】Lecture 1 - Number Representation 数制
  • 若依前后端分离版本vue文件模版
  • 【CSP:202312-1】仓库规划(Java)
  • XSS-games
  • RK3588J正式发布Ubuntu桌面系统,丝滑又便捷!
  • DataFrame中各个列的数据类型,修改数据类型
  • win11使用注册表禁用自动更新
  • 海康相机触发输入输出(含代码)
  • 【Python】高效的Web自动化测试利器—Python+Playwright快速上手自动化实战指南(限时开放)
  • 经典游戏,用java实现的坦克大战小游戏
  • c语言编程有什么难点
  • js拖拽交换元素位置
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • JavaScript设计模式系列一:工厂模式
  • Java多线程(4):使用线程池执行定时任务
  • Java应用性能调优
  • PHP CLI应用的调试原理
  • Python实现BT种子转化为磁力链接【实战】
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 算法---两个栈实现一个队列
  • 微信开源mars源码分析1—上层samples分析
  • 我的zsh配置, 2019最新方案
  • 学习HTTP相关知识笔记
  • Java总结 - String - 这篇请使劲喷我
  • 关于Android全面屏虚拟导航栏的适配总结
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #define用法
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (4)Elastix图像配准:3D图像
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (二)WCF的Binding模型
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (心得)获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .net core 6 redis操作类
  • .Net core 6.0 升8.0
  • .Net Core 中间件验签
  • .NET Core中的去虚
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .Net8 Blazor 尝鲜
  • .net程序集学习心得
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • /bin/bash^M: bad interpreter: No such file ordirectory
  • /ThinkPHP/Library/Think/Storage/Driver/File.class.php  LINE: 48
  • @ConfigurationProperties注解对数据的自动封装