久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么分析yarn的調度模式

330次閱讀
沒有評論

共計 5178 個字符,預計需要花費 13 分鐘才能閱讀完成。

這篇文章跟大家分析一下“怎么分析 yarn 的調度模式”。內容詳細易懂,對“怎么分析 yarn 的調度模式”感興趣的朋友可以跟著丸趣 TV 小編的思路慢慢深入來閱讀一下,希望閱讀后能夠對大家有所幫助。下面跟著丸趣 TV 小編一起深入學習“怎么分析 yarn 的調度模式”的知識吧。

Hadoop  YARN 同時支持內存和 CPU 兩種資源的調度(默認只支持內存,如果想進一步調度 CPU,需要自己進行一些配置),丸趣 TV 小編將介紹 YARN 是如何對這些資源進行調度和隔離的。yarn 對于自己運行時作業的資源分配模式有 Capacity Scheduler 和 Fair Scheduler 兩種。

在 YARN 中,資源管理由 ResourceManager 和 NodeManager 共同完成,其中,ResourceManager 中的調度器負責 資源的分配,而 NodeManager 則負責資源的供給和隔離。ResourceManager 將某個 NodeManager 上資源分配給任務(這就是所 謂的“資源調度”)后,NodeManager 需按照要求為任務提供相應的資源,甚至保證這些資源應具有獨占性,為任務運行提供基礎的保證,這就是所謂的 資源隔離。

基于以上考慮,YARN 允許用戶配置每個節點上可用的物理內存資源,注意,這里是“可用的”,因為一個節點上的內存會被若干個服務共享,比如一部分給 YARN,一部分給 HDFS,一部分給 HBase 等,YARN 配置的只是自己可以使用的,配置參數如下:

(1)yarn.nodemanager.resource.memory-mb

表示該節點上 YARN 可使用的物理內存總量,默認是 8192(MB),注意,如果你的節點內存資源不夠 8GB,則需要調減小這個值,而 YARN 不會智能的探測節點的物理內存總量。

(2)yarn.nodemanager.vmem-pmem-ratio

任務每使用 1MB 物理內存,最多可使用虛擬內存量,默認是 2.1。

(3)yarn.nodemanager.pmem-check-enabled

是否啟動一個線程檢查每個任務正使用的物理內存量,如果任務超出分配值,則直接將其殺掉,默認是 true。

(4)yarn.nodemanager.vmem-check-enabled

是否啟動一個線程檢查每個任務正使用的虛擬內存量,如果任務超出分配值,則直接將其殺掉,默認是 true。

(5)yarn.scheduler.minimum-allocation-mb

單個任務可申請的最少物理內存量,默認是 1024(MB),如果一個任務申請的物理內存量少于該值,則該對應的值改為這個數。

(6)yarn.scheduler.maximum-allocation-mb

單個任務可申請的最多物理內存量,默認是 8192(MB)。

默認情況下,YARN 采用了線程監控的方法判斷任務是否超量使用內存,一旦發現超量,則直接將其殺死。由于 Cgroups 對內存的控制缺乏靈活性(即任務任何時刻不能超過內存上限,如果超過,則直接將其殺死或者報 OOM),而 Java 進程在創建瞬間內存將翻倍,之后驟降到正常值,這種情況下,采用 線程監控的方式更加靈活(當發現進程樹內存瞬間翻倍超過設定值時,可認為是正?,F象,不會將任務殺死),因此 YARN 未提供 Cgroups 內存隔離機制。

Capacity Scheduler

Capacity Scheduler 支持以下特性:

(1) 計算能力保證。支持多個隊列,某個作業可被提交到某一個隊列中。每個隊列會配置一定比例的計算資源,且所有提交到隊列中的作業共享該隊列中的資源。

(2) 靈活性??臻e資源會被分配給那些未達到資源使用上限的隊列,當某個未達到資源的隊列需要資源時,一旦出現空閑資源資源,便會分配給他們。

(3) 支持優先級。隊列支持作業優先級調度(默認是 FIFO)

(4) 多重租賃。綜合考慮多種約束防止單個作業、用戶或者隊列獨占隊列或者集群中的資源。

(5) 基于資源的調度。支持資源密集型作業,允許作業使用的資源量高于默認值,進而可容納不同資源需求的作業。不過,當前僅支持內存資源的調度。

