Spark Core个人总结

1、spark core

   核心概念: RDD 理解为一个元数据即可。

       (1)依赖

        (2)分区

          (3)本地性

            (4)计算函数,按照分区为单位进行计算

       (5)不可变

    RDD的分区和block一一对应。

2、spark driver

 (1) sparkcontext

 (2) DAGScheduler

      执行stage划分;按照宽依赖进行划分

             stage提交;对stage按照id进行排序后,逐个提交

                 submitMissingTask  -->构造tasks

 (3) TaskScheduler

     TaskScheduleImpl

       yarnScheduler

         yarnClusterScheduler

      

       taskScheduler完成tasks提交

                       schedulerBackend初始化

                            yarn的创建yarnclient,创建AM

                 AM和NM配合,构造参数,启动container,其实也就是启动CoarseGrainedExecutorBackend进程。

               taskscheduler提交task的时候,对于每个taskset,内部有taskManager,也有schedulerBuilder,来控制这个taskset内部task的提交顺序,生成一个seq taskDescription

               调用SchedulerBackend的reviveOffer(),继续调用makeOffers(),根据资源逐个提交task

       

 (4) SchedulerBackend

     YarnClientScheduleBackend

     YarnClusterSchedulerBackend

4、CoarseGrainedExecutorBackend  executor launchTask()

     内部存在一个Executors线程池,n可以用来执行提交的task  TaskRunner

      ShuffleMapTask   ResultTask

5、TaskRunner: 反序列化task, runTask,使用真正的ShuffleMapTask和ResultTask来进行执行。

ShuffleMapTask执行的时候,会调用SuffleWriteProcessor调用这个stage的RDD的iterator方法

对于rdd的每个分区,这个iterartor方法会调用 MapPartitionRDD(也可能是别的RDD),依次递归找到这个RDD的父依赖,依次执行每个rdd的compute方法。对于最后的结果,SuffleWriteProcessor会执行write操作 

ResultTask : 它执行的时候,主要是调用自己的函数进行数据落地。

问题:

1、mapoutputTracker的作用?

2、shuffleWriteProcessor的具体处理过程?

3、shuffle的整体流程

4、blockManager的作用?  ---》getPreferredLocation()可能能用到

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值