国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

YARN 監(jiān)控管理以資源管理

這篇具有很好參考價(jià)值的文章主要介紹了YARN 監(jiān)控管理以資源管理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


YARN WebUI V1服務(wù)

YARN提供了一個(gè)WebUI v1服務(wù),該服務(wù)屬于內(nèi)置服務(wù),隨著RM的啟動(dòng)而啟動(dòng),V1表示這是第一代版本的WebUI服務(wù),用戶(hù)可以通過(guò)瀏覽器登陸界面,來(lái)監(jiān)控集群、隊(duì)列、應(yīng)用程序、服務(wù)、節(jié)點(diǎn)信息,還可以查看集群詳細(xì)配置的信息,檢查各種應(yīng)用程序和服務(wù)的日志

首頁(yè)

瀏覽器輸入http://RM_HOST:8088 訪(fǎng)問(wèn)YARN WebUI服務(wù),瀏覽器打開(kāi)后以列表的形式展示處于各種狀態(tài)的各種應(yīng)用程序,入MapReduce應(yīng)用程序、Spark應(yīng)用程序、Flink應(yīng)用等。

YARN 監(jiān)控管理以資源管理

JobHistoryServer服務(wù)

在默認(rèn)情況下,YARN RM重啟之后,已完成的作業(yè)和正在執(zhí)行的作業(yè)信息都會(huì)丟失,針對(duì)正在執(zhí)行的作業(yè)恢復(fù),可以設(shè)置RM重啟機(jī)制回復(fù),如果沒(méi)有開(kāi)啟則全部丟失。JobHistoryServer(JHS)屬于YARN的一項(xiàng)系統(tǒng)服務(wù),進(jìn)存儲(chǔ)與已經(jīng)完成的MapReduce應(yīng)用程序的作業(yè)歷史信息,并不會(huì)存儲(chǔ)其他類(lèi)型(如spark、flink等)應(yīng)用程序的作業(yè)歷史信息,當(dāng)啟用JHS服務(wù)時(shí),建議開(kāi)啟日志聚合紅能,利于統(tǒng)一管理和分析日志,否則每隔Container的運(yùn)行日志是存儲(chǔ)在NodeManager節(jié)點(diǎn)本地,查看日志時(shí)需要訪(fǎng)問(wèn)各個(gè)NodeManager節(jié)點(diǎn)

配置

Step1 :mapred-site.xml 添加JHS配置

<!--jobhistory 服務(wù)配置,注意19888是web ui訪(fǎng)問(wèn)端口-->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop132-father:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop132-father:19888</value>
</property>

Step2:yarn-site.xml 添加日志聚合配置

<!--開(kāi)啟yarn日志聚合功能,手機(jī)每個(gè)容器的日志 集中存儲(chǔ)在同一個(gè)地方-->
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!--設(shè)置日志保留時(shí)間: 1天-->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>86400</value>
</property>
<property>
    <name>yarn.log.server.url</name>
    <value>hadoop132-father:19888/jobhistory/logs</value>
</property>

**step3:集群同步配置文件 **

# 我們采用scp進(jìn)行同步
scp yarn-site.xml mapred-site.xml hadoop133:$PWD
scp yarn-site.xml mapred-site.xml hadoop134:$PWD

啟動(dòng)Hadoop集群、手動(dòng)啟動(dòng)JHS服務(wù)

# 啟動(dòng)hadoop
start-all.sh
# 啟動(dòng)JHS服務(wù)
mapred -- daemon start historyserver

我們通過(guò)JPS來(lái)進(jìn)行查看

YARN 監(jiān)控管理以資源管理

啟動(dòng)成功

我們前往相關(guān)頁(yè)面(在配置文件中有設(shè)置的信息,我設(shè)置的hadoop132-father:19888,在使用的時(shí)候根據(jù)自己在step1 的設(shè)置進(jìn)行相關(guān)的操作)

YARN 監(jiān)控管理以資源管理

在這里可以直接進(jìn)行查看相關(guān)信息,在這里我們可以直接看到啟動(dòng)了多少個(gè)Map、多少個(gè)Reduce,以及運(yùn)行的結(jié)果:多少個(gè)運(yùn)行成功,多少個(gè)運(yùn)行失敗。

YARN 監(jiān)控管理以資源管理

同時(shí)也可以看到在哪臺(tái)機(jī)器上運(yùn)行的,點(diǎn)擊一下可以查看更加詳細(xì)的信息:比如說(shuō)最后一次心跳是什么時(shí)候

YARN 監(jiān)控管理以資源管理

TimelineServer服務(wù)

由于JobHistoryServer進(jìn)隊(duì)MapReduce應(yīng)用程序提供歷史信息支持,其他應(yīng)用程序的歷史信息需要分別提供單獨(dú)的HistoryServer才能查詢(xún)和檢索,例如Spark的Application需要通過(guò)Spark自己提供的HistoryServer來(lái)解決應(yīng)用歷史信息,為了解決這個(gè)問(wèn)題YARN新增了Timeline Server組件,以通用的方式存儲(chǔ)和檢索應(yīng)用程序當(dāng)前和歷史信息在中文語(yǔ)境下,將Timeline Server稱(chēng)之為時(shí)間軸服務(wù)

