1、fair调度模式
就是需要用户配置权重
2、配置调度池
用户可以通过配置文件自定义调度池的属性
1、调度模式
2、权重
3、minshare 配置多少个cpu的内核
stage 和 tasksetmanager调度
stage的调度是由dagscheduler完成的,由rdd的有向五环图dag切分除了stage的有向五环图 stage的dag通过最后执行的stage为根进行广度优先遍历,遍历到最开始执行的stage执行,如果提交的stage任有未完成的父母stage,则stage需要等待其父 stage执行完成才能执行。
整体的task分发又taskschedulerimple来实现,但是task得调度(本质上是task在哪个分区执行)逻辑由tasksetmanager完成,这个类监控整个任务的生命周期,当任务失败时 如执行时间超过一定的阈值, 重新调度,也会通过
读写流程
1、数据写入
数据写入的简要流程,读取流程和写入流程类似,数据写入流程主要分为以下几个步骤。
1、rdd调用compute方法进行指定分区的写入
2、cachemanager中调用blockmanager判断数据是否已经写入,如果未写入则写入
3、blockmanager中数据与其他节点同步
4、blockmanger根据存储级别写入指定的存储层
5、blockmanager向主节点回报存储状态
详细步骤如下
入库在rdd累中通过computer方法调用 iterator方法进行某个分区 partition的读写,partition是逻辑概念,在物理上是一个block 具体实现如下
1、在cachemanger累中,getorcompute方法通过调用blockmanager的put接口来写入数据,我们可以看到,在这里有个判断逻辑,它先从内存cache读取是否又快可以读取。