Spark作业的基本概念

-Application:用户自定义的Spark程序,用户提交后,Spark为App分配资源将程序转换并执行。

-Driver Program:运行Application的main()函数并且创建SparkContext。

-RDD DAG:当RDD遇到Action算子,将之前的所有算子形成一个有向无环图(DAG)。再在Spark中转化为Job,提交到集群进行执行。一个App中可以包含多Job。

-Job:一个RDD Graph触发的作业,往往由Spark Action算子触发,在SparkContext中通过runJob方法向Spark提交Job。

-Stage:每个Job会根据RDD的宽依赖关系被切分很多Stage,每个Stage中包含一组相同的Task,这一组Task也叫TaskSet。

-Task:一个分区对应一个Task,Task执行RDD中对应Stage中所包含的算子。Task被封装好后放入Executor的线程池中执行。Executor会在线程池中取得一个线程,分配给一个任务,之后任务执行完成,线程池回收线程。

Spark程序与作用概念映射

val rawFile = sc.textFile("README.md") //Application:1-6行

(将输入的文本文件转化为RDD)

val words = rawFile.flatMap(line=>line.split(" ")) //Job:1-5行

(将文本文件映射为word单词,将文本文件进行分词,转换为一个单词的RDD)

val wordNumber = words.map(w=>(w,1)) //Stage:1-3或4-5行

(将RDD中的每个单词映射为,单词名称为key,value为1的kye-value对)

val wordCounts = wordNumber.reduceByKey(_+_) //Tasks:1-3或4-5行

(通过reduceBykey操作,将同一个单词的数据进行聚集,进而统计好每一个单词的个数)

wordCounts.foreach(println)

(foreach输出每一个单词的计数)

wordCounts.saveAsTextFile

(saveAsTextFile将结果保存到磁盘)

6行代码对应为一个Application,这个应用程序中有两个Job,1-5行是一个Job,1-4 + 6行是一个Job。

在1-5行这个Job中:
1-3行是一个stage,4-5行是一个stage,因为map和reduceByKey之间要进行shuffle操作。

 

Spark作业运行流程

-Spark程序转换,将应用程序提交到集群,集群将程序由一个application转换成不同的任务集;

-在集群中输入数据块

-集群会根据调度策略执行各个Stage的Tasks分发到各个节点,在每个数据块上进行执行

-执行完成后,会根据shuffle在集群中将结果进行混洗,再进行下一阶段的Stage,直到所有Stage执行完毕,输出结果返回

Spark的基本概念及工作原理的更多相关文章

  1. Android 基于Netty的消息推送方案之概念和工作原理(二)

    上一篇文章中我讲述了关于消息推送的方案以及一个基于Netty实现的一个简单的Hello World,为了更好的理解Hello World中的代码,今天我来讲解一下关于Netty中一些概念和工作原理的内 ...

  2. LVM基本概念及工作原理

    LVM基本概念及工作原理 背景知识: 一直困惑于LVM,特地找资料查了查,终于对LVM的概念和工作原理有了深入的理解.接下来记录下.新的技术出来必定是为了改变现有的不足,所以LVM的出现是由于对现有磁 ...

  3. zabbix监控的基础概念、工作原理及架构(一)

    zabbix监控的基础概念.工作原理及架构 转载于网络 一.什么是zabbix及优缺点 Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的 ...

  4. Elasticsearch系列---Elasticsearch的基本概念及工作原理

    基本概念 Elasticsearch有几个核心的概念,花几分钟时间了解一下,有助于后面章节的学习. NRT Near Realtime,近实时,有两个层面的含义,一是从写入一条数据到这条数据可以被搜索 ...

  5. SaltStack 的基本概念与工作原理 架构设计

    随着云计算技术的快速普及与发展,越来越多的企业开始学习和搭建自己的云平台代替传统的 IT 交付模式,企业的 IT 环境也随之越来越复杂,常规的运维方法与技术已经无法满足现在云环境中系统的配置与变更.基 ...

  6. zabbix监控的基础概念、工作原理及架构

    一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WE ...

  7. Spark Streaming初步使用以及工作原理详解

    在大数据的各种框架中,hadoop无疑是大数据的主流,但是随着电商企业的发展,hadoop只适用于一些离线数据的处理,无法应对一些实时数据的处理分析,我们需要一些实时计算框架来分析数据.因此出现了很多 ...

  8. NAT、NAPT(PAT)的基本概念和工作原理及区别

    转自:http://blog.sina.com.cn/s/blog_5d302bd20100gprv.html 近年来,随着 Internet 的迅猛发展,连入 Internet 的主机数量成倍增长. ...

  9. VRRP概念、工作原理

    VRRP是一种路由容错协议,也可以叫做备份路由协议,可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台. 控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器, 它负责转发 ...

随机推荐

  1. 网络请求返回HTTP状态码(404,400,500)

    HTTP状态码(HTTP Status Code) 一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 所有状态解释: 1xx(临时响应) 表示临时响应并需要请求者继续 ...

  2. 在eclipse中打开文件所在的目录

    eclipse中默认是不能直接打开文件所在的目录的,需要在文件中右键-->properties-->location,复制到资源管理器中才能打开文件所在的目录.这种方法很麻烦.这里介绍一种 ...

  3. Miller-Rabin素性测试|Pollard's Rho算法

    Miller-Rabin 素性测试 Miller-Rabin 素数测试 一本通上的M-R不透彻啊~ Miller-Rabin是利用随机化算法判断一个数是合数还是素数. 首先,如果一个数N是素数,那么他 ...

  4. gulp的watch记事本

    let gulp=require('gulp'), nodemon=require('gulp-nodemon'), browser=require('browser-sync'); let relo ...

  5. springBoot集成web service

    转载大神: https://blog.csdn.net/u011410529/article/details/68063541?winzoom=1 https://blog.csdn.net/nr00 ...

  6. jap的教程

    第一个资料:   https://wenku.baidu.com/view/5ca6ce6a1eb91a37f1115cee.html 第二个资料 :http://www.yiibai.com/jpa ...

  7. vbox和宿主机共享文件夹

    首先,查看vbox安装的ubuntu是否支持vboxsf模块 sudo modprobe vboxsf dmesg | grep vboxsf 如果没有安装,需要安装vboxsf模块:(如果安装了请跳 ...

  8. Java local 转UTC时间

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  9. (转)Linux之split命令详解

    Linux之split命令详解 原文:http://m.jb51.net/article/73632.htm Linux split命令用于将一个文件分割成数个,该指令将大文件分割成较小的文件,在默认 ...

  10. vim配置成c++IDE

    mv ~/.vimrc ~/.vimrcbak mv ~/.vim ~/.vimbak git clone https://github.com/handy1989/vim.git mv vim/.v ...