想要配置能力調度模式首先我們需要將 yarn-site.xml 文件中設置 yarn.resourcemanager.scheduler.class 屬性為 org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.CapacityScheduler

1.   資源分配相關參數

(1) capacity:隊列的資源容量(百分比)。當系統非常繁忙時,應保證每個隊列的容量得到滿足,而如果每個隊列應用程序較少,可將剩余資源共享給其他隊列。注意,所有隊列的容量之和應小于 100。

(2) maximum-capacity:隊列的資源使用上限(百分比)。由于存在資源共享,因此一個隊列使用的資源量可能超過其容量,而最多使用資源量可通過該參數限制。

m  minimum-user-limit-percent:每個用戶最低資源保障(百分比)。任何時刻,一個隊列中每個用戶可使用的資源量均有一定的限制。當一個隊列中同時運行多個用戶的應用程序時中,每個用戶的使用資源量在一個最小值和最大值之間浮動,其中,最小值取決于正在運行的應用程序數目,而最大值則由 minimum-user-limit-percent 決定。比如,假設 minimum-user-limit-percent 為 25。當兩個用戶向該隊列提交應用程序時,每個用戶可使用資源量不能超過 50%,如果三個用戶提交應用程序,則每個用戶可使用資源量不能超多 33%,如果四個或者更多用戶提交應用程序,則每個用戶可用資源量不能超過 25%。

(3) user-limit-factor:每個用戶最多可使用的資源量(百分比)。比如,假設該值為 30,則任何時刻,每個用戶使用的資源量不能超過該隊列容量的 30%。

2.   限制應用程序數目相關參數

(1) maximum-applications:集群或者隊列中同時處于等待和運行狀態的應用程序數目上限,這是一個強限制,一旦集群中應用程序數目超過該上限,后續提交的應用程序將被拒絕,默認值為 10000。所有隊列的數目上限可通過參數 yarn.scheduler.capacity.maximum-applications 設置(可看做默認 值),而單個隊列可通過參數 yarn.scheduler.capacity. queue-path .maximum- applications 設置適合自己的值。

(2) maximum-am-resource-percent:集群中用于運行應用程序 ApplicationMaster 的資源比例上限,該參數通常用于限制處于活動狀態的應用程序數目。該參數類型為浮點型,默認是 0.1,表示 10%。所 有隊列的 ApplicationMaster 資源比例上限可通過參數 yarn.scheduler.capacity. maximum-am-resource-percent 設置(可看做默認值),而單個隊列可通過參數 yarn.scheduler.capacity. queue-path . maximum-am-resource-percent 設置適合自己的值。

3.   隊列訪問和權限控制參數

(1) state:隊列狀態可以為 STOPPED 或者 RUNNING,如果一個隊列處于 STOPPED 狀態,用戶不可以將應用程序提交到該隊列或者它的子隊列中,類似的,如果 ROOT 隊列處于 STOPPED 狀態,用戶不可以向集群中提交應用程序,但正在運行的應用程序仍可以正常運行結束,以便隊列可以優雅地退出。

(2) acl_submit_applications:限定哪些 Linux 用戶 / 用戶組可向給定隊列中提交應用程序。需要注意的是,該屬性具有繼承性,即如果一個用戶可以向某個隊列中提交應用程序,則它可以向它的所有子隊列中提交應用程序。配置該屬性時,用戶之間或用戶組之間用“,”分割,用戶和用戶組之間用空格分割,比如“user1, user2 group1,group2”。

(3) acl_administer_queue:為隊列指定一個管理員,該管理員可控制該隊列的所有應用程序,比如殺死任意一個應用程序等。同樣,該屬性具有繼承性,如果一個用戶可以向某個隊列中提交應用程序,則它可以向它的所有子隊列中提交應用程序。

Fair Scheduler

公平調度器按資源池(pool)來組織作業,并把資源公平的分到這些資源池里。默認情況下,每一個用戶擁有一個獨立的資源池,以使每個用戶都能獲得 一份等同的集群資源而不管他們提交了多少作業。按用戶的 Unix 群組或作業配置(jobconf)屬性來設置作業的資源池也是可以的。在每一個資源池內,會使用公平共享(fair sharing)的方法在運行作業之間共享容量(capacity)。用戶也可以給予資源池相應的權重,以不按比例的方式共享集群。

