日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cgroup限制oracle,Yarn 使用 Cgroup 实现任务资源限制

發(fā)布時(shí)間:2025/3/21 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cgroup限制oracle,Yarn 使用 Cgroup 实现任务资源限制 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Linux CGroup 全稱是 Linux Control Group,是 Linux 內(nèi)核提供的一個(gè)用來限制進(jìn)程資源使用的功能,支持如 CPU, 內(nèi)存,磁盤 IO 等資源的使用限制。用戶可以使用 CGroup 對(duì)單個(gè)進(jìn)程或者一組進(jìn)程進(jìn)行精細(xì)化的資源限制,具體使用方式可以查看參考文檔。

目前, Yarn NodeManager 能夠使用 CGroup 來限制所有 containers 的資源使用,主要是 CPU 資源。如果不用 CGroup, 在 NM 端很難實(shí)現(xiàn)對(duì) container 的 CPU 使用進(jìn)行限制。默認(rèn)狀態(tài)下, container 的 CPU 使用是沒有限制的,container 申請(qǐng)了 1 vcore ,實(shí)際上能夠使用所有的 CPU 資源。所以如果 NM 上分配了一個(gè) vcore 申請(qǐng)較少實(shí)際上 CPU 使用極高的任務(wù),常常會(huì)導(dǎo)致節(jié)點(diǎn)上運(yùn)行的所有的任務(wù)都延時(shí)。

NM 運(yùn)行時(shí),可以通過 ContainersMonitor 線程監(jiān)控 container 內(nèi)存和 CPU 使用。對(duì)于 container 內(nèi)存使用, 一旦發(fā)現(xiàn)其超出申請(qǐng)內(nèi)存大小,就會(huì)立即發(fā)起 kill container 命令,回收 container 的資源。ContainersMonitor 雖然也支持 CPU 使用監(jiān)控,但是 CPU 資源不像內(nèi)存資源,其使用量的峰值是基本上可以確定的,在所有機(jī)器或者系統(tǒng)上都基本一致。CPU 受限于 CPU 硬件性能, 同一個(gè)任務(wù)在不同的機(jī)器上的 CPU 使用率可能差異巨大,所以不能發(fā)現(xiàn) container CPU 使用超過申請(qǐng)大小就 kill container 。同時(shí),由于 container 都是由子進(jìn)程的方式啟動(dòng)的, NM 也是很難通過直接控制 container 運(yùn)行和暫停來調(diào)整其 CPU 使用率。因此,在沒有 CGroup 功能的情況下, NM 是很難直接限制 container 的 CPU 使用的。

所以接下來我們主要介紹 Yarn 如何啟用 CGroup 來限制 containers CPU 資源占用。

啟用

NM 啟用 CGroup 功能主要需要在 yarn-site.xml 里設(shè)置以下配置:

1. 啟用 LCE :

在 Nodemanager 中, CGroup 功能集成在 LinuxContainerExecutor 中,所以要使用 CGroup 功能,必須設(shè)置 container-executor 為 LinuxContainerExecutor. 同時(shí)需要配置 NM 的 Unix Group,這個(gè)是可執(zhí)行的二進(jìn)制文件 container-executor 用來做安全驗(yàn)證的,需要與 container-executor.cfg 里面配置的一致。詳細(xì)配置可參見 Yarn ContainerExecutor 配置與使用。

yarn.nodemanager.container-executor.classorg.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutoryarn.nodemanager.linux-container-executor.grouphadoop

2. 啟用 CGroup :

LinuxContainerExecutor 并不會(huì)強(qiáng)制開啟 CGroup 功能, 如果想要開啟 CGroup 功能,必須設(shè)置 resource-handler-class 為 CGroupsLCEResourceHandler.

yarn.nodemanager.linux-container-executor.resources-handler.classorg.apache.hadoop.yarn.server.nodemanager.util.CgroupsLCEResourcesHandler

3. 配置 Yarn CGroup 目錄:

NM 通過 yarn.nodemanager.linux-container-executor.cgroups.hierarchy 配置所有 Yarn Containers 進(jìn)程放置的 CGroup 目錄。

如果系統(tǒng)的 CGroup 未掛載和配置,可以在系統(tǒng)上手動(dòng)掛載和配置和啟用 CGroup 功能,也可以通過設(shè)置 yarn.nodemanager.linux-container-executor.cgroups.mount 為 true,同時(shí)設(shè)置 CGroup 掛載路徑 yarn.nodemanager.linux-container-executor.cgroups.mount-path 來實(shí)現(xiàn) NM 自動(dòng)掛載 CGroup (不建議這樣用,問題挺多)。