作用

  • 存儲(chǔ)應(yīng)用程序的特定信息
    手機(jī)和檢索指定應(yīng)用程序或者框架的某些信息,例如Hadoop的MR框架會(huì)產(chǎn)生像Map Task數(shù)量、Reduce Task數(shù)量 Counter等信息,應(yīng)用開(kāi)發(fā)人員可以通過(guò)TimelineClient,在Application Master或者Container中將特定的程序發(fā)送給Timeline服務(wù)器,同時(shí)Timeline 提供RESTAPI ,用以查詢(xún)Timeline中存儲(chǔ)的信息,并可以通過(guò)應(yīng)用程序或者框架的特定UOI進(jìn)行展示
  • 保存已經(jīng)完成應(yīng)用程序的常規(guī)信息
    在之前此功能只能通過(guò)JobHistoryServer 實(shí)現(xiàn),并且僅支持MR Job,隨著Timeline服務(wù)出現(xiàn),JobHistoryServerv的功能看成了Timeline的一部分

YARN操作維護(hù)命令

USER用戶(hù)命令

application

使用方法

yarn application [options]

可以直接使用 --help選項(xiàng)查看幫助文檔

YARN 監(jiān)控管理以資源管理

常用選項(xiàng)

# 查看所有的application 僅顯示狀態(tài)為SUBMITTED ACCEPTED RUNNING 應(yīng)用
yarn application -list
# 查看狀態(tài)為ALL的application 列表
yarn application -list -appStates ALL
# 殺死某個(gè)Application
yarn application -kill Application-ID
#查看某個(gè)Application的統(tǒng)計(jì)報(bào)告
yarn application -status Application-Id
# 查看類(lèi)型為MAPREDUCE 的Application列表
yarn application -list -appTypes MAPREDUCE 
# 移動(dòng)一個(gè)Application 到default隊(duì)列中
yarn application -movetoqueue Application-ID -toqueue default
#移動(dòng)一個(gè)Application 到優(yōu)先隊(duì)列中
yarn application -updatePriority 優(yōu)先級(jí) -appId Application-ID

jar

這個(gè)方法經(jīng)常使用,我們通常運(yùn)行jar 包都是通過(guò)這條命令運(yùn)行的

yarn jar xxx.jar [mainClass] args

通常在${HADOOP_HOME}$/share/hadoop/mapreduce下官方放置了一些可供測(cè)試的jar包

YARN 監(jiān)控管理以資源管理

applicationattempt

使用方法

yarn applicationattempt [options]

applicationattempt可以理解為一個(gè)app應(yīng)用內(nèi)部的一次嘗試執(zhí)行過(guò)程,

相關(guān)操作

#標(biāo)記某一次applicationattempt 失敗
yarn applicationattempt -fail Appattempt-ID
# 查看某個(gè)應(yīng)用所有的attempt 
yarn applicationattempt -list Application-ID
# 查看具體某一個(gè)applicationattempt 的報(bào)告
yarn applicationattempt -status Appattempt-ID

container

使用方式

yarn container [options]

可以根據(jù)attemptID操作作業(yè)的Container相關(guān)信息

常用操作

# 列出指定attemptID所有的container信息
#attemptID可以從RM web UI或者時(shí)間軸服務(wù)[Timeline Server]上獲取
yarn container -list Application_Attempt-ID
# 打印容器的狀態(tài)
yarn container -status Container-ID

logs

使用方法

#日志相關(guān)操作命令
yarn logs -applicationId ApplicationID [options]

常用命令

#查看應(yīng)用程序所有的logs 此操作需要慎重 顯示內(nèi)容比較多
yarn logs -applicationId ApplicationID
# 置頂顯示內(nèi)容大小
yarn logs -applicationId ApplicationID -size size
# 查看應(yīng)用程序某個(gè)container運(yùn)行所在的節(jié)點(diǎn)的log
yarn logs -applicationId ApplicationID -containerId containerId

queue

使用方式

# 隊(duì)列相關(guān)的操作命令
yarn queue [options]

常用命令

#查看某個(gè)queue 的狀態(tài),
yarn queue -status queue-name

node

使用方法

# 集群節(jié)點(diǎn)操作命令
yarn node [options]

常用的相關(guān)操作

#查看yarn所有從節(jié)點(diǎn)
yarn node -list -all
# 查看所有 正在運(yùn)行的節(jié)點(diǎn)
yarn node -list -states RUNNING
# 查看yarn所有節(jié)點(diǎn)的詳細(xì)
yarn node -list showDetails
#查看yarn某個(gè)節(jié)點(diǎn)的報(bào)告
yarn node -status 節(jié)點(diǎn)

version

查看版本號(hào)

yarn version

YARN 監(jiān)控管理以資源管理

Admin 管理命令

resourcemanager | nodemanager

使用方法

# 針對(duì)RM的操作命令
yarn resourcemanager [optinons]

常用操作

# 啟動(dòng)某個(gè)節(jié)點(diǎn)的resourcemanager
yan resourcemanager
# 啟動(dòng)某個(gè)節(jié)點(diǎn)的nodemanager
yarn nodemanager
#格式化resourcemanager的RMStateStore
yarn resourcemanager -format-state-stroe
# 刪除RMStateStore的Application
yarn resoucemanager -remove-application-from-state-stroe ApplicationID

proxyserver

使用方式

#啟動(dòng)某個(gè)節(jié)點(diǎn)的proxyserver,使用代理的原因是為了減少通過(guò)YARN進(jìn)行基于Web的攻擊的可能性
yarn proxyserver

YARN Proxy Server 服務(wù)需要提前配置

<property>
    <name>yarn.web-proxy.address</name>
    <value>hadoop132-father:8089</value>
</property>

daemonlog

使用方法

yarn daemonlog -getlevel <host:httpport> <classname>
yarn daemonlog -setlevel <host:httpport> <level>

常用命令

# 查看幫助
yarn daemonlog
#查看RMApplmpl的日志級(jí)別
yarn daemonlog -getlevel hadoop132-father:8088 0rg.apache.hadoop.yarn.server.resourcemanager.rmapp.RMApplmpl

