Spark--程序内部的调度

    今天看书的时候,看到了关于spark内部调度的知识。所以打算出来记录以及分享一下,首先帮大家回忆一下关于FIFO算法和LRU算法;

 (1)先进先出置换算法FIFO:根据字面的意思就能得出,先来的线程先执行; 假定系统为某进程分配了三个物理块t1,t2,t3,并考虑有以下页面号引用串{7,0,1,2,0,3,0,4,2,3,0,3,2,1,2},那么首先t1为7,同时指针指向t1,发现t2是空的就会访问0号,t3会访问1号,这时候的t1,t2,t3分别是7,0,1;指针指向的还是t1,接下来继续访问2号,t1,t2,t3中发现没有2号,那么替换指针所指向的t1,于是现在t1,t2,t3就成了2,0,1;同时指针下移一位,指向了t2,继续访问0号,t1,t2,t3中已经发现存在0号,那么直接忽略,指针不变依旧指向t2,接下访问3号,三个物理块中不存在3,那么指针所指向的t2替换为3,于是t1,t2,t3就成了2,3,1;同时指针继续下移一位,以此类推;

(2)最近最久未使用置换算法(LRU):LRU是redis内存回收的算法之一;假定系统为某进程分配了三个物理块t1,t2,t3,并考虑有以下页面号引用串{7,0,1,2,0,3,0,4,2,3,0,3,2,1,2},那么首先t1为7,然后发现t2是空的就会访问0号,t3会访问1号,这时候的t1,t2,t3分别是7,0,1;接下来继续访问2号,t1,t2,t3中由于t1存放的7号是最早进入的,所以2号替换t1中的值,现在t1,t2,t3就成了2,0,1;接下来继续访问0号,t1,t2,t3中存在0号,则直接忽略;继续访问3号,现在t3中的值为1号,最近没有使用过,所以将t3中的值替换为3,最后t1,t2,t3就成了2,0,3,可能会有童鞋会问0不是在最前面吗?为什么不替换t2中的值?我们再访问3号的时候之前访问过0号,所以这个t2中的0值继续存在,不会替换。

    在业务中,肯定会遇到为多个用户提供服务的时候,不想引用其他的服务调度,这时候就可以考虑配置Spark的内部调度了;

(1)Spark程序内部,不同线程提交的Job可以并行执行,Spark的调度器是线程安全的;程序内部默认是FIFO先进先出方式运行Job,如果想不同的Job分配不同的共享资源,并行的执行,那么可以如下设置:

val conf = new SparkConf().setMaster(...).setAppName(...).set("spark.scheduler.mode","FAIR")
val sc = new SparkContext(conf)

(2)调度池的配置:

schedulingMode:可以是FIFO或FAIR,用于控制调度池内的Job是排队执行还是平均共享资源,调度池中的Job默认排队执行;

weight:权重越大,在调度池中分配的资源越大,先执行,调度池中的默认的权重为1;

minShare:最小资源值,保证调度池总是会获取一些资源,调度池中minShare的默认值是0;

(3)调度池的配置XML文件,XML中的信息:

<?xml version="1.0"?>
<allocations>
 <pool name="test">
   <schedulingMode>FAIR</schedulingMode>
    <weight>1</weight>
    <minShare>2</minShare>
 </pool>
</allocations>

(4)加载读取XML文件中设置的调度池:

val conf = new SparkConf().setMaster(...).setAppName(...).set("spark.scheduler.mode","FAIR").set("spark.scheduler.allocation.file","/opt/spark/text.xml")

(5)指定让Job进入特定的调度池:

sc.setLocalProperty("spark.scheduler.pool","test")

(6)清空当前线程的调度池设置:

sc.setLocalProperty("spark.scheduler.pool","null")
期待后续更新吧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值