Free StyleHadoop-Yarn之Resource Manager源碼分析(四) Free Style】Hadoop-Yarn之Resource Manager源碼分析(一) 【Free Style】Hadoop-Yarn之Resource Manager源碼分析(二) 【Free Style】Hadoop-Yarn之Resource Manager源碼分析(三)

      網友投稿 1038 2022-05-29

      接上篇:

      【Free Style】Hadoop-Yarn之Resource Manager源碼分析(三)

      https://portal.huaweicloud.com/blogs/45e07b16c07311e7b8317ca23e93a891

      4??????算法介紹

      Yarn的調度器的作用主要是回答了如何選擇一堆隊列,在隊列上如何選擇一個應用的問題。

      Yarn Scheduler支持的調度機制包括:

      a)?????????雙層資源調度機制-----核心,Yarn資源分配總體架構

      b)????????層級隊列管理機制----對上層資源分配的管理方式;

      c)?????????資源保證和資源搶占機制----保證資源需求的機制

      目前Yarn支持的調度算法主要有三種,Fifo Scheduler,Capacity Scheduler,Fair Scheduler。

      a)?????????FIFO Scheduler:最簡單的調度器,按照先進先出的方式處理應用。只有一個隊列可提交應用,所有用戶提交到這個隊列。

      b)????????Capacity Scheduler(Yahoo):可以看作是FifoScheduler的多隊列版本。每個隊列可以限制資源使用量。但是,隊列間的資源分配以使用量作排列依據,使得容量小的隊列有競爭優勢。在同一個隊列中使用FIFO

      c)?????????Fair Scheduler(Facebook):多隊列,多用戶共享資源。特有的客戶端創建隊列的特性,使得權限控制不太完美。根據隊列設定的最小共享量或者權重等參數,按比例共享資源。延遲調度機制跟CapacityScheduler的目的類似,但是實現方式稍有不同。

      算法對比如下:

      調度器

      FifoScheduler

      CapacityScheduler

      FairScheduler

      設計目的

      最簡單的調度器,易于理解和上手

      多用戶的情況下,最大化集群的吞吐和利用率

      多用戶的情況下,強調用戶公平地貢獻資源

      隊列組織方式

      單隊列

      樹狀組織隊列。子隊列的資源限制計算是基于父隊列的。

      樹狀組織隊列。但是父隊列和子隊列沒有參數繼承關系。父隊列的資源限制對子隊列沒有影響。

      資源限制

      父子隊列之間有容量關系。每個隊列限制了資源使用量,全局最大資源使用量,最大活躍應用數量等。

      每個葉子隊列有最小共享量,最大資源量和最大活躍應用數量。用戶有最大活躍應用數量的全局配置。

      隊列ACL限制

      可以限制應用提交權限

      可以限制應用提交權限和隊列開關權限,父子隊列間的ACL會繼承。

      可以限制應用提交權限,父子隊列間的ACL會繼承。但是由于支持客戶端動態創建隊列,需要限制默認隊列的應用數量。

      隊列排序算法

      按照隊列的資源使用量最小的優先

      根據公平排序算法排序

      應用選擇算法

      先進先出

      先進先出

      先進先出或者公平排序算法

      本地優先分配

      【Free Style】Hadoop-Yarn之Resource Manager源碼分析(四) Free Style】Hadoop-Yarn之Resource Manager源碼分析(一) 【Free Style】Hadoop-Yarn之Resource Manager源碼分析(二) 【Free Style】Hadoop-Yarn之Resource Manager源碼分析(三)

      支持

      支持

      支持

      延遲調度

      不支持

      支持

      支持

      資源搶占

      不支持

      支持

      支持

      4.1??????資源分配模型

      Yarn的資源分配模型如下,當NM通過心跳信息告知RM本身所擁有的資源之后,RM中調度器需要選擇一個應用為其分配資源。其基本步驟如下:

      1)選擇隊列:Capacity Scheduler優先選擇資源利用率低的隊列;而FairScheduler則依賴于所選擇的具體策略,可以是Fair,FIFO,或者DRF。

      2)從隊列中選擇應用:Capacity Scheduler使用FIFO,而Fair Scheduler同樣使用Fair、FiFO,DRF等方式;

      3)最后從應用中選擇合適的容器進行分配,主要依賴于容器的優先級以及本地性特征。

      Capacity Scheduler

      Capacity Scheduler允許多租戶能夠安全共享一個大的集群,在滿足分配容量的限制下,為應用及時分配資源。CapacityScheduler確保共享一個大的集群的每一個組織所需的資源。資源共享的同時,每個組織可以訪問那些不被使用的超額資源。

      CapacityScheduler提供一個嚴格的限制集合,確保單個應用/用戶/隊列不能消耗不成比例的資源,同時,CapacityScheduler支持來自單個用戶或者隊列的已初始化/掛起的應用的限制,從而確保集群的公平和穩定。

      目前Capacity支持以下特性:

      a)?????????Hierarchical Queues:層次化隊列確保資源共享。

      b)????????Capacity Guarantees:所有提交到一個queue上的應用可以訪問所有分配給該queue的資源。管理員可以配置軟限制或者可選的硬性要求在這些queue上的資源。

      c)?????????Security?:每個queue都有嚴格的ACL用于控制哪些用戶可以提交應用到某個queue上。同時也確保用戶不能看到或者修改其他用戶的引用。支持per-queue管理員角色和系統管理員角色。

      d)????????Elasticity?:空閑資源可以超分配給任意的queue,但是如果有一些在容量以下的queue需要資源時,這些資源將會被分配給那些在不足容量的隊列的應用,這樣可以防止集群中有人而已占用資源。

      e)?????????Multi-tenancy:全面的限制以防止單個應用、用戶、隊列壟斷整個queue或者集群的資源。

      f)?????????Operability:1)Runtime Configuration:queue可以被動態修改(包括定義和屬性,如容量,ACL等),也可以被動態創建,但是不能動態刪除。2)Drain applications:管理員可以停止一個queue,新的應用不能被提交到該queue,但是已經存在的app可以運行到結束為止。管理員也可以重新start一個停止了的queue。

      g)????????Resource-based Scheduling:支持資源密集型app,app可以指定比默認情況更高的資源需求。目前支持內存資源。

      h)????????Queue Mapping based on User or Group:基于user或者group將一個job映射到一個指定的queue。

      Queue(隊列)是CapacityScheduler提供的主要抽象,由管理員創建表示共享集群的價值。CapacityScheduler提供多級別的queue,確保同一個組織的queue優先共享空閑資源,提供同一個組織中應用對于共享資源的親和性。CapacityScheduler有一個預定義的queue,叫做root。系統中所有其他的queue都是root的子queue。子queue不會直接繼承父親的屬性,除非有另外的說明。下圖是queue的配置文件:

      Capacity Scheduler的Queue可配置屬性屬性(etc/hadoop/capacity-scheduler.xml):

      a)?????????資源分配

      i.??????????????Capacity:百分比,同一層的所有queue的綜合等于100.但是queue中應用可以消耗比queue capacity更多的資源(當存在空閑資源時),提供彈性能力。

      ii.??????????????Maximum Capacity:限制queue中app的彈性值。

      iii.??????????????Minimum-user-limit:每個隊列在任意時刻分配給一個用戶的資源分配比例最低值。通常還有一個默認最大值,是總資源/用戶數。

      iv.??????????????User-limit-factor:queue容量的倍數,用于單個用戶獲取更多的資源,通常設置為1。

      v.??????????????Maximum-allocation-mb:queue中分配給每個container的最大內存。覆蓋集群中maximum-allocation-mb參數,但是要小于等于該值。

      vi.??????????????Maximum-allocation-vcores:queue中分配給每個container的最大virtual core。覆蓋集群中maximum-allocation-vcores參數,但是要小于等于該值。

      b)????????運行、掛起進程限制

      i.??????????????Maximum-applications/per-queue Maximum-applications:?系統中并發的app最大個數,單個queue上的app個數按照容量的比例進行劃分。也可以對每個queue進行單獨設置,但是要小于或者等于比例劃分的值。

      ii.??????????????Maximum-am-resource-percent?/ per-queue Maximum-am-resource-percent:?運行AM的資源最大比例。

      c)?????????Queue管理和權限

      i.??????????????State:queue的狀態,可以是running或者stopped

      ii.??????????????Acl_submit_applications:?控制app提交權限;acl規則如果沒有被特殊指定會從父queue繼承。

      iii.??????????????Acl_administer_queue:控制app管理權限。

      d)????????Queue映射

      i.??????????????Queue-mappings:指定user或者group與特定的queue進行映射。

      ii.??????????????Queue-mapping-override.enable:特定user的queue是否可以被覆蓋。

      Capacity Scheduler具有的其他屬性:

      a)?????????資源計算器

      i.??????????????resource-calculator:用于在Scheduler中比較資源。如DefaultResourceCalculate和DominantResourceCalculate,前者只使用內存,后者使用多種條件。

      b)????????數據位置

      i.??????????????node-locality-delay:在本rack中執行調度允許失敗的次數。

      4.3??????Fair Scheduler

      Fair Scheduler為每個app平均分配資源,資源的等價共享。Hadoop NextGen能夠基于多種資源類型進行調度,目前,Fair Scheduler的缺省決策基于內存,但是也可以配置基于內存和CPU,使用DRF。Fair Scheduler不像缺省的hadoop調度器,他可以確保短任務在理想時間內執行完成,并且長任務不會餓死。

      Fair Scheduler將app組織為queue,然后在queue之間進行公平共享。缺省的,所有用戶共享一個名為default的queue,但是如果app在容器資源請求中指定了隊列,那么該請求將會被提交到對應的queue。另外也可以通過包含在配置請求中的用戶名字分配queue。在每個queue中,調度策略被用于在所有running app之間共享資源。缺省調度策略是基于內存的公平共享,但是也可以配置FIFO以及DRF多資源調度策略。Queue可以被劃分成多個子queue,同時每個queue配置不同的權值。

      Fair Scheduler的queue具有以下屬性:

      a)?????????Fair Scheduler支持層次化queue,所有的queue都從“root”queue劃分出來。

      b)????????所有的可用資源在root queue的所有子queue之間按照fair Scheduling方式進行分發;同時這些queue也按照相同的方式分發給他們的子queue。App只能在葉子queue上進行調度。

      c)?????????Queue的名字:parent.queuename

      d)????????Fair scheduler允許按照用戶的需要對不同的queue設置不同的客戶策略,以便按照用戶的需要共享資源。可選的調度策略包括:FIFOPolicy,?FairSharePolicy,DRFPolicy。

      Fair Scheduler除了提供公平共享,同時也能夠提供最小共享保證,這對于保證某些user,group或者產品app總是能夠得到足夠的資源是非常有用的。當一個queue包含app時,它至少能夠分配到最小的share,但是如果當這個queue不需要他所有的share時,超額部分可以分配給其他app。這可以在保證queue capacity的同時,在queue中沒有app時有效提供資源利用率。

      4.3.1????????Fair Scheduler調度流程

      Fair Scheduler的調度流程:

      對Queue進行排序,使用SchedulingAlgorithms.FairShareComparator排序。排序規則如下

      1)????比較?資源使用量?< min(資源需求量,最小份額),即是否饑餓;

      2)????比較?資源分配比=資源使用量/min(資源需求量,?最小份額, 1)

      3)????比較?使用量與權重的比例?=資源使用量/權值,小的排前面,?即權重大的優先,?使用量小的優先

      4)????比較?提交時間,早的優先, app id小的排前面。

      排序之后,第一個隊列成為最優先分配資源的隊列。因此只需要把資源分配給該隊列;

      然后基于特定策略(FIFO,Fair,DRF等)將資源分配給應用;

      如果第一個隊列不需要資源,則繼續分配給下一個隊列。如果已經分配則繼續執行第一步,直到資源分配完成。

      4.3.2????????Fair Scheduler支持的配置文件

      Fair Scheduling支持的配置,主要有兩類,一類是Scheduler范圍的,在yarn-site.xml,另一類主要是在allocation file中,用于表示存在哪些queue以及他們相應的weights和capacities。

      a)?????????在yarn-site.xml

      i.??????????????Allocation.file : allocation file的路徑。

      ii.??????????????User-as-default-queue:是否使用分配相關的用戶名作為默認的queue name。

      iii.??????????????Preemption:是否使用搶占;

      iv.??????????????Preemption.cluster-utilization-threshhold:搶占觸發的利用率閾值。

      v.??????????????Sizebasedweight:是否基于app的size去分配shares,而不是等價共享。Size = loge(1 + requested memory) / loge(2)??此處并未說明request memory的單位。

      vi.??????????????Assignmultiple:是否允許在一個心跳中有多個container分配。

      vii.??????????????Max.assign:如果assignmultiple是true,則該字段表示最多多少個。

      viii.??????????????Locality.threshold.node:對于指定node請求container的APP,該參數指定了在其他節點上放置app之前在指定node上獲得最后一個container的嘗試調度次數。

      ix.??????????????Locality.threshold.rack:與node的概念相似,只是修改為rack;

      x.??????????????Allow-undeclared-pools:用于表示是否允許創建未指定的pool,在app提交的時候,如果submitter指定的app queue或者由user-as-default-queue使用的queue不存在是,該特性會創建對應的queue。如果該參數未指定,那么就會放到default queue。

      xi.??????????????Update-interval-ms:鎖定調度器,重新計算公平共享,重新計算需求,檢查是否應該得到搶占的時間間隔。

      b)????????在allocation file中

      i.??????????????Queue elements

      1.?????????minResources:queue能夠得到的最小資源。如果queue的最小共享沒有得到滿足,那么在同一個parent下,他會優先得到共享資源。如果多個queue資源沒有得到滿足,那么獲得資源比例最小的queue具有最高優先級。

      2.?????????maxResources:queue最大能夠得到的資源。

      3.?????????maxRunningApps:queue并發運行的app數量;

      4.?????????maxAMShare:在一個queue中AM所能占用的資源比例。

      5.?????????weight:queue的權值。權值為2的queue能得到的資源機會是權值為1的queue的兩倍(這個權值和指定的資源量之間是什么關系,是否例如權值是2,mem是1G,vcore是2的queue?和?權值是1,mem是2G,vcore是4的queue之間怎么分配資源)

      6.?????????schedulingPolicy:調度策略,fifo,fair,drf。其中fifo是指先提交的app優先獲得container,后達到的在有剩余資源的時候才能運行。

      7.?????????aclSubmitApps:可以提交app到該queue的user或者group列表;

      8.?????????aclAdministerApps:可以管理該queue的user或者group列表

      9.?????????minSharePreemptionTimeout:queue在最小share無法滿足的情況下,搶占其他queue資源之前的等待時間;

      10.?????fairSharePreemptionTimeout:queue在低于公平共享閾值的情況下,搶占其他queue資源之前的等待時間;

      11.?????fairSharePreemptionThreshold:queue的公平共享搶占閾值,如果沒有設置就從父親繼承。

      ii.??????????????User elements:user管理行為設置。

      1.?????????MaxRunningApps:設置單個app并發運行app數量

      iii.??????????????userMaxAppsDefault:任一用戶的缺省運行app數目。

      iv.??????????????defaultFairSharePreemptionTimeout:root queue的缺省公平共享搶占超時時間

      v.??????????????defaultMinSharePreemptionTimeout:root queue的缺省最小共享搶占超時時間

      vi.??????????????defaultFairSharePreemptionThreshold?:root queue的公平共享搶占閾值;

      vii.??????????????queueMaxAppsDefault?:queue的缺省運行app數;

      viii.??????????????queueMaxAMShareDefault?:queue的缺省AM資源限制;

      ix.??????????????defaultQueueSchedulingPolicy?:queue缺省的調度策略;

      x.??????????????queuePlacementPolicy?:要求調度器將app放置到queue中的規則列表

      前文:

      Free Style】Hadoop-Yarn之Resource Manager源碼分析(一)

      【Free Style】Hadoop-Yarn之Resource Manager源碼分析(二)

      【Free Style】Hadoop-Yarn之Resource Manager源碼分析(三)

      Hadoop

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:ROS2機器人應用簡明教程01文檔
      下一篇:扒一扒搜索引擎是如何工作的?
      相關文章
      亚洲丁香色婷婷综合欲色啪| 久久精品国产亚洲AV高清热| 亚洲视频在线观看网站| 亚洲成年看片在线观看| 亚洲男人第一av网站| 国产亚洲精品无码成人| 亚洲欧美日韩久久精品| 国产AV无码专区亚洲Av| 国产AV旡码专区亚洲AV苍井空| 亚洲国产精品成人精品无码区在线 | 国产精品无码亚洲精品2021| 久久精品国产亚洲av影院| 亚洲午夜激情视频| 亚洲乱码一二三四区麻豆| 国产精品亚洲不卡一区二区三区 | 亚洲成a人一区二区三区| 国产精品亚洲精品日韩电影| 亚洲综合偷自成人网第页色| 亚洲一区二区影院| 中文字幕亚洲精品| 亚洲国产亚洲片在线观看播放| 亚洲爆乳无码专区| 国产亚洲美日韩AV中文字幕无码成人 | 亚洲伦另类中文字幕| 午夜亚洲AV日韩AV无码大全| 久久久久亚洲爆乳少妇无| 国产亚洲美日韩AV中文字幕无码成人| 国产亚洲精品免费视频播放| 亚洲精品tv久久久久久久久| 亚洲AV无码一区二区二三区软件| 亚洲人成人77777网站| 亚洲国产精品专区在线观看| 亚洲精品国产精品| 67194在线午夜亚洲| 亚洲一级二级三级不卡| 亚洲码一区二区三区| 亚洲精品免费在线观看| 亚洲性猛交xx乱| 7777久久亚洲中文字幕蜜桃| 亚洲欧洲精品国产区| 亚洲综合国产成人丁香五月激情|