YARN資源調度器

来源:http://www.cnblogs.com/BYRans/archive/2016/06/07/5567650.html
-Advertisement-
Play Games

YARN資源調度器 轉載請註明出處: "http://www.cnblogs.com/BYRans/" 概述 集群資源是非常有限的,在多用戶、多任務環境下,需要有一個協調者,來保證在有限資源或業務約束下有序調度任務,YARN資源調度器就是這個協調者。 YARN調度器有多種實現,自帶的調度器為Capa ...


YARN資源調度器


轉載請註明出處:http://www.cnblogs.com/BYRans/

概述

集群資源是非常有限的,在多用戶、多任務環境下,需要有一個協調者,來保證在有限資源或業務約束下有序調度任務,YARN資源調度器就是這個協調者。

YARN調度器有多種實現,自帶的調度器為Capacity Scheduler和Fair Scheduler。YARN資源調度器均實現Resource Scheduler介面,是一個插拔式組件,用戶可以通過配置參數來使用不同的調度器,也可以自己按照介面規範編寫新的資源調度器。預設情況下,YARN採用的是Capacity Scheduler調度器。

Capacity Scheduler

Capacity Scheduler簡介

Capacity Scheduler(計算能力調度器)是由Yahoo貢獻的,主要是解決HADOOP-3421中提出的,在調度器上完成HOD(Hadoop On Demand)功能,剋服已有HOD的性能低效的缺點。它適合於多用戶共用集群的環境的調度器。在多用戶的情況下,達到最大化集群的吞吐和利用率的目的。

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

一個job可能使用不了整個隊列的資源。然而如果這個隊列中運行多個job,如果這個隊列的資源夠用,那麼就分配給這些job,如果這個隊列的資源不夠用了呢?其實Capacity調度器仍可能分配額外的資源給這個隊列,這就是彈性隊列(queue elasticity)的概念。

在正常的操作中,Capacity調度器不會強制釋放Container,當一個隊列資源不夠用時,這個隊列只能獲得其它隊列釋放後的Container資源。當然,我們可以為隊列設置一個最大資源使用量,以免這個隊列過多的占用空閑資源,導致其它隊列無法使用這些空閑資源,這就是彈性隊列需要權衡的地方。

capacitySheduler

Capacity Scheduler特點

  • 容量保證:每個隊列都分配了一部分容量,他們可以支配著部分資源。提交到特定隊列的應用程式,可以使用該隊列的資源。管理員可以配置每個隊列容量的最低保證和資源使用上限。
  • 安全性:每個隊列都有嚴格的ACL(控制訪問列表),它可以控制用戶提交應用程式到特定隊列上。同時保證用戶不能查看或修改其它用戶提交的應用程式,並且隊列管理員和集群系統管理員可以對其進行維護。
  • 靈活性:隊列的空閑資源可以分配各其它隊列使用。如果某隊列的資源分配未達到隊列資源使用上限,在其需要更多資源時,將分配其它隊列的空閑資源給該繁忙隊列。
  • 多用戶性:支持多用戶共用集群,一些列的綜合設置可以防止單個應用程式、用戶或隊列獨占隊里或集群的全部資源。
  • 可操作性:支持運行時配置和隊列停止。隊列的屬性(例如:資源容量分配、ACL等)可以在運行時由管理員以一種安全的方式更改,從而減少了對用戶的影響。同時提供給管理員和用戶一個界面,用於查看當前隊列資源的使用情況。管理員可以在集群運行時添加新隊列,可以在停止運行的隊列的同時保證隊列上的任務運行完成,而新的任務不能提交到該隊列上。註意現在不支持在運行時刪除隊列,如果需要刪除隊列,需要重啟集群。
  • 層級隊列:層級隊列可確保資源在該組織的子隊列之間被共用,從而提供更多的可控制性和預測性。
  • 基於資源的調度:支持資源密集型的應用程式,允許應用程式使用的資源量高於預設值,從而該調度器可以支持不同資源需求的應用程式。目前只支持記憶體資源的配置,通過配置可支持CPU資源。

Fair Scheduler

Fair Scheduler是由Facebook貢獻的,是Hadoop上一個可插拔式的調度器,允許YARN應用程式在一個大的集群上公平地共用資源。

公平調度是一種為應用程式分配資源的方法,多用戶的情況下,強調用戶公平地使用資源。預設情況下Fair Scheduler根據記憶體資源對應用程式進行公平調度,通過配置可以修改為根據記憶體和CPU兩種資源進行調度。當集群中只有一個應用程式運行時,那麼此應用程式占用這個集群資源。當其他的應用程式提交後,那些釋放的資源將會被分配給新的應用程式,所以每個應用程式最終都能獲取幾乎一樣多的資源。

在Fair Scheduler中,不需要預先占用一定的系統資源,Fair Scheduler會動態調整應用程式的資源分配。例如,當第一個大job提交時,只有這一個job在運行,此時它獲得了所有集群資源;當第二個小任務提交後,Fair調度器會分配一半資源給這個小任務,讓這兩個任務公平的共用集群資源。