如果系統(tǒng)的 CGroup 已經(jīng)掛載且配置完成,而且 Yarn 用戶有 CGroup cpu 子目錄的寫入權(quán)限,NM 會(huì)在 cpu 目錄下創(chuàng)建 hadoop-yarn 目錄 ,如果該目錄已經(jīng)存在,保證 yarn 用戶有寫入權(quán)限即可。

yarn.nodemanager.linux-container-executor.cgroups.hierarchy/hadoop-yarnyarn.nodemanager.linux-container-executor.cgroups.mountfalseyarn.nodemanager.linux-container-executor.cgroups.mount-path/sys/fs/cgroup

4. CPU 資源限制:

NM 主要使用兩個(gè)參數(shù)來限制 containers CPU 資源使用。

首先,使用 yarn.nodemanager.resource.percentage-physical-cpu-limit 來設(shè)置所有 containers 的總的 CPU 使用率占用總的 CPU 資源的百分比。比如設(shè)置為 60,則所有的 containers 的 CPU 使用總和在任何情況下都不會(huì)超過機(jī)器總體 CPU 資源的 60 %。

然后,使用 yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usage 設(shè)置是否對(duì) container 的 CPU 使用進(jìn)行嚴(yán)格限制。如果設(shè)置為 true ,即便 NM 的 CPU 資源比較空閑, containers CPU 使用率也不能超過限制,這種配置下,可以嚴(yán)格限制 CPU 使用,保證每個(gè) container 只能使用自己分配到的 CPU 資源。但是如果設(shè)置為 false ,container 可以在 NM 有空閑 CPU 資源時(shí),超額使用 CPU,這種模式下,可以保證 NM 總體 CPU 使用率比較高,提升集群的計(jì)算性能和吞吐量,所以建議使用非嚴(yán)格的限制方式(實(shí)際通過 CGroup 的 cpu share 功能實(shí)現(xiàn))。不論這個(gè)值怎么設(shè)置,所有 containers 總的 CPU 使用率都不會(huì)超過 cpu-limit 設(shè)置的值。

NM 會(huì)按照機(jī)器總的 CPU num* limit-percent 來計(jì)算 NM 總體可用的實(shí)際 CPU 資源,然后根據(jù) NM 配置的 Vcore 數(shù)量來計(jì)算每個(gè) Vcore 對(duì)應(yīng)的實(shí)際 CPU 資源,再乘以 container 申請(qǐng)的 Vcore 數(shù)量計(jì)算 container 的實(shí)際可用的 CPU 資源。這里需要注意的是,在計(jì)算總體可用的 CPU 核數(shù)時(shí),NM 默認(rèn)使用的實(shí)際的物理核數(shù),而一個(gè)物理核通常會(huì)對(duì)應(yīng)多個(gè)邏輯核(單核多線程),而且我們默認(rèn)的 CPU 核數(shù)通常都是邏輯核,所以我們需要設(shè)置 yarn.nodemanager.resource.count-logical-processors-as-cores 為 true 來指定使用邏輯核來計(jì)算 CPU 資源。

yarn.nodemanager.resource.percentage-physical-cpu-limit80yarn.nodemanager.linux-container-executor.cgroups.strict-resource-usagefalseyarn.nodemanager.resource.count-logical-processors-as-corestrue

注意事項(xiàng)

Linux 內(nèi)核版本 3.10.0-327.el7.x86_64 上 Yarn 啟用 CGroup 功能后,會(huì)觸發(fā)內(nèi)核 BUG,導(dǎo)致內(nèi)核卡死,重啟,NM 掛掉,所有運(yùn)行的任務(wù)失敗。所以如果需要啟用 CGroup 功能,絕對(duì)不能使用 3.10.0-327.el7.x86_64 版本內(nèi)核。親測升級(jí)內(nèi)核版本可解決該問題。

本文轉(zhuǎn)自:https://smarthanwang.github.io/2019/10/20/yarn-cgroup-usage/

作者:smarthan

《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀

總結(jié)

以上是生活随笔為你收集整理的cgroup限制oracle,Yarn 使用 Cgroup 实现任务资源限制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。