Yarn快速系列入門 4 Yarn排程器

2021-10-05 11:50:00 字數 3268 閱讀 4871

本篇博文,博主為大家介紹yarn排程器。

二. yarn常用引數設定

yarn我們都知道主要是用於做資源排程,任務分配等功能的,那麼在hadoop當中,究竟使用什麼演算法來進行任務排程就需要我們關注了,hadoop支援好幾種任務的排程方式,不同的場景需要使用不同的任務排程器.

理想情況下,我們應用對yarn資源的請求應該立刻得到滿足,但現實情況資源往往是有限的,特別是在乙個很繁忙的集群,乙個應用資源的請求經常需要等待一段時間才能的到相應的資源。在yarn中,負責給應用分配資源的就是scheduler。其實排程本身就是乙個難題,很難找到乙個完美的策略可以解決所有的應用場景。為此,yarn提供了多種排程器和可配置的策略供我們選擇。

在yarn中有三種調速器可以選擇:fifo schedulercapacity schedulerfair scheduler

把應用按提交的順序排成乙個佇列,這是乙個先進先出佇列,在進行資源分配的時候,先給佇列中最頭上的應用進行分配資源,待最頭上的應用需求滿足後再給下乙個分配,以此類推。

fifo scheduler是最簡單也是最容易理解的排程器,也不需要任何配置,但它並不適用於共享集群。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞。在共享集群中,更適合採用capacity scheduler或fair scheduler,這兩個排程器都允許大任務和小任務在提交的同時獲得一定的系統資源。

capacity 排程器允許多個組織共享整個集群,每個組織可以獲得集群的一部分計算能力。通過為每個組織分配專門的佇列,然後再為每個佇列分配一定的集群資源,這樣整個集群就可以通過設定多個佇列的方式給多個組織提供服務了。除此之外,佇列內部又可以垂直劃分,這樣乙個組織內部的多個成員就可以共享這個佇列資源了,在乙個佇列內部,資源的排程是採用的是先進先出(fifo)策略。

容量排程器 capacity scheduler 最初是由 yahoo 最初開發設計使得 hadoop 應用能夠被多使用者使用,且最大化整個集群資源的吞吐量,現被 ibm biginsights 和 hortonworks hdp 所採用。

capacity scheduler 被設計為允許應用程式在乙個可預見的和簡單的方式共享集群資源,即"作業佇列"。capacity scheduler 是根據租戶的需要和要求把現有的資源分配給執行的應用程式。capacity scheduler 同時允許應用程式訪問還沒有被使用的資源,以確保佇列之間共享其它佇列被允許的使用資源。管理員可以控制每個佇列的容量,capacity scheduler 負責把作業提交到佇列中。

fair排程器的設計目標是為所有的應用分配公平的資源(對公平的定義可以通過引數來設定)。公平排程在也可以在多個佇列間工作。舉個例子,假設有兩個使用者a和b,他們分別擁有乙個佇列。當a啟動乙個job而b沒有任務時,a會獲得全部集群資源;當b啟動乙個job後,a的job會繼續執行,不過一會兒之後兩個任務會各自獲得一半的集群資源。如果此時b再啟動第二個job並且其它job還在執行,則它將會和b的第乙個job共享b這個佇列的資源,也就是b的兩個job會用於四分之一的集群資源,而a的job仍然用於集群一半的資源,結果就是資源最終在兩個使用者之間平等的共享。

公平排程器 fair scheduler 最初是由 facebook 開發設計使得 hadoop 應用能夠被多使用者公平地共享整個集群資源,現被 cloudera cdh 所採用。fair scheduler 不需要保留集群的資源,因為它會動態在所有正在執行的作業之間平衡資源。

yarn的排程一共分為三種:

第乙個引數:container分配最小記憶體

yarn.scheduler.minimum-allocation-mb1024 給應用程式container分配的最小記憶體

第二個引數:container分配最大記憶體

yarn.scheduler.maximum-allocation-mb8192 給應用程式container分配的最大記憶體

第三個引數:每個container的最小虛擬核心個數

yarn.scheduler.minimum-allocation-vcores1 每個container預設給分配的最小的虛擬核心個數

第四個引數:每個container的最大虛擬核心個數

yarn.scheduler.maximum-allocation-vcores32 每個container可以分配的最大的虛擬核心的個數

第五個引數:nodemanager可以分配的記憶體大小

yarn.nodemanager.resource.memory-mb8192 nodemanager可以分配的最大記憶體大小,預設8192mb

在我們瀏覽yarn的管理介面的時候會發現乙個問題

我們可以在yarn-site.xml當中修改以下兩個引數來改變預設值

定義每台機器的記憶體使用大小

yarn.nodemanager.resource.memory-mb8192

定義每台機器的虛擬核心使用大小

yarn.nodemanager.resource.cpu-vcores8

定義交換區空間可以使用的大小(交換區空間就是講一塊硬碟拿出來做記憶體使用)

這裡指定的是nodemanager的2.1倍

yarn.nodemanager.vmem-pmem-ratio 2.1

好了,本次的分享就到這裡~看完就

贊,養成

習慣!!

!\color

看完就贊,養

成習慣!

!!^ _ ^ ❤️ ❤️ ❤️

碼字不易,大家的支援就是我堅持下去的動力。點讚後不要忘了關注我哦!

Eclipse RCP 開發系列入門教程

不錯的eclipse rcp開發入門教程,收藏備用!使用eclipse rcp進行桌面程式開發 一 快速起步 使用eclipse rcp進行桌面程式開發 二 選單 工具欄和對話方塊 使用eclipse rcp進行桌面程式開發 三 檢視和透檢視 使用eclipse rcp進行桌面程式開發 四 在win...

快速入門系列

現在補上url路由的學習,至於蔣老師自建的mvc小引擎和相關案例就放在 提交後再實踐咯。通過asp.net的路由系統,可以完成請求url與物理檔案的分離,其優點是 靈活性 可讀性 seo優化。接下來通過乙個最簡單的路由例子進入這部分的學習,這是乙個蔣老師提供的webform路由的例子,回想起剛做as...

WPF快速入門系列 4 深入解析WPF繫結

一 引言 wpf繫結使得原本需要多行 實現的功能,現在只需要簡單的xaml 就可以完成之前多行後台 實現的功能。wpf繫結可以理解為一種關係,該關係告訴wpf從乙個源物件提取一些資訊,並將這些資訊來設定目標物件的屬性。目標屬性總是依賴屬性。然而,源物件可以是任何內容,可以是乙個wpf元素 或ado....