|
NodeManager 负责节点的维护,执行和监控task运行状况。会通过心跳的方式向ResourceManager汇报自己的资源使用情况。
yarn资源管理器的每个节点都运行着一个NodeManager,是ResourceManager的代理。如果主节点的ResourceManager宕机后,会连接ResourceManager的备用节点。
ApplicationMaster 负责具体应用程序的调度和资源的协调,它会与ResourceManager协商进行资源申请。ResourceManager以container容器的形式将资源分配给application进行运行。同时负责任务的启停。
container 是资源的抽象,它封装着每个节点上的资源信息(cpu,内存,磁盘,网络等),yarn将任务分配到container上运行,同时该任务只能使用container描述的资源,达到各个任务间资源的隔离。
4. spark程序在yarn上执行流程
spark on yarn分为两种模式yarn-client模式,和yarn—cluster模式,一般线上采用的是yarn-cluster模式。
(1)yarn-client模式
driver在客户端本地执行,这种模式可以使得spark application和客户端进行交互,因为driver在客户端可以通过webUI访问driver的状态。同时Driver会与yarn集群中的Executor进行大量的通信,会造成客户机网卡流量的大量增加。
(2)yarn-cluster模式
Yarn-Cluster主要用于生产环境中,因为Driver运行在Yarn集群中某一台NodeManager中,每次提交任务的Driver所在的机器都是随机的,不会产生某一台机器网卡流量激增的现象,缺点是任务提交后不能看到日志。只能通过yarn查看日志。
DAG Scheduler会把DAG切割成多个相互依赖的Stage,划分Stage的一个依据是RDD间的宽窄依赖。
在对Job中的所有操作划分Stage时,一般会按照倒序进行,即从Action开始,遇到窄依赖操作,则划分到同一个执行阶段,遇到宽依赖操作,则划分一个新的执行阶段,且新的阶段为之前阶段的parent,然后依次类推递归执行。
child Stage需要等待所有的parent Stage执行完之后才可以执行,这时Stage之间根据依赖关系构成了一个大粒度的DAG。在一个Stage内,所有的操作以串行的Pipeline的方式,由一组Task完成计算。
(7)TaskSet Task
TaskSet 可以理解为一种任务,对应一个stage,是Task组成的任务集。一个TaskSet中的所有Task没有shuffle依赖可以并行计算。
Task是spark中最独立的计算单元,由Driver Manager发送到executer执行,通常情况一个task处理spark RDD一个partition。Task分为ShuffleMapTask和ResultTask两种,位于最后一个Stage的Task为ResultTask,其他阶段的属于ShuffleMapTask。
四、spark作业运行流程
1. spark作业运行流程
spark应用程序以进程集合为单位在分布式集群上运行,通过driver程序的main方法创建sparkContext的对象与集群进行交互。具体运行流程如下:
-
sparkContext向cluster Manager申请CPU,内存等计算资源。
-
cluster Manager分配应用程序执行所需要的资源,在worker节点创建executor。
-
sparkContext将程序代码和task任务发送到executor上进行执行,代码可以是编译成的jar包或者python文件等。接着sparkContext会收集结果到Driver端。

(编辑:宣城站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|