rmadmin

使用方式

# 這個(gè)命令比較重要 使用的也比較多
yarn rmadmin [options]

常用命令

# 重新加載mapred-queues 配置文件
yarn rmadmin -refreshQueues
#刷新ResouceManager的主機(jī)信息
yarn rmadmin -refreshNodes
# 在Resourcemanager上刷新NodeManager的資源
yarn readmin -refreshNodesResources
# 刷新超級(jí)用戶(hù)代理組映射
yarn readmin -refreshSuperUserGroupsConfiguration
# 刷新ACL以管理ResourceManager 
yarn readmin -refreshAdminAcls
#獲取Resourcemanager服務(wù)的Active/standby狀態(tài)
yarn rmadmin -getAllServiceState
# ResourceManager服務(wù)執(zhí)行健康檢查,如果檢查失敗RMAdmin工具將使用非零退出碼退出
yarn rmadmin -checkHealth rm1
rarn rmadmin -checkHealth rm2

timelineserver

使用方式

# 啟動(dòng)時(shí)間軸服務(wù) 通常使用第二條進(jìn)行啟動(dòng)
yarn timelineserver
yarn-daemon.sh start timelineserver

時(shí)間軸服務(wù)Web UI 端口 8188

scmadmin

使用方法

# scmadmin 是ShareCacheManager (共享緩存管理)的管理客戶(hù)端
yarn scmadmin

常用命令

# 執(zhí)行清理任務(wù)
yarn scmadmin -runCleanerTask
#先啟動(dòng)SCM服務(wù)
yarn-daemon.sh start sharecachemanager

YARN 資源管理與隔離

在YARN中資源管理由ResourceManager和NodeManager共同完成,其中ResouceManager中的調(diào)度器負(fù)責(zé)資源的分配,而NodeManager負(fù)責(zé)資源的供給與隔離。

資源調(diào)度分配:ResourceManager將某個(gè)NodeManager上資源分配給任務(wù)
資源隔離:NodeManager按照需求為任務(wù)提供相應(yīng)的資源,甚至保證這些資源具有獨(dú)占性,為任務(wù)運(yùn)行提供基礎(chǔ)的保證

Hadoop YARN同時(shí)支持內(nèi)存和CPU兩種資源的調(diào)度,內(nèi)存資源的多多少少會(huì)決定任務(wù)的生死,如果內(nèi)存不夠,任務(wù)可能會(huì)運(yùn)行失敗,相比之下CPU資源則不同,他只會(huì)決定任務(wù)運(yùn)行的快慢,不會(huì)對(duì)生死產(chǎn)生影響

Memory內(nèi)存資源

YARN允許用戶(hù)配置每個(gè)節(jié)點(diǎn)上課用的物理內(nèi)存資源;這里是“可用的”,因?yàn)橐粋€(gè)節(jié)點(diǎn)上的內(nèi)存會(huì)被若干個(gè)服務(wù)共享,比如說(shuō)一部分分給YARN,一部分分給HDFS,一部分分給HBase,YARN配置的只是自己可以使用的

配置核心參數(shù)

  1. yarn.nodemanager.resource.memory-mb
    該節(jié)點(diǎn)上YARN可以使用的物理內(nèi)存總量,默認(rèn)為8192MB
    如果設(shè)置為-1,并且yarn.nodemanager.resource。detect-hardware-capabilities 為true時(shí)將會(huì)自動(dòng)計(jì)算操作系統(tǒng)內(nèi)存進(jìn)行設(shè)置
  2. yarn.nodemanager.vmem-pmem-ratio
    任務(wù)每使用1MB物理內(nèi)存,最多可以使用虛擬內(nèi)存量,默認(rèn)為2.1
  3. yarn.nodemanager.peme-check-enabled
    是否啟動(dòng)一個(gè)線(xiàn)程檢查每個(gè)任務(wù)正在使用的物理內(nèi)存量,如果任務(wù)超出分配值,則直接將其殺掉,默認(rèn)為true
  4. yarn nodemanager.veme-check-enable
    是否啟動(dòng)一個(gè)線(xiàn)程檢查每個(gè)任務(wù)正在使用的虛擬內(nèi)存量,如果任務(wù)超出分配值,則直接將其殺掉,默認(rèn)為true
  5. yarn.scheduler.minimum-allocation-mb
    單個(gè)任務(wù)可以申請(qǐng)的最少物理內(nèi)存量,默認(rèn)為1024MB,如果一個(gè)任務(wù)申請(qǐng)的物理內(nèi)存量少于該值,則該對(duì)應(yīng)的值改為這個(gè)數(shù)
  6. yarn.scheduler.maximum-allocation-mb
    單個(gè)任務(wù)可以申請(qǐng)的最多物理內(nèi)存量 最多為8192MB

在默認(rèn)情況下,YARN采用了線(xiàn)程監(jiān)控的方法判斷任務(wù)是否超量使用內(nèi)存,一旦發(fā)現(xiàn)超量,則直接將其殺死,對(duì)于Cgroups對(duì)內(nèi)存的控制缺乏靈活性(即任務(wù)任何時(shí)刻不能超出內(nèi)存上線(xiàn),如果超過(guò),則直接將其殺死或者報(bào)OOM),而Java進(jìn)程在創(chuàng)建瞬間內(nèi)存將翻倍,之后驟降到正常值,采用線(xiàn)程監(jiān)控的方式更加靈活(當(dāng)發(fā)現(xiàn)內(nèi)存樹(shù)內(nèi)存瞬間翻倍超過(guò)設(shè)定值時(shí),可認(rèn)為是正?,F(xiàn)象,不會(huì)將任務(wù)殺死),因此YARN未提供Cgroups內(nèi)存隔離機(jī)制

CPU資源

在YARN中CPU資源的組織方式人在探索中,之前只是非常粗粒度的實(shí)現(xiàn)方式。
CPU被劃分為虛擬CPU,此處的虛擬CPU時(shí)YARN自己引入的概念,初衷是考慮到不同節(jié)點(diǎn)的CPU性能可能不同,每個(gè)CPU具有的計(jì)算能力也是不一樣的,比如說(shuō)某個(gè)物理CPU的計(jì)算能力可能是另一個(gè)的2倍,此時(shí)可以通過(guò)為第一個(gè)物理CPU多配置幾個(gè)虛擬CPU來(lái)彌補(bǔ)這個(gè)差異。
用戶(hù)提交作業(yè),可以指定每個(gè)任務(wù)需要的虛擬CPU個(gè)數(shù).
由于CPU資源的獨(dú)特性,目前這種CPU分配方式仍然是粗力度的

核心參數(shù)配置

  1. yarn.nodemanager.resource.cpu-vcores
    該節(jié)點(diǎn)上YARN可以使用的虛擬CPU個(gè)數(shù),默認(rèn)是8,注意,目前推薦將該值設(shè)置為與物理CPU核數(shù)數(shù)目相同,如果你的節(jié)點(diǎn)CPU核數(shù)不夠8個(gè),則需要減少這個(gè)值
    如果設(shè)置為-1,并且yarn.nodemanager.resource.detect-hardware-capabilities 為true時(shí)將會(huì)自動(dòng)計(jì)算操作系統(tǒng)CPU核數(shù)進(jìn)行設(shè)置
  2. yarn.scheduler.minimum-allocation-vcores
    單個(gè)任務(wù)可申請(qǐng)的最小CPU個(gè)數(shù),默認(rèn)為1,如果一個(gè)任務(wù)申請(qǐng)的CPU個(gè)數(shù)西澳娛該數(shù),則該對(duì)應(yīng)的值修改為這個(gè)數(shù)
  3. yarn.scheduler.maximum-allocation-vcores
    單個(gè)任務(wù)可申請(qǐng)的最多虛擬CPU個(gè)數(shù),默認(rèn)為4

YARN 資源調(diào)度器

在理想情況下,應(yīng)用程序提出的請(qǐng)求將立即得到Y(jié)ARN批準(zhǔn),但是實(shí)際工作中,資源是有限的,并且在繁忙的集群上,應(yīng)用程序通常將需要等待其某些請(qǐng)求得到滿(mǎn)足。YARN調(diào)度程序的工作是根據(jù)一些定義的策略為應(yīng)用程序分配資源

在YARN中,負(fù)責(zé)給應(yīng)用程序分配資源的是Scheduler,他是ResourceManager的核心組件之一,Scheduler完全專(zhuān)用于調(diào)度作業(yè),他無(wú)法跟蹤應(yīng)用程序的狀態(tài)
一般而言,調(diào)度是一個(gè)難題,并且沒(méi)有一個(gè)最佳策略,為此,YARN提供了多種調(diào)度器和可配置的策略供其選擇

調(diào)度器策略

一共有三種調(diào)度器:FIFO Scheduler(先進(jìn)先出調(diào)度器)、Capacity Scheduler(容量調(diào)度器)、Fair Scheduler(公平調(diào)度器)

Apache 版本YARN默認(rèn)使用的FIFO Scheduler,如果需要使用其他調(diào)度器,可以在yarn-site.xml中的yarn.resourcemanager.scheduler.class進(jìn)行配置

YARN 監(jiān)控管理以資源管理

工作隊(duì)列

工作隊(duì)列Queue是從不同客戶(hù)端收到的各種任務(wù)的集合

YARN 默認(rèn)只有一個(gè)可用于提交任務(wù)的隊(duì)列,叫做default,當(dāng)然用戶(hù)也可以配置隊(duì)列形成隊(duì)列樹(shù)結(jié)構(gòu)

Scheduler的本質(zhì)就是根據(jù)何種規(guī)則策略去分配資源給隊(duì)列中的任務(wù)

YARN 監(jiān)控管理以資源管理

隊(duì)列樹(shù)

在YARN中有層級(jí)隊(duì)列組織方法,它們構(gòu)成一個(gè)樹(shù)結(jié)構(gòu),且跟隊(duì)列叫做root。所有的應(yīng)用都運(yùn)行在葉子隊(duì)列中(即樹(shù)結(jié)構(gòu)中的非葉子節(jié)點(diǎn)只是邏輯概念,本身不能運(yùn)行應(yīng)用)。對(duì)于任何一個(gè)應(yīng)用,都可以顯式的指定它屬于的隊(duì)列,也可以不指定從而使用username或者default隊(duì)列,在YARN WebUI界面可以看到默認(rèn)的隊(duì)列組織情況

YARN 監(jiān)控管理以資源管理

FIFO Scheduler

FIFO Scheduler時(shí)Hadoop 1.x中JobTracker原有的調(diào)度器實(shí)現(xiàn),次調(diào)度器在YARN中保留了下來(lái),是一個(gè)先進(jìn)先出的思想,即先提交的應(yīng)用先運(yùn)行,調(diào)度工作不考慮優(yōu)先級(jí)范圍,適用于負(fù)載較低的小規(guī)模集群,當(dāng)使用大型共享集群的時(shí)候,它的效率低且會(huì)導(dǎo)致一些問(wèn)題。

FIFO Scheduler擁有一個(gè)控制全局的隊(duì)列queue,默認(rèn)queue的名字為default,該調(diào)度器會(huì)獲取當(dāng)前集群上所有資源信息作用域這個(gè)全局的queue

優(yōu)缺點(diǎn)

優(yōu)點(diǎn)
無(wú)需配置、先到先得,易于執(zhí)行

缺點(diǎn)
任務(wù)的優(yōu)先級(jí)不會(huì)變高,因此高優(yōu)先級(jí)的作業(yè)需要等待,不適合共享集群

配置

在Hadoop YARN中啟用FIFO調(diào)度程序,修改yarn-site.xml即可

<property>
    <name>yarn.resourcemanager.scheduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.sheduler.fifo.FifoScheduler</value>
</property>

Capacity Scheduler

Capacity Scheduler 容量調(diào)度時(shí)Apache Hadoop3.x 默認(rèn)調(diào)度策略。該策略允許多個(gè)組織共享整個(gè)集群資源,每隔組織可以獲得集群的一部分計(jì)算能力。通過(guò)為每個(gè)組織分配專(zhuān)門(mén)的隊(duì)列,然后再為每隔隊(duì)列分配一定的集群資源,這樣整個(gè)集群就可以通過(guò)設(shè)置多個(gè)隊(duì)列的方式給多個(gè)組織提供服務(wù)

Capacity 可以理解為一個(gè)個(gè)資源隊(duì)列,這個(gè)資源隊(duì)列是用戶(hù)自己去分配的,隊(duì)列內(nèi)部有可以采用垂直劃分,這樣一個(gè)組織內(nèi)部的多個(gè)成員就可以共享這個(gè)隊(duì)列資源了,在一個(gè)隊(duì)列內(nèi)部,資源的調(diào)度采用的先進(jìn)先出策略

YARN 監(jiān)控管理以資源管理

資源隊(duì)列劃分

Capacity Scheduler調(diào)度器以隊(duì)列為單位劃分資源,通俗來(lái)說(shuō),就是一個(gè)個(gè)隊(duì)列有獨(dú)立的資源,隊(duì)列的結(jié)構(gòu)和資源是可以進(jìn)行配置的
在隊(duì)列內(nèi)部又可以繼續(xù)劃分出子隊(duì)列,子隊(duì)列在父隊(duì)列的基礎(chǔ)上再進(jìn)行資源的劃分。每個(gè)隊(duì)列里面的應(yīng)用以FIFO方式調(diào)度,每個(gè)隊(duì)列可以設(shè)定一定比例的資源最低保證和使用上限防止濫用,當(dāng)一個(gè)隊(duì)列的資源有剩余是,可暫時(shí)將剩余資源共享給其他隊(duì)列

YARN 監(jiān)控管理以資源管理

特性?xún)?yōu)勢(shì)

層次化的隊(duì)列設(shè)計(jì): 層次化的管理,可以更容易、更合理分配和限制資源的使用
容量保證:每個(gè)隊(duì)列上都可以設(shè)置一個(gè)資源的占比,保證每個(gè)隊(duì)列都不會(huì)占用整個(gè)集群的資源
安全:每隔隊(duì)列都有嚴(yán)格的訪(fǎng)問(wèn)控制,用戶(hù)只能向自己的隊(duì)列里面提交任務(wù),而不能修改或者訪(fǎng)問(wèn)其他隊(duì)列的任務(wù)
彈性分配:空閑的資源可以被分配給任何隊(duì)列,當(dāng)多個(gè)隊(duì)列出現(xiàn)爭(zhēng)用的時(shí)候,則會(huì)按照權(quán)重比例進(jìn)行平衡
多租戶(hù)租用:通過(guò)隊(duì)列的容量限制,多個(gè)用戶(hù)就可以共享一個(gè)集群,同時(shí)保證每個(gè)隊(duì)列分配到自己的容量,提高利用率
操作性:YARN支持動(dòng)態(tài)修改隊(duì)列容量、權(quán)限等分配,可以在運(yùn)行時(shí)直接修改
基于用戶(hù)/組的隊(duì)列隱射:允許用戶(hù)基于用戶(hù)或者組去映射一個(gè)作業(yè)到特定隊(duì)列

官方默認(rèn)配置

由于Hadoop默認(rèn)調(diào)度策略就是Capacity,因此官方自帶默認(rèn)配置capacity-scheduler.xml

YARN 監(jiān)控管理以資源管理

默認(rèn)配置中顯示全局只有一個(gè)隊(duì)列default,占集群整體容量100

相關(guān)參數(shù)的配置
開(kāi)啟調(diào)度器

如果是Hadoop 3.x的話(huà)默認(rèn)就是Capacity

YARN 監(jiān)控管理以資源管理

如果不是,那么就在yarn-site.xml中進(jìn)行開(kāi)啟

<property>
	<name>yarn.resourcemanager.scheduler.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
</property>
隊(duì)列配置

Capacity的核心就是隊(duì)列的分配和使用,修改capacity-scheduler.xml文件可以配置隊(duì)列,默認(rèn)有一個(gè)預(yù)定義的隊(duì)列root,所有的隊(duì)列都是他的子隊(duì)列。隊(duì)列的分配支持層次化配置,同級(jí)之間使用,來(lái)進(jìn)行分割
配置方法:yarn.scheduler.capacity.<queue-path>.queues,其中<queue-path>是可選選項(xiàng),這里舉個(gè)例子

YARN 監(jiān)控管理以資源管理

隊(duì)列屬性

隊(duì)列的資源容量占比(百分比)

YARN 監(jiān)控管理以資源管理

系統(tǒng)繁忙時(shí),每隔隊(duì)列都應(yīng)該得到設(shè)置的量的資源,當(dāng)系統(tǒng)是空閑的時(shí)候,該隊(duì)列的資源則可以被其他隊(duì)列使用。同一層所有的隊(duì)列加起來(lái)必須時(shí)100%

隊(duì)列資源的上限

YARN 監(jiān)控管理以資源管理

系統(tǒng)空閑時(shí),隊(duì)列可以使用其他空閑的資源,因此最多使用的資源量應(yīng)則是該參數(shù)控制。默認(rèn)是-1 表示禁用

每個(gè)資源占用最少資源
YARN 監(jiān)控管理以資源管理

比如,設(shè)置成25%,那么如果有兩個(gè)用戶(hù)提交任務(wù),那么每個(gè)資源不超過(guò)50%,如果三個(gè)資源提交任務(wù),那么每個(gè)任務(wù)資源不超過(guò)33%默認(rèn)時(shí)100,表示不做任何限制

每個(gè)用戶(hù)最多使用的隊(duì)列資源占比
YARN 監(jiān)控管理以資源管理

如果設(shè)置為50,那么每個(gè)用戶(hù)最多使用的資源就是50%

運(yùn)行和提交應(yīng)用限制、隊(duì)列管理等可以查看官方文檔:(

動(dòng)態(tài)修改更新配置

修改完成capacity-sheduler.xml之后,需要執(zhí)行yarn rmadmin -refreshQueues命令讓配置生效,
動(dòng)態(tài)更新生效的注意事項(xiàng):

  1. 隊(duì)列不能被刪除,只能是新增
  2. 更新隊(duì)列的配置需要是有效的值
  3. 同層級(jí)的隊(duì)列容量限制加起來(lái)需要等于100%

Fair Scheduler

Fair Scheduler叫做公平調(diào)度,提供了YARN應(yīng)用程序公平的共享大型集群中資源的另一種方式,使所有應(yīng)用在平均情況下隨著時(shí)間的六十可以獲取相等的資源份額。
Fair Scheduler設(shè)計(jì)目標(biāo)是為所有的應(yīng)用分配公平的資源(對(duì)公平的定義通過(guò)參數(shù)來(lái)設(shè)置)
公平調(diào)度可以在多個(gè)隊(duì)列間工作,允許資源共享和搶占

如何理解公平共享?
有兩個(gè)用戶(hù)A和B,每個(gè)用戶(hù)都有自己的隊(duì)列,A啟動(dòng)了一個(gè)作業(yè),由于沒(méi)有B的需求,他分配了集群所有可用的資源(此時(shí)A占用100%)
然后B在A運(yùn)行的時(shí)候 啟動(dòng)了一個(gè)作業(yè),經(jīng)過(guò)一段時(shí)間,AB各自作業(yè)都使用了一半的資源(A釋放了50%,現(xiàn)在還有50%,B接受了50%,現(xiàn)在也有50%)
現(xiàn)在B用戶(hù)在其他作業(yè)運(yùn)行的時(shí)候開(kāi)始了第二個(gè)作業(yè),他將于B的另一個(gè)作業(yè)共享資源,因此B的每個(gè)作業(yè)將擁有資源的四分之一,而A繼續(xù)擁有一半的資源(A 不變?nèi)晕?0%,B1釋放25% 變?yōu)榱?5%,B2接收了25% 成為了25% ,現(xiàn)在B整體仍然為50%)

資源是在用戶(hù)之間公平的共享的

YARN 監(jiān)控管理以資源管理

在默認(rèn)情況下,所有用戶(hù)共享一個(gè)名為default的隊(duì)列,可以在提交應(yīng)用時(shí)指定隊(duì)列,也可以通過(guò)配置根據(jù)請(qǐng)求中包含的用戶(hù)名來(lái)分配隊(duì)列,在每個(gè)隊(duì)列中,使用調(diào)度策略在運(yùn)行的應(yīng)用程序之間共享資源,默認(rèn)設(shè)置時(shí)基于內(nèi)存的公平共享

特性?xún)?yōu)勢(shì)

分層隊(duì)列:隊(duì)列可以按層次結(jié)構(gòu)排列以劃分資源,并可以配置權(quán)重以特定比例共享集群

基于用戶(hù)/組隊(duì)列映射:可以根據(jù)提交任務(wù)的用戶(hù)名或者組來(lái)分配隊(duì)列。如果任務(wù)隊(duì)列制定了一個(gè)隊(duì)列,則在該隊(duì)列中提交任務(wù)

資源搶占:根據(jù)應(yīng)用的配置,搶占和分配資源可以是友好的或者是強(qiáng)制的,默認(rèn)不啟用資源搶占

保證最小配額:可以設(shè)置隊(duì)列最小資源,允許將保證的最小配額給隊(duì)列,保證用戶(hù)可以啟動(dòng)任務(wù),當(dāng)隊(duì)列不能滿(mǎn)足最小資源時(shí),可以從其他隊(duì)列搶占,當(dāng)隊(duì)列資源使用不完時(shí),可以給其他隊(duì)列使用,這對(duì)于確保某些用戶(hù)、組或者生產(chǎn)應(yīng)用始終滿(mǎn)足資源

允許資源共享:當(dāng)一個(gè)應(yīng)用運(yùn)行時(shí),如果其他隊(duì)列沒(méi)有任務(wù)在執(zhí)行,則可以使用其他隊(duì)列的資源,當(dāng)其他隊(duì)列有應(yīng)用需要資源時(shí)再將占用的隊(duì)列釋放出來(lái),所有的應(yīng)用都從資源隊(duì)列中分配資源

默認(rèn)不限制某個(gè)隊(duì)列和用戶(hù)可以同時(shí)運(yùn)行的應(yīng)用的數(shù)量:可以配置限制隊(duì)列和用戶(hù)并行執(zhí)行的應(yīng)用數(shù)量,限制并行執(zhí)行應(yīng)用數(shù)量不會(huì)導(dǎo)致任務(wù)提交失敗,超出的應(yīng)用會(huì)在隊(duì)列中等待

開(kāi)啟與設(shè)置

開(kāi)啟|設(shè)置 Fair Scheduler通常涉及兩個(gè)配置文件:

yarn-site.xml
Scheduler調(diào)度器級(jí)別的有關(guān)選項(xiàng),比如開(kāi)啟、指定資源配置文件路徑、搶占功能

fair-scheduler.xml
資源分配文件,用來(lái)列舉存在的queues和他們相應(yīng)的weights和capacities,allocation 文件每隔10s加載一次,若沒(méi)有fair-scheduler.xml這個(gè)配置文件,調(diào)度器會(huì)在用戶(hù)第一個(gè)提交應(yīng)用時(shí)為其自動(dòng)創(chuàng)建一個(gè)隊(duì)列,隊(duì)列的名稱(chēng)就是用戶(hù)名,所有的應(yīng)用都會(huì)被分配到相應(yīng)的用戶(hù)隊(duì)列中。

<property>
    <name>yarm.resourcemanager.shceduler.class</name>
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
</property>
<property>
    <name>yarn.schedeler.fair.allocation.file</name>
    <!--如果不指定全路徑,表示在配置文件的路徑下,通常指定全路徑-->
    <value>fair-scheduler.xml</value>
</property>
調(diào)度器級(jí)別配置參數(shù)(yarn-site.xml)
核心參數(shù)
#fair 資源分配文件的路徑
yarn.scheduler.fair.allocation.file
#如果未指定隊(duì)列名,一用戶(hù)名作為隊(duì)列名 實(shí)現(xiàn)了根據(jù)用戶(hù)自動(dòng)分配隊(duì)列
yarn.shceduler.fair.user-as.defalut.queue
#是否使用preemption(優(yōu)先權(quán)、搶占) 否認(rèn)false
yarn.scheduler.fair.preemption
#搶占開(kāi)始后的利用率閾值
yarn.scheduler.fair.preemption.cluster-utilization-threshold
#是否根據(jù)大小分配額分給單個(gè)應(yīng)用程序,而不是給所有應(yīng)用程序分配均等的額分,而不管大小如何
yarn.scheduler.fair.sizebasedweight
資源分配文件配置參數(shù)(fair-scheduler.xml)

分配文件必須為xml格式
主要包括隊(duì)列的層次、調(diào)度策略(整體策略和每隔隊(duì)列內(nèi)策略)、隊(duì)列設(shè)置及使用限制、搶占功能配置、最大最小資源、資源限制等文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-447501.html

