基于Spark的机器学习资料0、Spark运行架构介绍及原理之job,stage,task_第1页
基于Spark的机器学习资料0、Spark运行架构介绍及原理之job,stage,task_第2页
基于Spark的机器学习资料0、Spark运行架构介绍及原理之job,stage,task_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Spark运行模式、Spark运行架构介绍术语定义:Application:指的是用户编写的Spark应用程序,包含了一个Driver功能的代码和分布在集群中多节点上运行的Executor代码。Driver:Spark中的Driver就是运行Application的main()函数,并且创建SparkContext。SparkContext为Spark准备运行环境,它负责和ClusterManager通信,进行资源的申请、任务的分配和监控,当Executor部分运行完毕后,负责将SparkContext关闭。Worker:集群中运行Application代码的节点。Executor:Appli

2、cation运行在Worker节点上的一个进程,该进程负责运行Task。ClusterManager:在集群上获取资源的外部服务。作业(Job):包含多个Task组成的并行计算,job包括多个RDD以及作用于RDD上的各种操作。阶段(Stage):每个Job会被拆分成很多组Task,每组任务被称为Stage。任务(Task):被送到某个Executor上的工作任务。Spark运行基本流程图SparkQ口ritextRDDObjects构建DAG圉i,代册幷巾価汨邮DAG4一分酉己并监控穿源便用悟7兄Task资源1、构建SparkApplication的运行环境,启动SparkContext,S

3、parkContext向资源管理器注册并且申请运行Executor资源;2、资源管理器分配Executor资源并启动ExecutorBackend,Executor运行情况将随着心跳发送到资源管理器;3、SparkContext构建DAG图,将DAG图分解成Stage,并把TaskSet发送给TaskScheduleroExecutor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行同时将SparkContext将应用程序代码发放给Executor;4、Task在Executor上运行,运行完毕释放所有资源;DAGSchedulerDAGS

4、chuduler把一个Spark作业换成Stage的DAG,根据RDD和Stage之间的关系找出开销最小的调度方法,然后把Stage以TaskSet的形式提交给TaskScheduler。TaskSchedulerTaskScheduler维护所有的TaskSet,当Executor向Driver发送心跳时,TaskScheduler会根据其资源剩余情况分配相应的Task。Job、Stage、Taskjob:所谓一个job,就是由一个rdd的action触发的动作,可以简单的理解为,当你需要执行一个rdd的action的时候,会生成一个job。stage:stage是一个job的组成单位,就是

5、说,一个job会被切分成1个或1个以上的stage,然后各个stage会按照执行顺序依次执行。至于job根据什么标准来切分stage,下几节我们再介绍RDD的时候详细介绍。这里只是说一下,是按照窄依赖和宽依赖来切分的。task:即卩stage下的一个任务执行单元,一般来说,一个rdd有多少个partition,就会有多少个task,因为每一个task只是处理一个partition上的数据。从webui截图上我们可以看到,这个job一共有2个stage,66个task,平均下来每个stage有33个task,相当于每个stage的数据都有33个partition。运行流程:1、Job:spark

6、应用里只有一个job,那就是因为我们执行了一个collect操作,即把处理后的数据全部返回到我们的driver上。2、Stage:Tasks:Succeeded/TotalInputOutputShuffleReadShuffleWriteT33/3341.7KB恥*1)33/3322.5MB417KB第一个stage,即截图中stageid为0的stage,其执行了sc.wholeTextFiles().map().flatMap().map().reduceByKey()这几个步骤,因为这是一个Shuffle操作,所以后面会有ShuffleRead和ShuffleWrite。具体来说,就是在stage0这个stage中,发生了一个Shuffle操作,这个操作读入22.5MB的数据,生成41.7KB的数据,并把生成的数据写在了硬盘上。第二个stage,即截图中stageid为1到stage,其执行了collect()这个操作,因为这是一个action操作,并且它上一步是一个Shuffle操作,且没有后续操作,所以这里collect()这个操作被独立成一个stage了。这里它把上一个Shuffle写下的数据读取进来,然后一起返回到driver端,所以这里可以看到他的ShuffleRead这里刚好读取了上一个stage写下的数据

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论