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