b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

mapreduce的工作原理_mapreduce计算原理_mapreduce的作用(9)

电脑杂谈  发布时间:2017-03-13 14:37:59  来源:网络整理

4、delay Scheduler机制

当出现空闲slot时,如果排在队列前面的job对应的所有task均没有locality属性(数据的本地性),则该作业会延时调度,直到一段时间后(有新的slot被释放),该job出现locality的task或者发生超时,才不得不调度该job的task。

什么是locality属性?当出现空闲slot时,该slot来自某个节点,而该节点上存有部分数据,如果某个task所需要的数据正好位于该节点上,则将该slot分配给该task是非常好的,因为它避免了通过网络读取数据。

5、公平共享计算方法

公平共享量是基于最小共享量和共享资源量计算得到的,它反映的是某个pool经过资源共享(某些pool的资源用不了,会自动共享给其他pool)之后,一共可以获取的资源总量,一般会大于等于最小共享量。

如果每个pool没有配置最小共享量,且提交了无限量的作业,则让每个pool的slotsAssinged/weight值相同即可。(其中slotsAssgined表示分配给pool的slot数,weight表示pool的权重)。

而有了最小共享minShare和pool中的需求量demand后,计算公平共享量FairShare需注意一下两种情况:

某些pool中的最小共享量可能用不完;

某些pool的资源需求量大于其最小共享量;

考虑到以上两种情况,调度器设计了基于比率R的公平资源分配方法(设集群中资源总量为totalSlots):

如果一个pool中的demand<R*weight,则该pool的fairShare=demand;

如果一个pool中的minShare>R*weight,则该pool的fairShare=mindshare;

除此之外,所有pool的fairShare=R*weight;

所有pool的fairShare之和应为totalSlots;

通过以上算法计算的公平共享量即为“公平调度器”的“公平”含义之所在,应尽量保证每个pool获取的资源量为fairShare,如果一定时间限制内达不到,则抢占资源。通过图表表示算法如下:

注意:比率R表ght-to-slot,即weight与slot的映射关系,其计算方法采用了二分枚举算法,具体实现请查看源代码。R需要取得一个合适的值,使得上面的条件【4】成立。

6、公平调度器缺点

当前公平调度器不支持大内存作业,而capacity Scheduler则早支持了,其原理是:如果一个job需要较大内存,调度器会为该job分配多个slot,这样,作业可使用这些slot对应的内存资源。

7、配置实例

配置步骤为:

1.将$HADOOP_HOME/contrib/fairscheduler/hadoop-fairscheduler-0.20.2-cdh3u3.jar拷贝到$HADOOP_HOME/lib文件夹中

2.修改$HADOOP_HOME/conf/mapred-site.xml配置文件

##配置MapReduce的资源调度方式
<property>
    <name>mapred.jobtracker.taskScheduler</name>
    <value>org.apache.hadoop.mapred.FairScheduler</value>
  </property>
##配置加载公平调度的配置文件
  <property>
      <name>mapred.fairscheduler.allocation.file</name>
      <value>/home/hadoop/hadoop-0.20.2-cdh3u3/conf/fair-scheduler.xml</value>
   </property>
##开启公平调度的资源抢占
   <property>
     <name>mapred.fairscheduler.preemption</name>
     <value>true</value>
   </property>
##开启公平调度的多模式
   <property>
     <name>mapred.fairscheduler.assignmultiple</name>
     <value>true</value>
   </property>
 
   <property>
     <name>mapred.fairscheduler.poolnameproperty</name>
     <value>mapred.queue.name</value>
     <description>job.set("mapred.queue.name",pool); // pool is set to either 'high' or 'low' </description>
   </property>
 
   <property>
     <name>mapred.fairscheduler.preemption.only.log</name>
     <value>true</value>
   </property>
 
   <property>
     <name>mapred.fairscheduler.preemption.interval</name>
     <value>15000</value>
   </property>
  
   <property>
     <name>mapred.queue.names</name>
     <value>default,hadoop,hive</value>
   </property>


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-37299-9.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...