MapReduce中作業調度機制


MapReduce中作業調度機制主要有3種:

1.先入先出FIFO
      Hadoop 中默認的調度器,它先按照作業的優先級高低,再按照到達時間的先后選擇被執行的作業。

2.公平調度器(相當於時間片輪轉調度)
      為任務分配資源的方法,其目的是隨着時間的推移,讓提交的作業獲取等量的集群共享資源,讓用戶公平地共享集群。具體做法是:當集群上只有一個任務在運行時,它將使用整個集群,當有其他作業提交時,系統會將TaskTracker節點空間的時間片分配給這些新的作業,並保證每個任務都得到大概等量的CPU時間。
配置公平調度器
1.修改mapred-stie.xml 加入如下內容

      <property>
           <name>mapred.jobtracker.taskScheduler</name>
           <value>org.apache.hadoop.mapred.FairScheduler</value>
       </property>
       <property>
           <name>mapred.fairscheduler.allocation.file</name>
           <value>/opt/hadoop/conf/allocations.xml</value>
       </property>
       <property>
            <name>mapred.fairscheduler.poolnameproperty</name>
            <value>pool.name</value>
       </property>

2 . 在 Hadoop conf 下創建allocations.xml內容為:

 <?xml version="1.0"?>
        <alloctions>
        </alloctions>
樣例:
<pool name="sample_pool">
<minMaps>5</minMaps>
<minReduces>5</minReduces>
<weight>2.0</weight>
</pool>
<user name="sample_user">
<maxRunningJobs>6</maxRunningJobs>
</user>
<userMaxJobsDefault>3</userMaxJobsDefault>

3. 重啟 JobTracker
4. 訪問 http://jobTracker:50030/scheduler , 查看 FariScheduler 的 UI
5 . 提交任務測試


3.容量調度器
      支持多個隊列,每個隊列可配置一定的資源量,每個隊列采用 FIFO 調度策略,為 了防止同一個用戶的作業獨占隊列中的資源,該調度器會對同一用戶提交的作業所占資源量進行限定。調度時,首先按以下策略選擇一個合適隊列:計算每個隊列中正在運行的任務數與其應該分得的計算資源之間的比值,選擇一個該比值最小的隊列;然后按以下策略選擇該隊列中一個作業:按照作業優先級和提交時間順序選擇 ,同時考慮用戶資源量限制和內存限制。但是不可剝奪式。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM