(三)spark源码理解之MapOutTracker
来源:互联网 发布:钢结构三维详图软件 编辑:程序博客网 时间:2024/06/01 21:25
MapOutTracker主要用来存放shuffle map stage的输出,因为主从节点的MapOutTracker实现机制不一样,所以它是一个抽象类,主要维护和记录map的状态,添加或移除shuffle,以及从节点从主节点上获取相应shuffle的状态
1.MapOutTrackerMaster
主节点上的MapOutTracker,继承MapOutTracker,因此也继承MapOutTracker的添加以及移除,更新shuffle等的方法,当然它也可以重写MapOutTracker的这些方法
从上面的截图可知注册(添加)一个shuffle就是在TimeStampedHashMap添加相应的mapStatus
另外简单说下MapOutTrackerWorker即为从节点上的MapOutTracker,它主要完成的就是从主节点上获取map输出结果的信息,其实在一些旧版本的spark中貌似都没有这个变量
2.TimeStampedHashMap
主要是用来存放之前提到过的MapStatus对象,其中MapStatus包括shuffleID,块Id(即分区Id)以及压缩后的数据的大小,TimeStampedHashMap对象将存储在TimeStampedHashMap中的mapStatus更新,添加新的mapStatus,移除mapStatus,清空TimeStampedHashMap,获得相应mapStatus的时间戳等等
该函数返回的是Option[mapStatus],其中的replace函数实现的是更换新值即若状态未发生变化则用相应状态的新时间替换旧时间
这个类意为时间戳HashMap,那从何体现出其时间特性?该类中有个ConcurrentHashMap对象(上述截图中的internalMap即为该对象),这个对象的构造器中有个TimeStampedValue类型,这个类型存储的值就为相应的MapStatus对象,以及时间
3.MetaCleaner
MetadataCleaner将存储在TimeStampedHashMap中的MapStatus更换新值或者清空超过一定时间的存储单元,它是通过clearOldValues(threshTime: Long, f: (A, B) => Unit)实现的
这里有一点觉得很奇怪为什么有MapOutTrackerMaster变量了,还要有个TimeStampHashMap,或许可以理解为MapOutTrackerMaster作为外层,TimeStampHashMap作为内层,就相当于一个“盒子”
未完待续。。。。
- (三)spark源码理解之MapOutTracker
- (一) spark源码理解之SparkContext
- (二)spark源码理解之SparkEnv
- (四)Spark源码理解之BlockManager---part1
- (四)Spark源码理解之BlockManager---part2
- (四)Spark源码理解之BlockManager---part3
- (四)Spark源码理解之BlockManager---part4
- (四)Spark源码理解之BlockManager---part5
- (五)Spark源码理解之BroadcastManager
- (六)Spark源码理解之RDD
- (六)Spark源码理解之RDD----part1
- (六)Spark源码理解之RDD----part2
- (六)Spark源码理解之RDD----part3
- (六)Spark源码理解之RDD----part4
- (六)Spark源码理解之RDD----part5
- (七)Spark源码理解之TaskScheduler----part1
- (七)Spark源码理解之TaskScheduler----part2
- (七)Spark源码理解之TaskScheduler----part3
- 2014年终总结
- 【Hibernate】[BUG] 执行save()之后,这次的数据会覆盖上一次的数据
- iOS 对指定Model实现自动归档
- Android中 Bitmap和Drawable相互转换的方法
- SQL 2012 Always On 为 MSCRMSqlClrLogin SQL 登录名创建非对称密钥时报语法错误
- (三)spark源码理解之MapOutTracker
- 多线程,并行,异步
- 在MFC中怎样把CString类型转换成char*型
- HBASE启动脚本/Shell解析
- 设计模式——模板方法
- 旋转矩阵180度
- ASP通过http调用验证码短信接口源码
- Android开发历程
- SQLITE3 使用总结