spark源码分析

  • rdd变换:
    textfile()加载文件:返回hadoopRDD(创建HadoopRDD之前,先将hadoopConfiguration进行广播)调用map方法,最终返回MapPartitionsRDD
    在这里插入图片描述
    详细流程:https://blog.csdn.net/weixin_43093501/article/details/89492421
    在这里插入图片描述

  • rdd提交:

    • sparkcontext运行作业
    • 调用有向无环图调度器的运行作业方法
    • 有向无环图提交作业到事件轮询对象中,将其封装成事件然后发送到轮询队列。
    • 有一个线程监控队列,将事件最终发送到有向无环图进行处理。
    • 具体内容为将stage递归提交,然后将task串行化广播到集群。
    • 任务调度器将任务集提交到后台调度器。
    • 后台调度器使用netty发送套接字到消息轮询对象中。
    • 有一个线程监控,将数据发送到执行器中,执行器执行任务。
    • 执行器中有线程池,创建线程运行task。
    • 首先反序列化,然后运行,运行task中的内容(resultmapTask/shuffleMapTask),然后执行write()方法
      在这里插入图片描述
      在这里插入图片描述
      【DAGScheduler是高级调度器层】:按照stage对每个Job的各阶段计算有向无环图,跟踪rdd和每个stage的输出。找出最小调度,运行作业,将Stage对象以TaskSet方式交给底层调度器。底层调度器实现TaskScheduler,进而在集群上运行job。
      在这里插入图片描述

【Task】:一般来说,一个 rdd 有多少个 partition,就会有多少个 task,因为每一个 task 只是处理一个 partition 上的数据。

【Stage】:task的集合,在shuffle的边界进行隔离(划分)。

  • ShuffleMapStage:产生输出数据,在每次shuffle之前发生。可共享
  • ResultStage:用于执行action动作的最终stage

【job】:提交给调度的顶层的工作项,是Stage集合。

  • result job,计算ResultStage来执行action.
  • map-state job,为shuffleMapState结算计算输出结果以供下游stage使用。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值