elasticsearch入門系列">elasticsearch入門系列
967
2022-05-29
本篇博文,博主為大家介紹YARN調度器。
目錄
一. Yarn調度器(Scheduler)介紹
1.1 FIFO Scheduler (隊列調度器)
1.2 capacity scheduler(容量調度器,apache版本默認使用的調度器)
1.3 Fair Scheduler(公平調度器,CDH版本的hadoop默認使用的調度器)
1.4 小結
二. yarn常用參數設置
yarn我們都知道主要是用于做資源調度,任務分配等功能的,那么在hadoop當中,究竟使用什么算法來進行任務調度就需要我們關注了,hadoop支持好幾種任務的調度方式,不同的場景需要使用不同的任務調度器.
一. Yarn調度器(Scheduler)介紹
理想情況下,我們應用對Yarn資源的請求應該立刻得到滿足,但現實情況資源往往是有限的,特別是在一個很繁忙的集群,一個應用資源的請求經常需要等待一段時間才能的到相應的資源。在Yarn中,負責給應用分配資源的就是Scheduler。其實調度本身就是一個難題,很難找到一個完美的策略可以解決所有的應用場景。為此,Yarn提供了多種調度器和可配置的策略供我們選擇。
在Yarn中有三種調速器可以選擇:FIFO Scheduler ,Capacity Scheduler,Fair Scheduler。
1.1 FIFO Scheduler (隊列調度器)
把應用按提交的順序排成一個隊列,這是一個先進先出隊列,在進行資源分配的時候,先給隊列中最頭上的應用進行分配資源,待最頭上的應用需求滿足后再給下一個分配,以此類推。
FIFO Scheduler是最簡單也是最容易理解的調度器,也不需要任何配置,但它并不適用于共享集群。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞。在共享集群中,更適合采用Capacity Scheduler或Fair Scheduler,這兩個調度器都允許大任務和小任務在提交的同時獲得一定的系統資源。
1.2 capacity scheduler(容量調度器,apache版本默認使用的調度器)
Capacity 調度器允許多個組織共享整個集群,每個組織可以獲得集群的一部分計算能力。通過為每個組織分配專門的隊列,然后再為每個隊列分配一定的集群資源,這樣整個集群就可以通過設置多個隊列的方式給多個組織提供服務了。除此之外,隊列內部又可以垂直劃分,這樣一個組織內部的多個成員就可以共享這個隊列資源了,在一個隊列內部,資源的調度是采用的是先進先出(FIFO)策略。
容量調度器 Capacity Scheduler 最初是由 Yahoo 最初開發設計使得 Hadoop 應用能夠被多用戶使用,且最大化整個集群資源的吞吐量,現被 IBM BigInsights 和 Hortonworks HDP 所采用。
Capacity Scheduler 被設計為允許應用程序在一個可預見的和簡單的方式共享集群資源,即"作業隊列"。Capacity Scheduler 是根據租戶的需要和要求把現有的資源分配給運行的應用程序。Capacity Scheduler 同時允許應用程序訪問還沒有被使用的資源,以確保隊列之間共享其它隊列被允許的使用資源。管理員可以控制每個隊列的容量,Capacity Scheduler 負責把作業提交到隊列中。
1.3 Fair Scheduler(公平調度器,CDH版本的hadoop默認使用的調度器)
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 不需要保留集群的資源,因為它會動態在所有正在運行的作業之間平衡資源。
1.4 小結
Yarn的調度一共分為三種:
FIFO Scheduler : 先進先出(先來后到的順序)
Capacity Scheduler: 容量調度
Fair Scheduler: 公平調度
其中:
1、 先進先出:優先提交的,優先執行,后面提交的等待。(火車過隧道)。
2、 容量調度:允許看創建多個任務對列,多個任務對列可以同時執行。但是一個隊列內部還是先進先出。CDH默認的調度器。
3、公平調度:第一個程序在啟動時可以占用其他對列的資源(100%占用),當其他對列有任務提交時,占用資源的對列需要將資源還給該任務。還資源的時候,效率比較慢。
4、 使用哪種調度器取決于yarn-site.xml當中的yarn.resourcemanager.scheduler.class 這個屬性的配置
二. yarn常用參數設置
第一個參數:container分配最小內存
yarn.scheduler.minimum-allocation-mb 1024 給應用程序container分配的最小內存
第二個參數:container分配最大內存
yarn.scheduler.maximum-allocation-mb 8192 給應用程序container分配的最大內存
第三個參數:每個container的最小虛擬內核個數
yarn.scheduler.minimum-allocation-vcores 1 每個container默認給分配的最小的虛擬內核個數
第四個參數:每個container的最大虛擬內核個數
yarn.scheduler.maximum-allocation-vcores 32 每個container可以分配的最大的虛擬內核的個數
第五個參數:nodeManager可以分配的內存大小
yarn.nodemanager.resource.memory-mb 8192 nodemanager可以分配的最大內存大小,默認8192Mb
在我們瀏覽yarn的管理界面的時候會發現一個問題
我們可以在yarn-site.xml當中修改以下兩個參數來改變默認值
定義每臺機器的內存使用大小
yarn.nodemanager.resource.memory-mb 8192
定義每臺機器的虛擬內核使用大小
yarn.nodemanager.resource.cpu-vcores 8
定義交換區空間可以使用的大小(交換區空間就是講一塊硬盤拿出來做內存使用)
這里指定的是nodemanager的2.1倍
yarn.nodemanager.vmem-pmem-ratio 2.1
好了,本次的分享就到這里~
看 完 就 贊 , 養 成 習 慣 ! ! ! \color{#FF0000}{看完就贊,養成習慣!!!} 看完就贊,養成習慣!!!^ _ ^ ?? ?? ??
碼字不易,大家的支持就是我堅持下去的動力。后不要忘了關注我哦!
Hadoop Yarn
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。