您好,登錄后才能下訂單哦!
這篇文章給大家介紹Fair Scheduler到Capacity Scheduler的轉(zhuǎn)換工具有哪些,內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
o 一次查看多個節(jié)點
o 細粒度的鎖
o 多個分配線程
o 吞吐量提高5-10倍
經(jīng)過長期仔細的分析,我們決定選擇Capacity Scheduler作為默認(rèn)調(diào)度程序。我們整理了一份文檔,比較了 YARN-9698 ( 直接鏈接 )下的“容量調(diào)度程序”和“公平調(diào)度程序”的功能。
請注意,盡管我們使用各種Fair Scheduler和YARN站點配置測試了該工具,但它是Apache Hadoop的新增功能。強烈建議手動檢查和檢查生成的輸出文件。
yarn fs2cs -y /path/to/yarn-site.xml [-f /path/to/fair-scheduler.xml] {-o /output/path/ | -p} [-t] [-s] [-d]-y /path/to/yarn-site.xml [-f /path/to/fair-scheduler.xml] {-o /output/path/ | -p} [-t] [-s] [-d]
yarn fs2cs --yarnsiteconfig /path/to/yarn-site.xml [--fsconfig /path/to/fair-scheduler.xml] {--output-directory /output/path/ | --print} [--no-terminal-rule-check] [--skip-verification] [--dry-run]--yarnsiteconfig /path/to/yarn-site.xml [--fsconfig /path/to/fair-scheduler.xml] {--output-directory /output/path/ | --print} [--no-terminal-rule-check] [--skip-verification] [--dry-run]
yarn fs2cs --yarnsiteconfig /home/hadoop/yarn-site.xml --fsconfig /home/hadoop/fair-scheduler.xml --output-directory /tmp--yarnsiteconfig /home/hadoop/yarn-site.xml --fsconfig /home/hadoop/fair-scheduler.xml --output-directory /tmp
<allocations> <queue name="root"><queue name="root"> <weight>1.0</weight><weight>1.0</weight> <schedulingPolicy>drf</schedulingPolicy><schedulingPolicy>drf</schedulingPolicy> <queue name="default"><queue name="default"> <weight>1.0</weight><weight>1.0</weight> <schedulingPolicy>drf</schedulingPolicy><schedulingPolicy>drf</schedulingPolicy> </queue></queue> <queue name="users" type="parent"><queue name="users" type="parent"> <maxChildResources>memory-mb=8192, vcores=1</maxChildResources><maxChildResources>memory-mb=8192, vcores=1</maxChildResources> <weight>1.0</weight><weight>1.0</weight> <schedulingPolicy>drf</schedulingPolicy><schedulingPolicy>drf</schedulingPolicy> </queue></queue> </queue></queue> <queuePlacementPolicy><queuePlacementPolicy> <rule name="specified" create="true"/><rule name="specified" create="true"/> <rule name="nestedUserQueue" create="true"><rule name="nestedUserQueue" create="true"> <rule name="default" create="true" queue="users"/><rule name="default" create="true" queue="users"/> </rule></rule> <rule name="default"/><rule name="default"/> </queuePlacementPolicy></queuePlacementPolicy></allocations>
yarn.scheduler.fair.allow-undeclared-pools = true.scheduler.fair.allow-undeclared-pools = trueyarn.scheduler.fair.user-as-default-queue = true.scheduler.fair.user-as-default-queue = trueyarn.scheduler.fair.preemption = false.scheduler.fair.preemption = falseyarn.scheduler.fair.preemption.cluster-utilization-threshold = 0.8.scheduler.fair.preemption.cluster-utilization-threshold = 0.8yarn.scheduler.fair.sizebasedweight = false.scheduler.fair.sizebasedweight = falseyarn.scheduler.fair.assignmultiple = true.scheduler.fair.assignmultiple = trueyarn.scheduler.fair.dynamicmaxassign = true.scheduler.fair.dynamicmaxassign = trueyarn.scheduler.fair.maxassign = -1.scheduler.fair.maxassign = -1yarn.scheduler.fair.continuous-scheduling-enabled = false.scheduler.fair.continuous-scheduling-enabled = falseyarn.scheduler.fair.locality-delay-node-ms = 2000.scheduler.fair.locality-delay-node-ms = 2000
~$ yarn fs2cs -y /home/examples/yarn-site.xml -f /home/examples/fair-scheduler.xml -o /tmp$ yarn fs2cs -y /home/examples/yarn-site.xml -f /home/examples/fair-scheduler.xml -o /tmp
2020-05-05 14:22:41,384 INFO [main] converter.FSConfigToCSConfigConverter (FSConfigToCSConfigConverter.java:prepareOutputFiles(138)) - Output directory for yarn-site.xml and capacity-scheduler.xml is: /tmp
-05-05 14:22:41,384 INFO [main] converter.FSConfigToCSConfigConverter (FSConfigToCSConfigConverter.java:prepareOutputFiles(138)) - Output directory for yarn-site.xml and capacity-scheduler.xml is: /tmp
2020-05-05 14:22:41,388 INFO [main] converter.FSConfigToCSConfigConverter (FSConfigToCSConfigConverter.java:loadConversionRules(177)) - Conversion rules file is not defined, using default conversion config!
-05-05 14:22:41,388 INFO [main] converter.FSConfigToCSConfigConverter (FSConfigToCSConfigConverter.java:loadConversionRules(177)) - Conversion rules file is not defined, using default conversion config!
[...] output trimmed for brevity output trimmed for brevity
2020-05-05 14:22:42,572 ERROR [main] converter.FSConfigToCSConfigConverterMain (MarkerIgnoringBase.java:error(159)) - -05-05 14:22:42,572 ERROR [main] converter.FSConfigToCSConfigConverterMain (MarkerIgnoringBase.java:error(159)) - Error while starting FS configuration conversion! while starting FS configuration conversion!
[...] output trimmed for brevity output trimmed for brevity
Caused by: org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.AllocationConfigurationException: Rules after rule 2 in queue placement policy can never be reached
at org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.QueuePlacementPolicy.updateRuleSet(QueuePlacementPolicy.java:115)
[...]
~$ yarn fs2cs -y /home/examples/yarn-site.xml -f /home/examples/fair-scheduler.xml -o /tmp --no-terminal-rule-check
2020-05-05 14:41:39,189 INFO [main] capacity.CapacityScheduler (CapacityScheduler.java:initScheduler(384)) - Initialized CapacityScheduler with calculator=class org.apache.hadoop.yarn.util.resource.DefaultResourceCalculator, minimumAllocation=<<memory:1024, vCores:1>>, maximumAllocation=<<memory:8192, vCores:4>>, asynchronousScheduling=false, asyncScheduleInterval=5ms,multiNodePlacementEnabled=false
2020-05-05 14:41:39,190 INFO [main] converter.ConvertedConfigValidator (ConvertedConfigValidator.java:validateConvertedConfig(72)) - Capacity scheduler was successfully started
This time, the conversion succeeded!
2020-05-05 14:41:38,908 WARN [main] converter.FSConfigToCSConfigRuleHandler (ConversionOptions.java:handleWarning(48)) - Setting <userMaxAppsDefault> is not supported, ignoring conversion
2020-05-05 14:41:38,945 WARN [main] converter.FSConfigToCSConfigRuleHandler (ConversionOptions.java:handleWarning(48)) - Setting <maxChildResources> is not supported, ignoring conversion
yarn.scheduler.capacity.resource-calculator =org.apache.hadoop.yarn.util.resource.DominantResourceCalculatoryarn.scheduler.capacity.per-node-heartbeat.multiple-assignments-enabled = trueyarn.resourcemanager.scheduler.class = org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
yarn.scheduler.capacity.root.users.maximum-capacity = 100yarn.scheduler.capacity.root.default.capacity = 50.000yarn.scheduler.capacity.root.default.ordering-policy = fairyarn.scheduler.capacity.root.users.capacity = 50.000yarn.scheduler.capacity.root.default.maximum-capacity = 100yarn.scheduler.capacity.root.queues = default,usersyarn.scheduler.capacity.root.maximum-capacity = 100yarn.scheduler.capacity.maximum-am-resource-percent = 0.5
yarn.scheduler.fair.preemption - trueyarn.scheduler.fair.sizebasedweight - trueyarn.scheduler.fair.continuous-scheduling-enabled - true
yarn.scheduler.capacity.resource-calculator =org.apache.hadoop.yarn.util.resource.DominantResourceCalculatoryarn.scheduler.capacity.schedule-asynchronously.scheduling-interval-ms = 5yarn.scheduler.capacity.schedule-asynchronously.enable = trueyarn.resourcemanager.monitor.capacity.preemption.monitoring_interval = 10000yarn.resourcemanager.monitor.capacity.preemption.max_wait_before_kill = 15000yarn.scheduler.capacity.per-node-heartbeat.multiple-assignments-enabled = trueyarn.resourcemanager.scheduler.class =org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduleryarn.resourcemanager.scheduler.monitor.enable = true
yarn.scheduler.capacity.root.default.ordering-policy.fair.enable-size-based-weight = trueyarn.scheduler.capacity.root.users.ordering-policy.fair.enable-size-based-weight = trueyarn.scheduler.capacity.root.users.capacity = 50.000yarn.scheduler.capacity.root.queues = default,usersyarn.scheduler.capacity.root.users.maximum-capacity = 100yarn.scheduler.capacity.root.ordering-policy.fair.enable-size-based-weight = true[...] rest is omitted because it’s the same as before
root.a = 3root.b = 1
yarn.scheduler.capacity.root.a.capacity = 75.000yarn.scheduler.capacity.root.a.maximum-capacity = 100.000yarn.scheduler.capacity.root.b.capacity = 25.000yarn.scheduler.capacity.root.b.maximum-capacity = 100.000
root = 1root.users = 20root.default = 10root.users.alice = 3root.users.bob = 1
yarn.scheduler.capacity.root.capacity = 100.000yarn.scheduler.capacity.root.maximum-capacity = 100.000yarn.scheduler.capacity.root.users.capacity = 66.667yarn.scheduler.capacity.root.users.maximum-capacity = 100.000yarn.scheduler.capacity.root.default.capacity = 33.333yarn.scheduler.capacity.root.default.maximum-capacity = 100.000yarn.scheduler.capacity.root.users.alice.capacity = 75.000yarn.scheduler.capacity.root.users.alice.maximum-capacity = 100.000yarn.scheduler.capacity.root.users.bob.capacity = 25.000yarn.scheduler.capacity.root.users.bob.maximum-capacity = 100.000
? 每個用戶的最大應(yīng)用程序數(shù)
? <userMaxAppsDefault> –每個用戶的默認(rèn)最大應(yīng)用程序
? <minResources> –隊列的最小資源
? <maxResources> –隊列的最大資源
? <maxChildResources> –動態(tài)創(chuàng)建的隊列的最大資源
? 隊列級別的DRF排序策略:在Capacity Scheduler中,DRF必須是全局的。在Fair Scheduler中,可以在DRF父項下使用常規(guī)的“ Fair”策略。
1) 在Capacity Scheduler(YARN-9936 )中將百分比向量作為資源處理。用戶將不僅可以定義單個容量,還可以定義不同資源的多個值。
2) 手柄maxRunningApps 每用戶userMaxAppsDefault (YARN-9930 )我們有“每用戶最多的應(yīng)用程序”設(shè)置,但它不是直接配置和繁瑣,因為它的三個設(shè)置的組合。我們還必須注意不要破壞現(xiàn)有行為–如果超過了最大設(shè)置,Capacity Scheduler中的現(xiàn)有邏輯將拒絕提交應(yīng)用程序,而在Fair Scheduler中,該應(yīng)用程序始終被接受,并將在以后進行調(diào)度。
3) 處理minResources ,maxResources 和maxChildResources 這些在很大程度上取決于YARN-9936 。在Fair Scheduler中,用戶可以通過多種方式(單個百分比,兩個單獨的百分比或絕對資源)表達這些設(shè)置。為了支持Capacity Scheduler中的類似設(shè)置,我們需要YARN-9936 。
4) 使映射規(guī)則的行為類似于Fair Scheduler中存在的實現(xiàn)。在“放置規(guī)則”部分中說明了如何評估映射規(guī)則。我們可能需要一種新的,可插入的方法–這樣,我們就不會在已經(jīng)非常復(fù)雜的現(xiàn)有代碼庫中引入回歸。
5) 關(guān)于DRF和其他調(diào)度策略的改進(YARN-9892 )當(dāng)前,我們有一個由屬性yarn.scheduler.capacity.resource-calculator 定義的全局資源計算器。這在Fair Scheduler中更加細膩。
6) 關(guān)于整個轉(zhuǎn)換過程的通用微調(diào)在Capacity Scheduler 中有一些屬性,例如“ user-limit-factor”或“ minimum-user-limit-percent”。我們暫時不使用這些設(shè)置,但是事實證明,在某些配置中,它們被證明是有用的
關(guān)于Fair Scheduler到Capacity Scheduler的轉(zhuǎn)換工具有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。