【博学谷学习记录】超强总结,用心分享|Spark与PySpark交互流程

【博学谷学习记录】超强总结,用心分享|Spark与PySpark交互流程

一、Spark 和 PySpark 交互流程: Client on Spark集群

在这里插入图片描述
(1)首先会在提交的节点上启动一个Driver程序;
(2)Driver启动后,执行Main函数,首先创建SparkContext对象(底层基于py4j,识别Python是如何创建sc对象,将其映射为Java构建sc对象);
(3)连接Spark集群的主节点,根据资源配置要求,向主节点申请资源,用于启动executor;
(4)Master接收到资源申请后,根据申请资源进行分配,底层也是由资源调度器负责,通过FIFO调度方案,将分配好的资源交由给对应的Driver拉取;
(5)Driver连接对应节点,通知worker启动executor,并占用相关的资源,executor程序启动后,反向注册给Driver,告知已经启动完成;
(6)Driver开始处理代码:
1. 首先会加载所有的与RDD相关的API(算子),基于算子之间的依赖关系, 形成DAG(有向无环图)执行流程图,划为stage,并且确定每个阶段应该运行多少个线程以及每一个线程应该由哪个executor来执行(任务分配);
2. Driver程序通知对应的executor,来执行具体的任务;
3. Executor接收到任务信息后,启动线程,开始执行处理:Executor在执行的时候,由于RDD代码中有大量的Python的函数,而Executor是一个jvm程序,无法解析Python函数,此时通过调用Python解释器,执行Python的函数,将函数的执行结果返回即可;
4. Executor在运行的过程中,如果发现最终的结果需要返回Driver,直接返回即可,如果不需要返回,直接输出结束即可;
5. Driver程序监听到这个executor执行的状态信息,当各个executor内的线程都执行完成后,Driver认为任务完成了;
(7)当任务执行完成后,Driver执行后续的相关代码,该打印就打印,该关闭的执行关闭操作,一旦执行stop(),通知Master整个任务执行完成,Master回收资源,Driver程序退出。

二、Spark 和 PySpark 交互流程: Client on Yarn 集群

在这里插入图片描述
在 On Yarn模式中,将Driver程序中关于资源的部分从Driver中抛离出来,单独形成一个任务交给Yarn来处理,最终由appMaster来负责的资源的申请Spark具体的任务的分配工作依然是有Driver负责。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值