栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Spark内核设计的艺术:架构设计与实现

Spark内核设计的艺术:架构设计与实现

创建和启动ExecutorAllocationManager

在SchedulerBackend的实现类中只有CoarseGrainedSchedulerBackend同时实现了特质ExecutorAllocationClient
removeExecutors方法将利用ExecutorAllocationClient的killExecutors方法通知集群管理器“杀死”Executor。
killExecutors方法需要ExecutorAllocationClient的实现类去实现

updateAndSyncNumExecutorTarget方法的实现如下:
代码
ExecutorAllocationManager还在初始化则返回0
减少需要的Executor数量
添加Executor

可以用图表示Executor的动态分配过程

ContextCleaner的启动

用于清理那些超出应用范围的RDD、Shuffle对应的map任务状态、Shuffle元数据、Broadcast对象及RDD的Checkpoint数据

创建ContextCleaner

代码
可以通过spark.cleaner.referenceTracking来决定是否启用ContextCleaner
ContextCleaner的代码如下
代码
缓存顶级的AnyRef引用
缓存AnyRef的虚引用
监听器数组
工作线程,该线程为守护线程
用于执行GC的单线程线程池
清理非shuffle时是否阻塞
清理shuffle数据是否阻塞

启动ContextCleaner

启动ContextCleaner的代码如下
代码
设置为守护线程
设置名称
启动线程
启动定期执行GC的线程池
cleaningThread该线程实际上就是执行keepCleaning方法
代码
可以看到该方法匹配各种引用,并执行相应方法进行清理,以doCleanupRDD为例
调用unpersistRDD方法,从内存或者磁盘移除RDD
从persistRDDs中移除对该RDD的跟踪
调用所有监听器的rddCleaned方法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/758454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号