需要註意的是,在下圖Fair Scheduler中,從第二個任務提交到獲得資源會有一定的延遲,因為它需要等待第一個任務釋放占用的Container。小任務執行完成之後也會釋放自己占用的資源,大任務又獲得了全部的系統資源。

FairScheduler

Fair Scheduler將應用程式支持以隊列的方式組織,這些隊列之間公平的共用資源。預設,所有的用戶共用一個隊列。如果應用程式在請求資源時指定了隊列,那麼請求將會被提交到指定的隊列中。也可以通過配置,根據用戶名稱來分配隊列。在每個隊列內部,應用程式基於記憶體公平共用或FIFO共用資源。

舉個例子,假設有兩個用戶A和B,他們分別擁有一個隊列。當A啟動一個job而B沒有任務時,A會獲得全部集群資源;當B啟動一個job後,A的job會繼續運行,不過一會兒之後兩個任務會各自獲得一半的集群資源。如果此時B再啟動第二個job並且其它job還在運行,則它將會和B的第一個job共用B這個隊列的資源,也就是B的兩個job會用於四分之一的集群資源,而A的job仍然用於集群一半的資源,結果就是資源最終在兩個用戶之間平等的共用。過程如下圖所示:

FairScheduler4Queue

Fair Scheduler允許為隊列分配擔最小的共用資源量,這樣可以保證某些用戶、groups或者應用程式總能獲取充足的資源。當一個隊列中有正在運行的應用程式時,它至少能夠獲取設置的最小資源,當隊列中無任務時,它的資源將會被拆分給其他運行中的任務。

Fair Scheudler在預設情況下允許所有的任務運行,但是這也可以通過配置文件來限制每個用戶下和每個隊列下運行的任務個數。處於限制時,新提交的任務不會提交失敗,而是在Scheduler queue中等待,直到先前的任務結束,再執行。

Fair Scheduler vs Capacity Scheduler

  • 相同點
    • 都支持多用戶多隊列,即:適用於多用戶共用集群的應用環境
    • 都支持層級隊列
    • 支持配置動態修改,更好的保證了集群的穩定運行。
    • 均支持資源共用,即某個隊列中的資源有剩餘時,可共用給其他缺資源的隊列
    • 單個隊列均支持優先順序和FIFO調度方式
  • 不同點
    Capacity Scheduler與Fair Scheduler最大的區別為調度策略的不同
    • Capacity Scheduler的調度策略是,可以先選擇資源利用率低的隊列,然後在隊列中通過FIFO或DRF進行調度。
    • Fair Scheduler的調度策略是,可以使用公平排序演算法選擇隊列,然後再隊列中通過Fair(預設)、FIFO或DRF的方式進行調度。



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在Activity中添加菜單 1.在res目錄下新建文件夾menu 右擊res,選擇new->Folder,Folder name寫為menu 2.在新建的menu目錄下新建一個xml文件 右擊menu,點擊new->Android XML File,在彈出的框中填入一個名字,比如main,點擊Fi ...
  • 本文介紹android中的資料庫的增刪改查 複習sql語法: * 增 insert into info (name,phone) values ('wuyudong','111') * 刪 delete from person where name = 'wuyudong' * 改 update p ...
  • Hi Dear:祝各位小盆友”六一快樂“,永遠無bug,永遠不加班~App store能快速審核完畢,小編為你奉上每周雞湯來啦~ 前兩周聚合數據的活動今天公佈獲獎名單啦,快去看看:http://www.code4app.com/thread-8177-1-1.htmlCode4App 活動陸續有來, ...
  • iOS 直播 獲取音頻(視頻)數據 ` ` ...
  • Hi all:準時奉上一周的iOS精華內容了,事半功倍的效果是不是棒棒噠?還有還有,還有童鞋在愁金錢不夠如何下載想要的代碼嗎?快來看攻略吧~http://www.code4app.com/thread-7591-1-1.html<ignore_js_op> 【一周精品源碼】 [iOS精品源碼] 開源 ...
  • 通過Android Studio 生成的Nagvition DrawerLayout Activity 自帶的佈局中的NagvitionView會覆蓋ToolBar直接通到statusBar。 但是自己想把NagvationView控制到TooBar下邊,從網上找到的答案是把ToolBar從Coor ...
  • hihi~小code有來準時奉上上周精品內容啦~大家都開始養成讀周報的習慣了沒有呀?! 【一周精品源碼】 仿[逗趣] iOS客戶端http://www.code4app.com/forum.php?mod=viewthread&tid=7841&highlight=douqu折線圖 包括不同的象限內 ...
  • 這幾天要求做一個伺服器的統計信息,主要針對錶和索引。下麵我就簡單分享幾個查詢數據表和索引統計信息的方法: 1.使用T-SQL 語句實現: 執行結果如圖 這種方法的優點如下: 運行速度快。 由於不訪問用戶表,不會影響性能,不加鎖。 靈活組合,也可以與其他語句聯合查詢金結果。 2. 使用系統存儲過程sp ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...