Spark 调度架构原理深度解析

Spark 调度框架原理图(深度)

我们的说明是基于Spark standalone模式来给大家说明的,集群里面一主二从,也就是说有一个Master,两个Worker节点

Driver
spark-submit.sh Driver我们用来向Spark 集群提交spark程序的,
最最重要的作用就是创建SparkContext,用于创建RDD ,以及等的操作
在生产环境里面,一般都会有一台单独的物理机能够连接上Spark集群,用来提交Spark程序

  1. 首先当然启动集群(启动的方式 sbin/start-all.sh,将master和worker都启动)时,我们worker就需要向master汇报当前自身状态,以及硬件资源,比如cpu,比如内存,master会将这一步数据保存下来,并向worker节点反馈【Master实际上就是对集群资源的调度,管理,和监控】
  2. Master节点记录worker汇报过来的状态信息,硬件资源 信息,并向worker节点反馈
  3. worker节点需要时不时向master来汇报当前节点状态信息,这个就是通过AKKA Actor 的Actor 模型中的心跳机制来完成的
  4. Driver 会通过Spark-submit 向 spark 集群提交任务,通过setnaster/ –master可找到 master, 向master打一声招呼,也就是通过RegisterApplication 向 master进行注册该 application ,这个过程当然是异步的ra ! mddfsd,告诉master为我当前的Driver预留资源
  5. Master就是进程,是一个基于AKKA actor的Actor模型,是一个java进程,接受Driver的注册信息
  6. 当接受到Driver的注册请求的时候 Master则会为该application分配资源,让worker执行该application,2个worker来均分干这一件事
  7. worker节点接受到master的任务分配之后,会向master汇报,worker接受到任务了,同时master会向driver汇报worker已经接收到任务
  8. driver接收到master传递过来的注册反馈信息,就明确了application 在哪一个worker上运行,需要什么样的资源,加载数据源,也会将数据源分发到不同的worker上的patition
  9. 这个时候worker节点就会启动excutor进程,task线程来操作相应的partition中的数据
  10. 运行一段时间之后,executor 都会向driver来汇报运行情况,如果完成某一操作之后,worker就会释放掉其所持有的cpu,core,内存资源,等待所有的操作完成之后,就会释放所有的资源信息,sc.close() –>application 结束
  11. worker会把相关的application的资源彻底释放
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值