1. 什么是job
Job简单讲就是提交给spark的任务。
2. 什么是stage
Stage是每一个job处理过程要分为的几个阶段。
3. 什么是task
Task是每一个job处理过程要分为几次任务。Task是任务运行的最小单位。最终是要以task为单位运行在executor中。
3. Job和stage和task之间有什么关系
Job----> 一个或多个stage---> 一个或多个task
下图是一个job分成了三个stage:
5.一个stage的task的数量是有谁来决定的?
是由输入文件的切片个数来决定的。在HDFS中不大于128m的文件算一个切片(默认128m)。通过算子修改了某一个rdd的分区数量,task数量也会同步修改。
6.一个job任务的task数量是由谁来决定的?
一个job任务可以有一个或多个stage,一个stage又可以有一个或多个task。所以一个job的task数量是 (stage数量 * task数量)的总和。
上图就是job1有3个task。
7.每一个stage中的task最大的并行度?
- 并行度:是指指令并行执行的最大条数。在指令流水中,同时执行多条指令称为指令并行。
- 理论上:每一个stage下有多少的分区,就有多少的task,task的数量就是我们任务的最大的并行度。
- (一般情况下,我们一个task运行的时候,使用一个cores)
- 实际上:最大的并行度,取决于我们的application任务运行时使用的executor拥有的cores的数量。
如图所示,cores为3,那么最大的并行度就是3。
8.如果我们的task数量超过这个cores的总数怎么办?
先执行cores个数量的task,然后等待cpu资源空闲后,继续执行剩下的task。
9.spark执行时读条中的内容讲解
satge11: 当前的satge编号
(5+4)/9:
其中9:当前stage的task的数量,5:已完成的task数量,4:等待执行的task数量。
文章最后,给大家推荐一些受欢迎的技术博客链接:
- Hadoop相关技术博客链接
- Spark 核心技术链接
- JAVA相关的深度技术博客链接
- 超全干货--Flink思维导图,花了3周左右编写、校对
- 深入JAVA 的JVM核心原理解决线上各种故障【附案例】
- 请谈谈你对volatile的理解?--最近小李子与面试官的一场“硬核较量”
- 聊聊RPC通信,经常被问到的一道面试题。源码+笔记,包懂
欢迎扫描下方的二维码或 搜索 公众号“10点进修”,我们会有更多、且及时的资料推送给您,欢迎多多交流!
评论记录:
回复评论: