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 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Spark任务中Task数量确定和一些总结 -> 正文阅读

[大数据]Spark任务中Task数量确定和一些总结

本文示例使用的组件:Spark3.x,Hadoop3.x,Spark on Yarn

一些基本的概念

Application: 一个sparkcontext就代表了一个Application
Job :一个Application里可以有多个Job,在代码中的体现就是一次Spark的action算子执行就代表了一个Job
Stage
(1)一个Job可划分为多个Stage,Stage代表Job执行的阶段
(2)有关联的Stage之间是串行执行的,也就是上一个阶段执行完毕才能执行下一个Stage
(3)Stage的划分根据是否有Shuffle(RDD宽依赖,也叫Shuffle依赖)划分的,一个Job的Stage数等于Shuffle数+1

Task:一个Stage可以划分多个Task,一个Stage的Task的总数等于这个Stage中最后一个RDD的分区数量

分区数量:在读取HDFS分布式文件系统时,一般来说Spark RDD的分区数量等于HDFS中文件被切割的块数。(简单理解)

如何计算Task总数?

举个简单的例子如何计算Task总数:
前提:HDFS一个块大小为128M
例子:启动一个Spark的Job读取HDFS目录数据(简单的逻辑只读数据),没有shuffle操作所以只有一个Stage,那么这个Stage会划分多少个Task?
假如要读取的目录为hdfs://tmp/Input目录下一共600G的数据,一共有1024个文件,所以一个文件600M,那么一个文件被切割 600 M/128M 约等于5个block, 那么1024个文件一共就是 5 * 1024 = 5120个块,所以分区数为5120个,那么这个Stage将会被划分5120个Task。

:600 M/128M= 4.6875(因为小数点后面0.6875 > 0.2,则被单独分一个块,假如小数点小于等于0.2,则这部分数据合并为上一块,随着上一个块一起被计算)

Task并行度:并行度代表有多少个Task可以并行执行,一般我们将Spark的并行度调整为:Executor个数 * 单个Executor的CPU个数,还是上面的例子假如有5120个任务,如果我有20个Executor,单个Executor的CPU设置为4核,那么并行度我们可以设置为20 * 4 = 80,那么5120个任务可并行执行的任务数就是80,其余任务排队等待,尽量保证一个CPU处理一个Task。

以上例子仅在Spark Job读的第一个Stage阶段计算有多少个Task,如果其它类型的Job后续有Shuffle操作,那么在Shuffle后的第二个Stage的Task数则和具体的RDD算子逻辑有关系,但task总数还是和shuffle后的分区数一致

=========================================================

如有不对的理解欢迎指正!

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:37:17  更:2022-07-21 21:39:36 
 
开发: 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/19 23:22:40-

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