到了這里,關(guān)于YARN 監(jiān)控管理以資源管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 38、springboot為 spring mvc 提供的靜態(tài)資源管理,覆蓋和添加靜態(tài)資源目錄

    38、springboot為 spring mvc 提供的靜態(tài)資源管理,覆蓋和添加靜態(tài)資源目錄

    ▲ 默認(rèn)的四個(gè)靜態(tài)資源目錄: /META-INF/resources /resources /static /public ▲ ResourceProperties.java類(lèi)的源代碼,可看到CLASSPATH_RESOURCE_LOCATIONS常量的定義: CLASSPATH_RESOURCE_LOCATIONS = new String[]{“classpath:/META-INF/resources/”, “classpath:/resources/”, “classpath:/static/”, “classpath:/public/”}; 這意味

    2024年02月11日
    瀏覽(24)
  • Kubernetes學(xué)習(xí)筆記-計(jì)算資源管理(4)監(jiān)控pod的資源使用量20230219

    前面學(xué)了設(shè)置資源的requests和limits,這節(jié)課學(xué)習(xí)如何監(jiān)控資源,根據(jù)監(jiān)控資源使用情況,對(duì)requests和limits進(jìn)行合理配置。 kubelet包含一個(gè)agent,名為cAdvisor,它會(huì)收集整個(gè)節(jié)點(diǎn)上運(yùn)行的所有單獨(dú)容器的資源消耗情況,這些信息可以通過(guò)一個(gè)附加組件Heapster來(lái)集中統(tǒng)計(jì)整個(gè)集群的監(jiān)

    2024年02月05日
    瀏覽(15)
  • 【IPAM】Netbox —— 一個(gè)公認(rèn)好用的開(kāi)源網(wǎng)絡(luò)資源管理系統(tǒng)

    【IPAM】Netbox —— 一個(gè)公認(rèn)好用的開(kāi)源網(wǎng)絡(luò)資源管理系統(tǒng)

    NetBox 是一個(gè) IP 地址管理(IP address management,IPAM)和數(shù)據(jù)中心基礎(chǔ)設(shè)施管理(data center infrastructure management,DCIM)工具。最初起源于 DigitalOcean 的網(wǎng)絡(luò)工程團(tuán)隊(duì),專(zhuān)門(mén)用于滿(mǎn)足網(wǎng)絡(luò)和基礎(chǔ)設(shè)施工程師的需求。它是一個(gè)基礎(chǔ)設(shè)施資源建模 (IRM) 應(yīng)用程序,旨在支持網(wǎng)絡(luò)自動(dòng)化。N

    2024年02月08日
    瀏覽(19)
  • SwiftUI 實(shí)現(xiàn)一個(gè) iOS 上 Files App 兼容的文件資源管理器

    SwiftUI 實(shí)現(xiàn)一個(gè) iOS 上 Files App 兼容的文件資源管理器

    在 SwiftUI 中自己白手起家寫(xiě)一個(gè) iOS(或iPadOS)上迷你的文件資源管理器是有些難度滴,不過(guò)從 iOS 11 (2017年) ?官方引入自家的 Files App 之后,我們就可以借助它的魔力輕松完成這一個(gè)功能了。 如上所示,我們使用 SwiftUI 原生功能完成了一個(gè)小巧的 iOS Files App 文件管理器,

    2024年02月10日
    瀏覽(28)
  • 華為云命令行工具服務(wù)KooCLI助力一鍵管理云資源

    華為云命令行工具服務(wù)KooCLI助力一鍵管理云資源

    對(duì)于CLI即命令行工具,運(yùn)維同學(xué)可能并不陌生,它摒棄了對(duì)圖形化界面的需求,不再拘泥于可視化的頁(yè)面切換、按鈕點(diǎn)擊等操作,反而為用戶(hù)提供了一個(gè)便捷且高控制的解決方案,使用戶(hù)在日常的運(yùn)維工作中,用一行命令即可實(shí)現(xiàn)對(duì)資源的管理,效率提升顯而易見(jiàn)。 華為云命

    2024年02月16日
    瀏覽(22)
  • 【Kubernetes資源篇】StatefulSet無(wú)狀態(tài)服務(wù)管理入門(mén)實(shí)戰(zhàn)詳解

    【Kubernetes資源篇】StatefulSet無(wú)狀態(tài)服務(wù)管理入門(mén)實(shí)戰(zhàn)詳解

    官方中文參考文檔 1、StatefulSet Pod控制器特性 StatefulSet(簡(jiǎn)寫(xiě)sts)也是K8S集群中的一種Pod資源管理器,與deployment Pod控制器不同的是,StatefulSet用于管理無(wú)狀態(tài)程序,特性如下: 穩(wěn)定的網(wǎng)絡(luò)標(biāo)識(shí)符:管理的Pod都擁有一個(gè)穩(wěn)定的網(wǎng)絡(luò)標(biāo)識(shí)符??梢酝ㄟ^(guò)網(wǎng)絡(luò)標(biāo)識(shí)符進(jìn)行訪(fǎng)問(wèn)。 有序部署

    2024年02月13日
    瀏覽(22)
  • pod的requests、limits解讀、LimitRange資源配額、Qos服務(wù)質(zhì)量等級(jí)、資源配額管理 Resource Quotas

    環(huán)境: k8s-v1.22.17 docker-20.10.9 centos-7.9 CPU、GPU、Memory等都是計(jì)算資源,所謂計(jì)算資源,就是可計(jì)量的、能被申請(qǐng)的、能被分配使用的資源。 CPU在容器技術(shù)中屬于可壓縮資源,因此,pod對(duì)CPU的使用超過(guò)其cpu.limit限制一般不會(huì)導(dǎo)致容器被系統(tǒng)\\\"殺死\\\",而Memory屬于不可壓縮資源,當(dāng)容

    2023年04月27日
    瀏覽(14)
  • CNStack 虛擬化服務(wù):實(shí)現(xiàn)虛擬機(jī)和容器資源的共池管理

    CNStack 虛擬化服務(wù):實(shí)現(xiàn)虛擬機(jī)和容器資源的共池管理

    容器無(wú)疑已經(jīng)成為新的云計(jì)算基礎(chǔ)設(shè)施,企業(yè)私有云平臺(tái)的建設(shè)重心,正在從虛擬化的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)的建設(shè),轉(zhuǎn)向構(gòu)建以容器、微服務(wù)等為核心的云原生平臺(tái)。不過(guò)值得注意的是,企業(yè) IT 系統(tǒng)在進(jìn)行容器化改造的過(guò)程中,由于歷史遺留系統(tǒng)、技術(shù)債務(wù)、內(nèi)核依賴(lài)等原因,

    2024年01月25日
    瀏覽(62)
  • 云原生可觀察性的基本理念和方法論:可觀察性(Observability)是指系統(tǒng)內(nèi)部的運(yùn)行過(guò)程可以被檢測(cè)、分析、記錄和展示出來(lái),從而對(duì)系統(tǒng)行為、資源利用、健康狀況、安全情況等進(jìn)行監(jiān)控和管理

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 可觀察性(Observability)是指系統(tǒng)內(nèi)部的運(yùn)行過(guò)程可以被檢測(cè)、分析、記錄和展示出來(lái),從而對(duì)系統(tǒng)行為、資源利用、健康狀況、安全情況等進(jìn)行監(jiān)控和管理。可觀察性是云原生時(shí)代的一個(gè)重大發(fā)展方向,也是機(jī)器學(xué)習(xí)、微服務(wù)、容器技術(shù)、D

    2024年02月13日
    瀏覽(24)
  • K8S資源管理之計(jì)算資源管理

    K8S資源管理之計(jì)算資源管理

    ????????以CPU為例,下圖顯示了未設(shè)置Limits與設(shè)置了Requests和Limits的CPU使用率的區(qū)別 ???????盡管Requests和Limits只能被設(shè)置到容器上,但是設(shè)置了Pod級(jí)別的Requests和Limits能大大提高管理Pod的便利性和靈活性,因此在Kubernetes中提供了對(duì)Pod級(jí)別的Requests和Limits的配置。對(duì)于CP

    2024年04月15日
    瀏覽(23)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包