一 產(chǎn)生背景
運(yùn)維成本:
如果采用“一個(gè)框架一個(gè)集群”的模式,則可能需要多個(gè)管理員管理這些集群胃惜;進(jìn)而增加運(yùn)維成本,而共享模式通常需要少數(shù)管理員即可完成多個(gè)框架的統(tǒng)一管理森渐。
數(shù)據(jù)共享:
隨著數(shù)據(jù)量的暴增,跨集群間的數(shù)據(jù)移動(dòng)不僅需花費(fèi)更長(zhǎng)的時(shí)間,且硬件成本也會(huì)大大增加,而共享集群模式可讓多種框架共享數(shù)據(jù)和硬件資源,將大大減小數(shù)據(jù)移動(dòng)帶來(lái)的成本捉腥。
MR v1版本的缺陷:
擴(kuò)展性受限制换况,單點(diǎn)故障琅摩,不支持其他分布式計(jì)算框架.
二 YARN 的由來(lái)
Yet Another Resource Negotiagor:又一個(gè)計(jì)算框架
Hadoop2.x 中發(fā)布
它是統(tǒng)一的集群資源管理框架此迅,用來(lái)負(fù)責(zé)集群的管理和調(diào)度.
三 YARN基本框架
-
Resource Manager
整個(gè)集群只有一個(gè)汽畴,負(fù)責(zé)集群資源的統(tǒng)一管理和調(diào)度:
詳細(xì)功能:- 處理客戶(hù)端請(qǐng)求
- 啟動(dòng)/監(jiān)控ApplicationMaster
- 監(jiān)控NodeManager
- 資源分配與調(diào)度
-
Node Manager
每個(gè)節(jié)點(diǎn)只有一個(gè),負(fù)責(zé)資源的管理和使用
詳細(xì)功能:- 單個(gè)節(jié)點(diǎn)上的資源管理和任務(wù)管理
- 處理來(lái)自ResourceManager的命令
- 處理來(lái)自ApplicationMaster的命令
-
ApplicationMaster
每個(gè)應(yīng)用程序只有一個(gè)耸序,負(fù)責(zé)應(yīng)用程序的管理和任務(wù)調(diào)度
詳細(xì)功能:- 數(shù)據(jù)切分
- 為應(yīng)用程序申請(qǐng)資源忍些,進(jìn)一步分配給內(nèi)部任務(wù)
- 任務(wù)監(jiān)控和容錯(cuò)
-
Container
對(duì)任務(wù)運(yùn)行環(huán)境的抽象
描述一系列信息:- 任務(wù)運(yùn)行資源(節(jié)點(diǎn),cpu坎怪,內(nèi)存)
- 任務(wù)啟動(dòng)命令
- 任務(wù)運(yùn)行環(huán)境
四. YARN運(yùn)行過(guò)程剖析
-
YARN 容錯(cuò)性
- Resource Manager
基于zookeeper實(shí)現(xiàn)HA(HADOOP2.6+) - Node Manager
失敗后罢坝,RM將失敗以后任務(wù)告訴對(duì)于AM
AM 決定如何處理失敗任務(wù). - Application Master
失敗后,由RM負(fù)責(zé)重啟搅窿。
AM需處理內(nèi)部任務(wù)的容錯(cuò)問(wèn)題嘁酿。
hadoop已經(jīng)實(shí)現(xiàn)了內(nèi)部容錯(cuò),spark的話(huà)就需要重頭開(kāi)始跑.
RMAppMaster會(huì)保存已經(jīng)運(yùn)行完成的task,重啟后無(wú)需重新運(yùn)行.
- Resource Manager
-
YARN 調(diào)度框架
- 雙層調(diào)度框架
RM將資源分配給AM
AM將資源進(jìn)一步分配給Task - 基于資源預(yù)留的調(diào)度策略
資源不夠時(shí)男应,會(huì)為T(mén)ask預(yù)留闹司,直到資源充足。
- 雙層調(diào)度框架
-
YARN資源調(diào)度器
- 多類(lèi)型資源調(diào)度
支持cpu殉了,內(nèi)存調(diào)度 - 提供多種資源調(diào)度器
FIFO
Fair Scheduler
Capacity Scheduler - 多租戶(hù)資源調(diào)度器
支持資源按照比例分配
支持層級(jí)隊(duì)列劃分方式
支持資源搶占
- 多類(lèi)型資源調(diào)度
-
YARN 資源隔離方案
- 支持內(nèi)存和cpu兩種資源隔離
內(nèi)存是一種“決定生死”的資源
CPU是一種“影響快慢”的資源 - 內(nèi)存隔離
基于線(xiàn)程監(jiān)控方案
基于Cgroups方案 - CPU隔離
默認(rèn)不對(duì)cpu資源進(jìn)行隔離
基于Cgroups隔離方案
- 支持內(nèi)存和cpu兩種資源隔離
五. YARN資源調(diào)度過(guò)程
-
調(diào)度方法:
-
FIFO
- 將所有應(yīng)用程序放到一個(gè)隊(duì)列中
- 隊(duì)列前面的程序優(yōu)先獲得資源
- 局限性明顯
資源利用率不高开仰,無(wú)法交叉運(yùn)行作業(yè)
不夠靈活,比如緊急作業(yè)無(wú)法插隊(duì)
-
多隊(duì)列組織方式
- 將所有應(yīng)用程序放到多個(gè)隊(duì)列
- 每個(gè)隊(duì)列可單獨(dú)實(shí)現(xiàn)調(diào)度策略
- 每個(gè)隊(duì)列對(duì)應(yīng)一定比如的調(diào)度資源
優(yōu)勢(shì)明顯:- 按隊(duì)列組織資源和用戶(hù),符合生產(chǎn)需求
- 不同隊(duì)列的資源分配策略不同众弓,更加靈活
兩種多隊(duì)列調(diào)度器: Fair恩溅, Capacity
-
Capacity Scheduler
- 由Yahoo開(kāi)源,共享資源調(diào)度器
- 每個(gè)隊(duì)列內(nèi)部采用FIFO調(diào)度策略
- 每個(gè)隊(duì)列分配一定比例資源
- 可限制每個(gè)用戶(hù)的資源使用量
-
- Fair Scheduler
- 由Facebook開(kāi)源共享集群調(diào)度器
- 以隊(duì)列方式組織作業(yè)
- 基于最小資源量與公平共享量進(jìn)行調(diào)度
- 作業(yè)優(yōu)先級(jí)越高谓娃,分配的資源越多
-
基于標(biāo)簽的調(diào)度機(jī)制
- YARN 基于標(biāo)簽的調(diào)度
- 基于hadoop2.6.0開(kāi)始脚乡,提供基于標(biāo)簽的調(diào)度策略
- 常用于異構(gòu)集群(操作系統(tǒng)不同,安裝的版本不同滨达,硬件不同)
- 思路
- 將一些高配機(jī)器打上highmemory/highdisk標(biāo)簽奶稠,并結(jié)合隊(duì)列配置(比如reporting隊(duì)列) 使之生效。
- 將所有mapreduce程序提交到reporing隊(duì)列中
hadoop jar ***.jar -Dmapreduce.job.queuename=reporing...
- YARN 基于標(biāo)簽的調(diào)度
基于標(biāo)簽調(diào)度機(jī)制:原理
六. 運(yùn)行在YARN上的計(jì)算框架
-
運(yùn)行在YARN上的計(jì)算框架
- 離線(xiàn)計(jì)算框架 MapReduce
- DAG計(jì)算框架: Tez
- 流式計(jì)算框架: Storm
- 內(nèi)存計(jì)算框架: Spark
MapReduce on YARN
- DAG 計(jì)算框架 Tez
- 流式計(jì)算框架 Storm
- Spark on YARN
七. 日志分析系統(tǒng)架構(gòu)
-
資源管理模塊
- 資源劃分
啟用 Capacity Scheduler
劃分多個(gè)隊(duì)列捡遍,每個(gè)隊(duì)列設(shè)置一定比例資源锌订,每個(gè)隊(duì)列交由一類(lèi)應(yīng)用 - 資源隔離
啟用cgroup資源隔離(linux 內(nèi)核版本3.19上) - 異構(gòu)集群
根據(jù)機(jī)器硬件資源不同,打上不同類(lèi)型的標(biāo)簽
不同隊(duì)列關(guān)聯(lián)不同的機(jī)器(標(biāo)簽)
- 資源劃分
資源劃分
-
資源劃分方法
資源隔離配置方法
- 節(jié)點(diǎn)標(biāo)簽
- 標(biāo)簽調(diào)度画株,啟用步驟
- Yarn 配置