关于spark程序与pyspark的交互流程

本文主要从spark-submit提交到spark集群和yarn两个方向进行介绍

当通过Spark-Submit方式提交任务到Spark集群中, 采用client的部署模式

1- 启动Driver程序
2- 将整个python代码加载到Driver程序中, 然后根据python中sc创建代码基于py4j映射为 java代码. 构建sc对象
3- Driver程序根据提交资源参数信息, 向Master申请资源(executor)
4- Master根据要申请资源, 返回给Driver程序       
    executor1:  node1  1核 1GB        
    executor2:  node3  1核 1GB   
5- Driver程序连接对应worker节点, 让其启动executor, 并占用相关的资源 同时, worker节点启动后, 反向注册回Driver(通知)
6- 当Driver程序接收到各个executor都已经启动完成了, 接下来Driver开始进行任务分配工作:      
    6.1 Driver根据RDD之间依赖的关系,形成一个DAG执行流程图,并且划分为多个stage阶段, 并且还要确定每一个阶段要运行多少个线程     
    6.2 根据每个阶段的线程, 进行任务分配, 将各个线程尽量的均匀分配各个executor     
    6.3  分配完成后, 将各个线程需要执行的任务推送给executor     
    6.4 Driver负责监控各个executor是否执行完成
7- executor 接收到任务后, 开始运行, 但是由于代码是python, 所以executor无法直接运行, 此时调用python解析器, 运行python代码. executor中各个线程接收对应相关结果即可

8- 如何任务最后要求将结果返回给Driver, 此时将最终的结果返回, 如果是直接输出, 那么输出即可

9- 当Driver接收到各个executor的线程执行完成后, 接收返回值(如果有), 开始执行后续的非RDD的代码即可, 如果后续执行触发关闭sc对象, 直接关闭 同时通知Master 整个应用执行完成, 如果没有遇到, 一直占用

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值