hadoop3 Yarn容量(Capacity Scheduler)调度器和公平(Fair Scheduler)调度器配置
文章目錄
- 組件模塊說明
- 容量調度器(Capacity Scheduler)
- 容量調度器特點
- 公平調度器(Fair Scheduler)
- 配置容量調度器案例
- 例子1
- 例子2
- 例子3
- 例子4
- 配置公平調度器案例
- 例子1
組件模塊說明
Hadoop:以下內容為V3.3版本
資源管理器(ResourceManager):整個集群所有資源的管理者。作用:處理客戶端請求、監控NodeManager、啟動或監控ApplicationMaster、資源的分配與調度。
容器(Container):對任務運行環境的抽象,虛擬化技術容器,相當于一臺獨立的服務器,里面封裝了任務運行所需要的資源,如內存、cpu、磁盤、網絡等。好處:任務運行完直接釋放。
Application Master:單個任務運行的老大,任務在Container內運行客戶端提交一個job,就會產生一個ApplicationMaster。作用:為應用程序申請資源并分配給內部的任務、任務的監控與容錯。
容量調度器(Capacity Scheduler)
hadoop3默認的調度器
容量調度器特點
圖中queueA分配最多20%資源,queueB分配50%,queueC分配30%。其中queueC,配置租戶ss、cls。
程序提交,則其他隊列借調的資源會歸還給該隊列。
公平調度器(Fair Scheduler)
hadoop3默認的容量調度器可以改為公平調度器
同隊列所有任務共享資源,在時間尺度上獲得公平的資源。如queueA,20%資源,4個任務,每個5%。
配置容量調度器案例
以下執行yarn rmadmin -refreshQueues可刷新隊列配置
例子1
default 隊列占總內存的 40%,最大資源容量占總資源 60%(容量調度器允許借用其他隊列剩余的資源,這里限制不超過60%), hive 隊列占總內存的 60%, 最大資源容量占總資源 80%。
在 capacity-scheduler.xml 中配置如下:
<!-- 指定多隊列,增加hive隊列 --> <property><name>yarn.scheduler.capacity.root.queues</name><value>default,hive</value> </property><!-- 降低default隊列資源額定容量為40%,默認100% --> <property><name>yarn.scheduler.capacity.root.default.capacity</name><value>40</value> </property><!-- 降低default隊列資源最大容量為60%,默認100% --> <property><name>yarn.scheduler.capacity.root.default.maximum-capacity</name><value>60</value> </property><!-- 指定hive隊列的資源額定容量 --> <property><name>yarn.scheduler.capacity.root.hive.capacity</name><value>60</value> </property><!-- 指定hive隊列的資源最大容量 --> <property><name>yarn.scheduler.capacity.root.hive.maximum-capacity</name><value>80</value> </property>例子2
vcore和內存固定值配置,參考官網
yarn.scheduler.capacity.<queue-path>.maximum-allocation-mb:每個隊列在資源管理器上分配給每個容器請求的最大內存限制。此設置覆蓋集群配置 yarn.scheduler.maximum-allocation-mb。該值必須小于等于集群最大值。
yarn.scheduler.capacity.<queue-path>.maximum-allocation-vcores:每個隊列在資源管理器中分配給每個容器請求的虛擬內核的最大限制。此設置會覆蓋集群配置 yarn.scheduler.maximum-allocation-vcores。該值必須小于或等于集群最大值。
例子3
限制用戶提交、操作權限
在capacity-scheduler.xml中配置如下:
<!-- 哪些用戶有權向隊列提交作業,如果要配置默認隊列就是yarn.scheduler.capacity.root.default.acl_submit_applications--> <property><name>yarn.scheduler.capacity.root.hive.acl_submit_applications</name><value>hive</value> </property><!-- 哪些用戶有權操作隊列,管理員權限(查看/殺死) --> <property><name>yarn.scheduler.capacity.root.hive.acl_administer_queue</name><value>hive</value> </property><!-- 哪些用戶有權配置提交任務優先級 --> <property><name>yarn.scheduler.capacity.root.hive.acl_application_max_priority</name><value>hive</value> </property>例子4
任務優先級,在資源緊張時,優先級高的任務將優先獲取資源。默認情況,Yarn將所有任務的優先級限制為0,若想使用任務的優先級功能,須開放該限制。
修改yarn-site.xml文件,增加以下參數,為給任務優先級配置5個等級:
<property><name>yarn.cluster.max-application-priority</name><value>5</value> </property>通過以下命令修改正在執行的任務的優先級。
yarn application -appID <ApplicationID> -updatePriority 優先級例如:
yarn application -appID application_1611133087930_0009 -updatePriority 5配置公平調度器案例
例子1
創建兩個隊列,分別是test和test2(以用戶所屬組命名)。若用戶提交任務時指定隊列,則任務提交到指定隊列運行;若未指定隊列,test用戶提交的任務到root.group.test隊列運行,test2提交的任務到root.group.test2隊列運行(注:group為用戶所屬組)。
公平調度器的配置涉及到兩個文件,一個是yarn-site.xml,另一個是公平調度器隊列分配文件fair-scheduler.xml(文件名可自定義)。
修改yarn-site.xml文件,加入以下參數:
<property><name>yarn.resourcemanager.scheduler.class</name><value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value><description>配置使用公平調度器</description> </property><property><name>yarn.scheduler.fair.allocation.file</name><value>/opt/module/hadoop-3.1.3/etc/hadoop/fair-scheduler.xml</value><description>指明公平調度器隊列分配配置文件</description> </property>配置fair-scheduler.xml:
<?xml version="1.0"?> <allocations><!-- 單個隊列中Application Master占用資源的最大比例,取值0-1 ,企業一般配置0.1,比如服務器10G內存,0.1為1G --><queueMaxAMShareDefault>0.1</queueMaxAMShareDefault><!-- 單個隊列最大資源的默認值 test test2 default --><queueMaxResourcesDefault>4096mb,4vcores</queueMaxResourcesDefault><!-- 增加一個隊列test --><queue name="test"><!-- 隊列最小資源 --><minResources>2048mb,2vcores</minResources><!-- 隊列最大資源 --><maxResources>4096mb,4vcores</maxResources><!-- 隊列中最多同時運行的應用數,默認50,根據線程數配置 --><maxRunningApps>4</maxRunningApps><!-- 隊列中Application Master占用資源的最大比例 --><maxAMShare>0.1</maxAMShare><!-- 該隊列資源權重,默認值為1.0 --><weight>1.0</weight><!-- 隊列內部的資源分配策略 --><schedulingPolicy>fair</schedulingPolicy></queue><!-- 增加一個隊列test2 --><queue name="test2" type="parent"><!-- 和隊列test的配置相似 -->...</queue><!-- 任務隊列分配策略,可配置多層規則,從第一個規則開始匹配,直到匹配成功 --><queuePlacementPolicy><!-- 提交任務時指定隊列,如未指定提交隊列,則繼續匹配下一個規則; false表示:如果指定隊列不存在,不允許自動創建--><rule name="specified" create="false"/><!-- 提交到root.group.username隊列,若root.group不存在,不允許自動創建;若root.group.user不存在,允許自動創建;即test用戶提交到test隊列 --><rule name="nestedUserQueue" create="true"><rule name="primaryGroup" create="false"/></rule><!-- 最后一個規則必須為reject或者default。Reject表示拒絕創建提交失敗,default表示把任務提交到default隊列 --><rule name="reject" /></queuePlacementPolicy> </allocations>總結
以上是生活随笔為你收集整理的hadoop3 Yarn容量(Capacity Scheduler)调度器和公平(Fair Scheduler)调度器配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浏览器实时查看日志log.io
- 下一篇: 华为计算机视觉算法,【华为图像算法面试】