yarn簡單介紹

2021-09-20 10:20:34 字數 3440 閱讀 9868

** 

一、yarn通俗介紹

apache hadoop yarn (yet another resource negotiator,另一種資源協調者)是一

種新的 hadoop 資源管理器,它是乙個通用資源管理系統和排程平台,可為上層應用提供統

一的資源管理和排程,它的引入為集群在利用率、資源統一管理和資料共享等方面帶來了巨

大好處。

可以把 yarn 理解為相當於乙個分布式的作業系統平台,而 mapreduce 等運算程式則相

  yarn 並不清楚使用者提交的程式的執行機制

  yarn 只提供運算資源的排程(使用者程式向 yarn 申請資源,yarn 就負責分配資源)

  yarn 中的主管角色叫 resourcemanager

  yarn 中具體提供運算資源的角色叫 nodemanager

  yarn與執行的使用者程式完全解耦,意味著yarn上可以執行各種型別的分布式運算程式,

比如 mapreduce、storm,spark,tez ……

  spark、storm 等運算框架都可以整合在 yarn 上執行,只要他們各自的框架中有符合

yarn 規範的資源請求機制即可

  yarn 成為乙個通用的資源排程平台.企業中以前存在的各種運算集群都可以整合在一

個物理集群上,提高資源利用率,方便資料共享12

3456

78910

1112

1314

1516

17二、yarn基本架構

步驟6 nodemanager為任務設定好執行環境(包括環境變數、jar包、二進位制程式等)後,將任務啟動命令寫到乙個指令碼中,並通過執行該指令碼啟動任務。

在 yarn 中有三種排程器可以選擇:fifo scheduler ,capacity scheduler,fair

scheduler。12

3456

78三種排程器:

1.fifo scheduler

fifo scheduler 把應用按提交的順序排成乙個佇列,這是乙個 先進先出佇列,在進行

資源分配的時候,先給佇列中最頭上的應用進行分配資源,待最頭上的應用需求滿足後再給

下乙個分配,以此類推。12

3fifo scheduler 是最簡單也是最容易理解的排程器,也不需要任何配置,但它並不適

用於共享集群。大的應用可能會占用所有集群資源,這就導致其它應用被阻塞。在共享集群

中,更適合採用 capacity scheduler 或 fair scheduler,這兩個排程器都允許大任務和小

任務在提交的同時獲得一定的系統資源。12

342.capacity scheduler

capacity 排程器允許多個組織共享整個集群,每個組織可以獲得集群的一部分計算能

力。通過為每個組織分配專門的佇列,然後再為每個佇列分配一定的集群資源,這樣整個集

群就可以通過設定多個佇列的方式給多個組織提供服務了。除此之外,佇列內部又可以垂直

劃分,這樣乙個組織內部的多個成員就可以共享這個佇列資源了,在乙個佇列內部,資源的

排程是採用的是先進先出(fifo)策略。12

3453.fair scheduler

在 fair 排程器中,我們不需要預先占用一定的系統資源,fair 排程器會為所有執行的

job 動態的調整系統資源。如下圖所示,當第乙個大 job 提交時,只有這乙個 job 在執行,

此時它獲得了所有集群資源;當第二個小任務提交後,fair 排程器會分配一半資源給這個

小任務,讓這兩個任務公平的共享集群資源。

需要注意的是,在下圖 fair 排程器中,從第二個任務提交到獲得資源會有一定的延

遲,因為它需要等待第乙個任務釋放占用的 container。小任務執行完成之後也會釋放自

己占用的資源,大任務又獲得了全部的系統資源。最終效果就是 fair 排程器即得到了高的

資源利用率又能保證小任務及時完成。12

3456

789排程器的使用是通過 yarn-site.xml 配置檔案中的

yarn.resourcemanager.scheduler.class 引數進行配置的, 預設採用 capacity

scheduler 排程器。12

3假設我們有如下層次的佇列: 

下面是乙個簡單的 capacity 排程器的配置檔案,檔名為 capacity-scheduler.xml。

在這個配置中,在 root 佇列下面定義了兩個子佇列 prod 和 dev,分別佔 40%和 60%的容量。

需要注意,乙個佇列的配置是通過屬性 yarn.sheduler.capacity..指定的,代表的是佇列的繼承樹,如 root.prod 佇列,

一般指 capacity 和 maximum-capacity。12

345yarn.scheduler.capacity.root.queues

prod,dev

yarn.scheduler.capacity.root.dev.queues

mapreduce,spark

yarn.scheduler.capacity.root.prod.capacity

40yarn.scheduler.capacity.root.dev.capacity

60yarn.scheduler.capacity.root.dev.maximum-capacity

75yarn.scheduler.capacity.root.dev.mapreduce.capacity

50yarn.scheduler.capacity.root.dev.spark.capacity501

2345

6789

1011

1213

1415

1617

1819

2021

2223

2425

2627

2829

30dev 佇列又被分成了 mapreduce 和 spark 兩個相同容量的子佇列。dev

的 maximum-capacity 屬性被設定成了 75%,所以即使 prod 佇列完全空閒 dev 也不會占用全

部集群資源,也就是說,prod 佇列仍有 25%的可用資源用來應急。我們注意到,mapreduce

和 spark 兩個佇列沒有設定 maximum-capacity 屬性,也就是說 mapreduce 或 spark 佇列中

的 job 可能會用到整個 dev 佇列的所有資源(最多為集群的 75%)。而類似的,prod 由於沒

有設定 maximum-capacity 屬性,它有可能會占用集群全部資源。

關於佇列的設定,這取決於我們具體的應用。比如,在 mapreduce 中,我們可以通過

mapreduce.job.queuename 屬性指定要用的佇列。如果佇列不存在,我們在提交任務時就

會收到錯誤。如果我們沒有定義任何佇列,所有的應用將會放在乙個 default 佇列中。

Yarn(一)Yarn通俗介紹

apache hadoop yarn yet another resource negotiator,另一種資源協調者 是一種新的 hadoop 資源管理器,它是乙個通用資源管理系統和排程平台,可為上層應用提供統一的資源管理和排程,它的引入為集群在利用率 資源統一管理和資料共享等方面帶來了巨大好處。...

YARN基本框架介紹

在之前的部落格 yarn與mrv1的對比 中介紹了yarn對hadoop 1.0的完善。本文將重點介紹下yarn各個模組的作用與yarn執行流程。負責與rm排程器協商以獲取資源 用container表示 將得到的任務進一步分配給內部的任務 資源的二次分配 與nm通訊以啟動 停止任務。監控所有任務執行...

yarn入門學習介紹

本篇將從以下幾個方面闡述yarn 1 產生的原因 yarn的出現是由於hadoop1.0版本中的 jobtracker負載過重,導致計算上限極小,無法滿足大量資料工作的需求。首先來看一看hadoop1.0的架構圖,以便整體了解 此時mapreduce計算模型是直接執行在hdfs上的,因此造成了以下的...