**
一、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上的,因此造成了以下的...