除了提供公平共享方法外,公平調度器允許賦給資源池保證(guaranteed)最小共享資源,這個用在確保特定用戶、群組或生產應用程序總能獲取 到足夠的資源時是很有用的。當一個資源池包含作業時,它至少能獲取到它的最小共享資源,但是當資源池不完全需要它所擁有的保證共享資源時,額外的部分會在 其它資源池間進行切分。

要想配置公平調度模式首先我們需要將 yarn-site.xml 文件中設置 yarn.resourcemanager.scheduler.class 屬性為 org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler

Fair Scheduler 允許用戶將隊列信息專門放到一個配置文件(默認是 fair-scheduler.xml),對于每個隊列,管理員可配置以下幾個選項:

(1) minResources:最少資源保證量,設置格式為“X mb, Y vcores”,當一個隊列的最少資源保證量未滿足時,它將優先于其他同級隊列獲得資源,對于不同的調度策略(后面會詳細介紹),最少資源保證量的含義不 同,對于 fair 策略,則只考慮內存資源,即如果一個隊列使用的內存資源超過了它的最少資源量,則認為它已得到了滿足;對于 drf 策略,則考慮主資源使用 的資源量,即如果一個隊列的主資源量超過它的最少資源量,則認為它已得到了滿足。

(2) maxResources:最多可以使用的資源量,fair scheduler 會保證每個隊列使用的資源量不會超過該隊列的最多可使用資源量。

(3) maxRunningApps:最多同時運行的應用程序數目。通過限制該數目,可防止超量 Map Task 同時運行時產生的中間輸出結果撐爆磁盤。

(4) minSharePreemptionTimeout:最小共享量搶占時間。如果一個資源池在該時間內使用的資源量一直低于最小資源量,則開始搶占資源。

(5) schedulingMode/schedulingPolicy:隊列采用的調度模式,可以是 fifo、fair 或者 drf。

(6) aclSubmitApps:可向隊列中提交應用程序的 Linux 用戶或用戶組列表,默認情況下為“*”,表示任何用戶均可以向該隊列提交應用程序。需要注意的是,該屬性具有繼承性,即子隊列的列表會繼承父隊列的列表。配置該屬性時,用戶之間或用戶組之間用“,”分割,用戶和用戶組之間用空格分割,比如“user1, user2 group1,group2”。

(7) aclAdministerApps:該隊列的管理員列表。一個隊列的管理員可管理該隊列中的資源和應用程序,比如可殺死任意應用程序。

管理員也可為單個用戶添加 maxRunningJobs 屬性限制其最多同時運行的應用程序數目。此外,管理員也可通過以下參數設置以上屬性的默認值:

(1) userMaxJobsDefault:用戶的 maxRunningJobs 屬性的默認值。

(2) defaultMinSharePreemptionTimeout:隊列的 minSharePreemptionTimeout 屬性的默認值。

(3) defaultPoolSchedulingMode:隊列的 schedulingMode 屬性的默認值。

(4) fairSharePreemptionTimeout:公平共享量搶占時間。如果一個資源池在該時間內使用資源量一直低于公平共享量的一半,則開始搶占資源。

關于怎么分析 yarn 的調度模式就分享到這里啦,希望上述內容能夠讓大家有所提升。如果想要學習更多知識,請大家多多留意丸趣 TV 小編的更新。謝謝大家關注一下丸趣 TV 網站!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-04發表,共計5178字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 乌鲁木齐市| 婺源县| 乌鲁木齐市| 哈巴河县| 渝中区| 临沭县| 玉树县| 遂川县| 永安市| 静安区| 额敏县| 滨州市| 富民县| 衢州市| 溆浦县| 淳安县| 拉萨市| 宁河县| 白山市| 武宁县| 柳州市| 渝北区| 南宫市| 泰来县| 道真| 隆化县| 东阿县| 清丰县| 抚松县| 蚌埠市| 马边| 乌兰县| 寻甸| 金寨县| 青田县| 和林格尔县| 额济纳旗| 青州市| 霍山县| 登封市| 安徽省|