梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数、Executor数、core数目的关系。

输入可能以多个文件的形式存储在HDFS上,每个File都包含了很多块,称为Block
当Spark读取这些文件作为输入时,会根据具体数据格式对应的InputFormat进行解析,一般是将若干个Block合并成一个输入分片,称为InputSplit,注意InputSplit不能跨越文件。
随后将为这些输入分片生成具体的Task。InputSplit与Task是一一对应的关系。
随后这些具体的Task每个都会被分配到集群上的某个节点的某个Executor去执行。

  • 每个节点可以起一个或多个Executor。
  • 每个Executor由若干core组成,每个Executor的每个core一次只能执行一个Task。
  • 每个Task执行的结果就是生成了目标RDD的一个partiton

注意: 这里的core是虚拟的core而不是机器的物理CPU核,可以理解为就是Executor的一个工作线程。

而 Task被执行的并发度 = Executor数目 * 每个Executor核数。

至于partition的数目:

  • 对于数据读入阶段,例如sc.textFile,输入文件被划分为多少InputSplit就会需要多少初始Task。
  • 在Map阶段partition数目保持不变。
  • 在Reduce阶段,RDD的聚合会触发shuffle操作,聚合后的RDD的partition数目跟具体操作有关,例如repartition操作会聚合成指定分区数,还有一些算子是可配置的。

1,Application

application(应用)其实就是用spark-submit提交的程序。比方说spark examples中的计算pi的SparkPi。一个application通常包含三部分:从数据源(比方说HDFS)取数据形成RDD,通过RDD的transformation和action进行计算,将结果输出到console或者外部存储(比方说collect收集输出到console)。

2,Driver

Spark中的driver感觉其实和yarn中Application Master的功能相类似。主要完成任务的调度以及和executor和cluster manager进行协调。有client和cluster联众模式。client模式driver在任务提交的机器上运行,而cluster模式会随机选择机器中的一台机器启动driver。从spark官网截图的一张图可以大致了解driver的功能。

3,Job

Spark中的Job和MR中Job不一样不一样。MR中Job主要是Map或者Reduce Job。而Spark的Job其实很好区别,一个action算子就算一个Job,比方说count,first等。

4, Task

Task是Spark中最新的执行单元。RDD一般是带有partitions的,每个partition的在一个executor上的执行可以任务是一个Task。

5, Stage

Stage概念是spark中独有的。一般而言一个Job会切换成一定数量的stage。各个stage之间按照顺序执行。至于stage是怎么切分的,首选得知道spark论文中提到的narrow dependency(窄依赖)和wide dependency( 宽依赖)的概念。其实很好区分,看一下父RDD中的数据是否进入不同的子RDD,如果只进入到一个子RDD则是窄依赖,否则就是宽依赖。宽依赖和窄依赖的边界就是stage的划分点

spark:Task,Partition,RDD、节点数、Executor数、core数目的关系和Application,Driver,Job,Task,Stage理解相关推荐

  1. 节点+Executor+Core+Task+Partition+RDD+job+DAG+stage+action算子之间的数量关系+两种并行度的区别

    图解 上面的Core与Task的默认对应关系是一对一,也可以通过.config("spark.task.cpus",1)修改. 这个参数的意思是:为每个任务分配的内核数量 上面图中 ...

  2. Spark 中 File,Block,Split,Task,Partition,RDD概念的理解

    1,在 HDFS 中会以 Block 为单位进行存储很多的 File,也就是说每个 File 可能会被拆分成多个 Block 存储在 HDFS 上: 2,当 Spark 读取 HDFS 上的文件作为输 ...

  3. Spark中Task,Partition,RDD、节点数、Executor数、core数目(线程池)、mem数

    Spark中Task,Partition,RDD.节点数.Executor数.core数目的关系和Application,Driver,Job,Task,Stage理解 from:https://bl ...

  4. 【有限元分析】在ANSYS经典版中划分网格后,如何查看单元数和节点数

    1.第一种方式,采用命令流的方式输入,比如查找节点数,可输入: *get,nodecount,node,,count 命令流的输入窗口如下图所示: 然后就可以在ansys的输出窗口得到相关数值  同样 ...

  5. Spark二之RDD

    一.Spark RDD 概述 Resilient Distributed Dataset(http://spark.apache.org/docs/latest/rdd-programming-gui ...

  6. Spark分区 partition 详解

    一.前提 每一个过程的任务数,对应一个inputSplit1, Partition输入可能以多个文件的形式存储在HDFS上,,每个File都包含了很多块,(128M切分),称为Block. 当Spar ...

  7. spark基础之RDD详解

    一 什么是RDD,有什么特点? RDD: Resilient Distributed Dataset,弹性分布式数据集. 特点: # 它是一种数据的集合 # 它可以被分区,每一个分区分布在不同的集群中 ...

  8. Spark总结之RDD(四)

    Spark总结之RDD(四) 1. 背景 Spark针对RDD的整体设计思想很多地方和MapReduce相似,但又做了很多优化. Spark整体API设计针对分布式数据处理做了很多优化,并且做了更高层 ...

  9. Spark中,RDD概述(五大属性,弹性介绍,5个特性)

    1 什么是RDD RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark 中最基本的数据抽象,它代表一个不可变.可分区.里面的元素可并行计算的集合.在Spa ...

最新文章

  1. 计算机c语言循环作业,C语言计算机作业编程.doc
  2. java接口有非抽象方法_[Java教程]纳尼,java可以在接口中实现非抽象方法了?
  3. 前端可视化编程:liveReload安装,sublime 3
  4. vue打包后CSS中引用的背景图片不显示问题
  5. python笔记14-读取yaml配置文件(pyyaml)
  6. python-图书管理系统2-整体 代码架构
  7. vfp邮件.html格式,VFP 实现自动发邮件代码
  8. mysql手册02_事务
  9. python 英语翻译 excel_Python翻译Excel文件
  10. 另一种blast2go的思路
  11. 运算放大器 之 概述
  12. 【hud3966】树剖模板05
  13. rm: cannot remove `xxx’: Operation not permitted的解决方法
  14. input文本框中添加提示文字,输入后自动消失
  15. 欧姆龙SYSMAC STUDIO如何与基恩士DL-EP1进行EIP通信
  16. linux fuse 性能,分布式文件系统---fuse挂载类性能测试
  17. Android 方向传感器的简单使用
  18. 财务说账单上少了一分钱,老板看到代码气疯了
  19. vue component组件内部自己引用自己
  20. doraemon的python 线程详解

热门文章

  1. 硬盘分区不够,怎么合并分区?
  2. Google发展史 Google十三年
  3. JAVASE常见面试题总结
  4. RT-1052学习笔记 - GPIO架构分析
  5. element分页组件,搜索过后current-page 绑定的数据变了,但是页面当前页码并没有变的问题
  6. KeyTweak(笔记本键盘设置工具) V2.20 中文版
  7. LOB字段相关概念(自动创建LOB索引段和重建索引方法)
  8. java hasfocus_说说Flutter中的无名英雄 —— Focus
  9. 【UML】UML建模
  10. Thunderbolt雷电接口