IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Flink-Task、SubTask、并行度 -> 正文阅读

[大数据]Flink-Task、SubTask、并行度

Task与SubTask

一个算子就是一个Task. 一个算子的并行度是几,?这个Task就有几个SubTask

对应关系:

算子=Task

并行度=SubTask

task是抽象概念,subtask是物力概念

Parallelism并行度

默认并行度--cpu核数

关键点

不同的并行度(subtask),肯定在不同的slot,但也可能在不同的taskmanager

一个流程序的并行度,可以认为就是其所有算子中算子并行度最大的并行度

数据传输模式:

One-to-one

类似于spark中的窄依赖

Redistributing

类似于spark中的宽依赖

stream(map()跟keyBy/window之间或者keyBy/window跟sink之间)

例如,keyBy()基于

hashCode重分区(类似shuffler)、

broadcast(一个流向多个)

rebalance(并行度不一致)

设置并行度

如何控制操作链(生产环境下不会用):

1. .startNewChain()
? ?从当前算子开启一个新链

2. .disableChaining()
? ?当前算子不会和任何的算子组成链

3.env.disableOperatorChaining();
? ?全局禁用操作链

给算子设置并行度(优先级越来越高,4最高):? ??

1. 在配置文件中 flink.yaml ? ?parallelism.default: 1

2. 在提交job的时候通过参数传递 ? ?-p 3

3. 通过执行环境来设置并行度 ? ?env.setParallelism(1); ?? ??

4. 单独的给每个算子设置并行度

Operator Chains(任务链)-->这是flink默认的优化

相同并行度的one to one操作,Flink将这样相连的算子链接在一起形成一个task,原来的算子成为里面的一部分。?每个subtask被一个线程执行.

将算子链接成task是非常有效的优化:它能减少线程之间的切换和基于缓存区的数据交换,在减少时延的同时提升吞吐量。链接的行为可以在编程API中进行指定

ExecutionGraph(执行图)(了解即可)

由Flink程序直接映射成的数据流图是StreamGraph,也被称为逻辑流图,因为它们表示的是计算逻辑的高级视图。为了执行一个流处理程序,Flink需要将逻辑流图转换为物理数据流图(也叫执行图),详细说明程序的执行方式。

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

??StreamGraph:

是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构

??JobGraph

StreamGraph经过优化后生成了 JobGraph,是提交给 JobManager 的数据结构。主要的优化为:?将多个符合条件的节点 chain 在一起作为一个节点,这样可以减少数据在节点之间流动所需要的序列化/反序列化/传输消耗。

??ExecutionGraph

JobManager 根据 JobGraph 生成ExecutionGraph。ExecutionGraph是JobGraph的并行化版本,是调度层最核心的数据结构。

??Physical Graph

JobManager 根据 ExecutionGraph 对 Job 进行调度后,在各个TaskManager 上部署 Task 后形成的“图”,并不是一个具体的数据结构。

2个并发度(Source为1个并发度)的 SocketTextStreamWordCount 四层执行图的演变过程

env.socketTextStream().flatMap(…).keyBy(0).sum(1).print();

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:53:03  更:2021-08-02 10:55:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 23:12:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码