回覆列表
  • 1 # 蠻夷豈敢犯邊

    三種排程器

    FIFO排程器

    先進先出,但不適合資源公平性

    容量排程器

    獨立的專門佇列保證小作業也可以提交後就啟動,佇列容量是專門保留的

    以整個叢集的利用率為代價,與FIFO比,大作業執行的時間要長

    公平排程器

    不需要預留資源,排程器可以在執行的作業之間動態平衡資源,大作業啟動時,因為是唯一執行的,所以獲得叢集的所有資源,之後小作業啟動時,被分配到叢集的一半的資源,這樣每個作業都能公平共享資源

    排程器配置

    容量排程器

    1) 多個組織共享叢集,每個組織配置一個佇列,一個佇列分配一定的叢集資源

    2) 同一個佇列可以進一步劃分,同一個組織不同使用者共享佇列所分配的資源,使用FIFO排程

    3) 佇列資源不足時,可以等待其他佇列釋放的資源或者使用叢集中其他空閒資源,這可能會使得實際使用的佇列容量超出配置的容量,這叫做“彈性佇列”

    4) 為佇列設定一個最大容量限制,可以防止佇列過多侵佔其他佇列資源

    容量排程器配置

    在capacity-scheduler.xml配置yarn.scheduler.capacity.<queue-path>.<sub-property>

    作業的佇列放置

    job放置的佇列取決於job本身,可以在mapreduce中配置mapreduce.job.queuename,如果佇列不存在,則報錯,不指定則使用預設default佇列

    佇列名是指佇列層次的最後一層,不包含之前路徑

    公平排程器

    既實現了使用者佇列間的公平排程,也實現了佇列內作業間的公平排程

    假設使用者A,B各自擁有佇列Q1,Q2

    1) A先啟動一個job J1,則J1佔用叢集所有資源

    2) B啟動一個job J2,則Q1中的J1需要分一半資源給Q2中的J2

    3) B又啟動一個job J3,則Q2中的J2需要分一半資源給Q2中的J3

    公平排程器配置

    1) 因為yarn-site.xml中預設使用容量排程器(CDH除外),首先修改其中yarn.resourcemanager.scheduler.class為公平排程器:

    org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

    2) 可以修改佇列內的排程策略,預設使用公平排程,也支援FIFO

    job的佇列放置

    1) 使用基於規則的系統確定job佇列放置,匹配對應的使用者佇列直到使用default佇列

    2) 直接就使用default,所有job公平分配

    搶佔

    允許排程器終止佔用資源超過公平共享份額佇列的容器,這些容器資源釋放後被分配給資源數量低於應得份額的佇列

    搶佔的影響:因為被終止的容器需要重新執行而降低叢集效率

    搶佔超時設定

    yarn.scheduler.fair.preemption

    設定超時引數,設定時間都是秒級別

    1) 最小共享搶佔

    defaultMinSharePreemptionTimeout

    指定時間未獲得被承諾的最小共享資源,排程器則搶佔其他容器

    2) 公平共享搶佔

    defaultFairSharePreemptionTimeout

    指定時間獲得資源低於公平共享份額的一半,排程器搶佔其他容器。

  • 中秋節和大豐收的關聯?
  • 矛盾的三個特性四大原理?