YARN基於IO資源的隔離排程例項教程

2021-12-30 07:56:38 字數 1170 閱讀 2412

眾所周知,目前yarn所支援的資源型別主要有2兩大類:記憶體和cpu.但是其實對於作業系統層面,還有乙個重要的資源是沒有被yarn考慮在內的,就是io資源,這裡的io資源你可以理解為比如說儲存空間的容量,但是它其實也可以有其它的含義。目前yarn這種不考慮io資源狀況的排程方式,會造成有些container會消耗大量的io資源,儘管可能他們只用了一點點的,記憶體和cpu資源。所以把io資源也作為yarn排程的乙個需求條件之一,是乙個大有好處並且有其使用場景的功能點。

剛剛在上文已經提過了,這裡的io資源並不僅僅是指磁碟容量空間,它還可以是一種別的能力,比如說iops(每秒io次數),頻寬等等。只是說,為了方便理解,我們暫且以磁碟空間作為乙個節點io資源的表示,磁碟空間越多,代表其所能處理的io次數也自然比較多。

這裡我們主要關注2點:

乙個是io資源的排程,這個排程關注的點主要是防止io資源的過度分配,導致過載的問題。 還有乙個是io隔離的問題。類似於cpu使用的隔離,我們同樣要保證一定的io資源使用隔離,防止不同使用者應用的相互干擾。

io資源的排程在yarn層面,我們想讓io也作為其中的乙個判斷條件,就要把它也作為乙個資源field,比如我們這裡用vdisk來表示需要的io資源,vdisk越大,表示需要的io資源越多,新的資源請求例項物件定義如下:

message resourceproto 就是說在resourcemanager在分配container的時候,還需要帶上vdisk資源的請求判斷,這裡每個節點的vdisk資源可以以2倍於實際磁碟數的標準來配置,邏輯上的含義即為io處理能力的一種抽象。

類似於cgroup下的cpu隔離,我們在系統io層面也可以做類似的程序間的隔離。這裡會用到cgroup下的blkio子系統,它可以用來做這方面的控制隔離。

blkio子系統的io隔離目前有2種方式:

第一種,基於權重值設定的cfq(完全公平排程演算法)。每個程序會按照規定比例權重允許執行相應的io運算元量。 第二種,io上限值的操作控制,這裡不僅僅可以是io的運算元,還可以是頻寬流量的限制。

這裡的io隔離,主要指以上提到的2點。而對於具體採用哪種方式,我們可以通過在yarn內設定不同的隔離類來使用。

不過目前基於io資源的排程方面,並沒有在社群完全被實現,不過這個功能的可用性和實施使用這塊還是有其實際的使用用途的,感興趣的同學可以前往yarn-2139.

[1]. support for disk as a resource in yarn

yarn資源隔離

yarn框架原理見 大資料處理離不開hadoop集群的部署和管理,對於本來硬體資源就不多的創業團隊來說,做好資源的共享和隔離是很有必要的,畢竟不像bat那麼豪,那麼怎麼樣能把有限的節點同時分享給多組使用者使用而且互不影響呢,我們來研究一下yarn多佇列做資源隔離 使用過第一代hadoop的同學應該比...

Yarn資源排程

由於yarn良好的相容性和擴充套件性,目前可以支援大部分資料引擎,所以了解yarn的資源排程原理很有必要,yarn主要由四個重要角色組成 yarn排程主要分為8個步驟如上圖所示 1.有yarnclient提交program資訊打拼resourcemanager,包括 應用 和應用需要的一切引數和環境...

Yarn資源排程

yarn的介紹 yarn是hadoop集群當中的資源管理系統模組,從hadoop2.0開始引入yarn模組,yarn可為各類計算框架提供資源的管理和排程,主要用於管理集群當中的資源 主要是伺服器的各種硬體資源,包括cpu,記憶體,磁碟,網路io等 以及排程執行在yarn上面的各種任務。yarn核心出...