Yarn快速系列入門(4) | Yarn調度器

本篇博文,博主爲大家介紹Yarn調度器。
1


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

一. Yarn調度器(Scheduler)介紹

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

  在Yarn中有三種調速器可以選擇:FIFO SchedulerCapacity SchedulerFair Scheduler

1.1 FIFO Scheduler (隊列調度器)

  把應用按提交的順序排成一個隊列,這是一個先進先出隊列,在進行資源分配的時候,先給隊列中最頭上的應用進行分配資源,待最頭上的應用需求滿足後再給下一個分配,以此類推。
  FIFO Scheduler是最簡單也是最容易理解的調度器,也不需要任何配置,但它並不適用於共享集羣。大的應用可能會佔用所有集羣資源,這就導致其它應用被阻塞。在共享集羣中,更適合採用Capacity Scheduler或Fair Scheduler,這兩個調度器都允許大任務和小任務在提交的同時獲得一定的系統資源。

2

1.2 capacity scheduler(容量調度器,apache版本默認使用的調度器)

  Capacity 調度器允許多個組織共享整個集羣,每個組織可以獲得集羣的一部分計算能力。通過爲每個組織分配專門的隊列,然後再爲每個隊列分配一定的集羣資源,這樣整個集羣就可以通過設置多個隊列的方式給多個組織提供服務了。除此之外,隊列內部又可以垂直劃分,這樣一個組織內部的多個成員就可以共享這個隊列資源了,在一個隊列內部,資源的調度是採用的是先進先出(FIFO)策略。
3
4
  容量調度器 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仍然用於集羣一半的資源,結果就是資源最終在兩個用戶之間平等的共享。
5
  公平調度器 Fair Scheduler 最初是由 Facebook 開發設計使得 Hadoop 應用能夠被多用戶公平地共享整個集羣資源,現被 Cloudera CDH 所採用。Fair Scheduler 不需要保留集羣的資源,因爲它會動態在所有正在運行的作業之間平衡資源。

1.4 小結

Yarn的調度一共分爲三種:

  • FIFO Scheduler : 先進先出(先來後到的順序)
    6

  • Capacity Scheduler: 容量調度
    7

  • Fair Scheduler: 公平調度
    8
    其中:

  • 1、 先進先出:優先提交的,優先執行,後面提交的等待。(火車過隧道)。

  • 2、 容量調度:允許看創建多個任務對列,多個任務對列可以同時執行。但是一個隊列內部還是先進先出。CDH默認的調度器。

  • 3、公平調度:第一個程序在啓動時可以佔用其他對列的資源(100%佔用),當其他對列有任務提交時,佔用資源的對列需要將資源還給該任務。還資源的時候,效率比較慢。

  • 4、 使用哪種調度器取決於yarn-site.xml當中的yarn.resourcemanager.scheduler.class 這個屬性的配置

二. yarn常用參數設置

  1. 第一個參數:container分配最小內存
    yarn.scheduler.minimum-allocation-mb 1024 給應用程序container分配的最小內存
  2. 第二個參數:container分配最大內存
    yarn.scheduler.maximum-allocation-mb 8192 給應用程序container分配的最大內存
  3. 第三個參數:每個container的最小虛擬內核個數
    yarn.scheduler.minimum-allocation-vcores 1 每個container默認給分配的最小的虛擬內核個數
  4. 第四個參數:每個container的最大虛擬內核個數
    yarn.scheduler.maximum-allocation-vcores 32 每個container可以分配的最大的虛擬內核的個數
  5. 第五個參數:nodeManager可以分配的內存大小
    yarn.nodemanager.resource.memory-mb 8192 nodemanager可以分配的最大內存大小,默認8192Mb
    在我們瀏覽yarn的管理界面的時候會發現一個問題
    9
    我們可以在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}{看完就贊,養成習慣!!!}^ _ ^ ❤️ ❤️ ❤️
  碼字不易,大家的支持就是我堅持下去的動力。點贊後不要忘了關注我哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章