您好、欢迎来到现金彩票网!
当前位置:全民彩票app下载 > 高层调度 >

37 Spark之Task执行原理及结果

发布时间:2019-07-01 13:21 来源:未知 编辑:admin

  TaskRunner内部会有一些准备工作,例如反序列化Task的依赖,然后通过网络来获取需要的文件、Jar等信息。

  &补充:在执行具体的Task的业务逻辑前会进行四次反序列化:1.TaskDescription反序列化 2,Task的反序列化   3,RDD的反序列化  4,反序列化依赖

  &这里的f就是我们在当前的Stage中计算具体Partition的业务逻辑代码;来源自对我们在该Stage的各个算子中自定义的函数的合并。

  并根据序列化后的DirectResultTask的大小选择不同的方式将结果传回给Driver端。

  Driver首先会将任务的状态更新通知给TaskScheduler,然后会在这个Executor上重新分配新的计算任务。(见1)

  &这里Task的状态只有是FINISHED的时候才是成功执行Task结束的标志,其余的状态例如:FAILED、KILLED和LOST都是Task执行失败的标志。

  对于ShuffleMapTask,首先需要将结果保存到Stage,如果当前Stage所有Task都结束了,则将所有的结果注册到MapOutputTrackerMaster;这样下一个Stage的Task就可以通过他来获取Shuffle的结果原数据信息,进而从Shuffle数据所在的节点获取数据了。

  &从ActiveJob类的注释可以看出,Job可以有两种类型:result job,这会触发ResultStage执行的action操作,或Map-stage Job,在任何下游Stage提交之前计算出其所需的前一个Stage的结果,并对ShuffleMapStage的结果进行映射。后者用于自适应查询计划,用于在提交后期stage之前可以查看上有Stage输出结果的统计信息(如一些结果位置的元数据信息)。我们使用这个类的finalStage字段来对两种类型的Job进行区分。对于Map-Stage会借助MapOutputTracker来映射上游的Stage的Task输出信息,来实现前一个Stage输出信息的位置等元信息传递给后一个Stage的过程;并直接标记Map-Stage Job结束,并报告输出统计信息给。

  &ActiveJob类中会记录Job所需计算的分片(Partition)数目,以及每个Partition是否计算完成。由于Task与Partition是一一对应的,所以我们从这个类中可以知道有多少个Task,与Task执行完成的个数。

  与执行成功的Task一样,向高层调度器DAGScheduler发送的是由CompletionEvent封装的消息。而DAGScheduler会接收到这个消息,对其进行容错处理。

  这里是否有似曾相识的感觉,其实步骤6中也有这一过程,再DAGScheduler#handleTaskCompletion中,会根据不同的event#reason,也就是出错信息,进行处理。主要处理的有重复提交Resubmitted和远程读取失败FetchFailed,而其他出错情况则大都采用鸵鸟政策,什么也不做。这边是高层DAGScheduler的容错处理。

  &通过对Driver端执行的过程的观察,我们可以看出底层调度器和高层调度器是紧密合作的,很多时候,在接收到Worker端的StateUpdate信息后,先由TaskSchedulerImpl进行处理,然后同时底层调度器,将这些信息报告给高层调度器,就通信过程来看,真正与Worker联系的是底层调度器,这是在Task层次上的;而底层调度其会将这些信息进行加工,向高层调度器报告,这是联系的内容大都是TaskSetManager,所以这是就是在TaskSetManager层次上进行处理的。所以我们可以看到底层和高层进行处理时,所处的层次是不一样的,这也就是为什么会划分两个调度器的原因了。

  &对于容错,底层调度器和高层调度器也是合作进行的,所以Task在出错时,会进行两个层次上的容错处理,这就大大提交了容错的效率和可靠性。

  主机名映射出错背景:Yarn集群新加入了一批Spark机器后发现运行Spark任务时,一些task会无限卡住且driver端没有任何提示。解决:进入task卡住的节点查看containerstderr...博文来自:偷闲小苑

  问题现象提交大量Spark任务,概率性出现个别Task卡住一段时间,进而导致Stage整体耗时开销异常。问题分析采样Job836异常Stage2249-gt;卡住Task8:对应Execut...博文来自:独行的卡卡的博客

  1、错误为:ork.client.Tran...博文来自:大师兄你家猴跑啦的博客

  一.运维1.Master挂掉,standby重启也失效Master默认使用512M内存,当集群中运行的任务特别多时,就会挂掉,原因是master会读取每个task的eventlog日志去生成spark...博文来自:偷闲小苑

  一:Spark集群部署二:Job提交解密三:Job生成和接受四:Task的运行五:再论shuffle1,从sparkRuntime的角度讲来讲有5大核心对象:Master,Worker,E...博文来自:吾心光明

  需求spark应用程序中,只要task失败就发送邮件,并携带错误原因。我的GitHub,猛戳我背景在spark程序中,task有失败重试机制(根据spark.task.maxFailures配置,默认...博文来自:UFO的博客

  以下是整理的Spark中的一些配置参数,官方文档请参考SparkConfiguration。Spark提供三个位置用来配置系统:Spark属性:控制大部分的应用程序参数,可以用SparkConf对象或...博文来自:guohecang的博客

  这几个概念很容易混淆,需要写一遍文章梳理Spark的stage&job&task到底是什么,以及划分原理...博文

  在提交作业时,怎么根据任务量,来判定需要多少core memory,有什么参考依据?论坛

  SPARKtask执行与资源分配的关系问题背景执行spark某个sparkjob申请的资源是150个Executor,但是直至job执行结束(大约30多分钟),分配给该job的Executor个数是4...博文来自:败八

  spark中有partition的概念,每个partition都会对应一个task,task越多,在处理大规模数据的时候,就会越有效率。不过task并不是越多越好,如果平时测试,或者数据量没有那么大,...博文来自:白银师的博客

  这个结果的处理,分为两部分,一个是在Executor端是如何直接处理Task的结果的;还有就是Driver端,如果在接到Task运行结束的消息时,如何对ShuffleWrite的结果进行处理,从而在调...博文来自:shandon100的专栏

  实际上是由于数据的倾斜问题,采用reparation将数据重分区就ok了,还有一点可以加入spark推测机制来容错复杂的集群网络环境,可能由于某个单节点存在异常,网络不稳定或是磁盘io满了,使用推测显...博文来自:一昕之代码专栏

  前言上篇文章讲述了如何从HDFS上拿到JobHistory的Job信息数据,当然如果能对这些数据进行二次分析的话,将会得到更加精准的分析结果.但是尽管说数据是有了,但毕竟是Hadoop系统内部记录的数...博文来自:走在前往架构师的路上

  1、问题描述及原因分析在编写Spark程序中,由于在map,foreachPartition等算子内部使用了外部定义的变量和函数,从而引发Task未序列化问题。然而,Spark算子在计算过程中使用外部...博文来自:的博客

  Job:是一个比task和stage更大的逻辑概念,job可以认为是我们在driver或是通过spark-submit提交的程序中一个action,在我们的程序中有很多action 所有也就对应很多的...博文

  Spark是现在很流行的一个基于内存的分布式计算框架,既然是基于内存,那么自然而然的,内存的管理就是Spark存储管理的重中之重了。那么,Spark究竟采用什么样的内存管理模型呢?本文就为大家揭开Sp...博文来自:Chenx

  Spark开发性能调优标签(空格分隔):Spark–WriteByVin1.分配资源调优Spark性能调优的王道就是分配资源,即增加和分配更多的资源对性能速度的提升是显而易见的,基本上,在一定范围之内...博文来自:vinfly_li的博客

  概述TaskMemoryManager用于管理每个task分配的内存。在off-heap内存模式中,可以用64-bit的地址来表示内存地址。在on-heap内存模式中,通过baseobject的引用和...博文来自:的博客

  Spark是现在很流行的一个基于内存的分布式计算框架,那么,自然而然的,内存的管理就是Spark存储管理的重中之重了。那么,Spark究竟采用什么样的内存管理模型呢?本文就为大家揭开Spark内存管理...博文来自:辰辰爸的博客

  有什么方式能让java后台程序直接调用spark,并且直接收到spark计算后的返回值? 目前我这边能做的只是用java传给kafka,kafka再给spark,spark计算完后再回传给kafka,论坛

  如标题,公司想开发这样一个小程序,但是现在不知道从何下手,spark又没有提供接口可以在我的web应用程序里面直接调用,那意味着是不是我每次查询的时候,要把sql语句和对应的scala代码一起通过ss论坛

  下面介绍通过日志分析用户行为流程(1)某个J2EE项目在接收用户创建任务的请求之后,会将任务信息插入MySQL的task表中,任务参数以JSON格式封装在task_param字段中。这是项目前提,不是...博文来自:zhi_fu的博客

  来源:我的环境是:XPSP2.VS2003最近在一个项目中,程序退出后都出...博文来自:xiunai78的专栏

  前言最近有个spark程序因为资源不足以及其他原因会在第一次提交时候失败,然后又会不断提交,导致过多的系统资源被无效占用。因此想限制Spark作业失败的重试次数,如果第一次失败,就让作业直接失败,那么...博文来自:Lestat.Z.的博客

  Task原理:1.Executor接收到了LaunchTask请求,将task封装成TaskRunner运行。2.反序列化task,并通过网络拉取需要的文件、jar包等,然后运行task的run()方...博文来自:心行如一,无远弗届的博客

  有部分图和语句摘抄别的博客,有些理解是自己的梳理一下Spark中关于并发度涉及的几个概念File,Block,Split,Task,Partition,RDD以及节点数、Executor数、core数...博文来自:u013013024的博客

  jquery/js实现一个网页同时调用多个倒计时(最新的)nn最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦!nnnn//jsn...博文来自:Websites

  :您好,我的虚拟机里面有两个操作系统; 都想使用VM Net 8 ,从主机浏览器访问客机里面的Web,这种情况该怎么办呢?

  :[reply][/reply] 你好,你的问题解决了吗?我遇到了同样的问题

http://diystuff.net/gaocengdiaodu/613.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有