Yarn的原理與資源排程

2021-07-14 07:04:23 字數 3106 閱讀 8535

本節,主要介紹yarn的基本原理以及資源排程。在hadoop1.0不能滿足多系統整合的背景下孕育了yarn的產生。由於多分布式系統可以很好的整合,因此yarn的出現使得整個集群的運維成本大大降低。同時,yarn可以很好的利用集群資源,避免資源的浪費。除此之外,yarn的出現實現了集群的資料共享問題。不同的分布式計算框架可以實現資料的共享,比如hadoop的mapreduce輸出可以作為storm的輸入。

yarn支援多型別資源排程,其基於drf演算法實現(**:「dominant resource fairness: fair allocation of multiple resource types」)。而且,其支援多種資源排程器fifo、fair scheduler以及capacity scheduler 。最後,yarn支援多租戶資源排程器包括支援資源按比例分配、層級佇列劃分方式以及支援資源搶占 。 

yarn支援記憶體和cpu兩種資源隔離。記憶體是一種「決定生死」的資源。cpu是一種「影響快慢」的資源。其中,記憶體隔離包括基於執行緒監控的方案和基於cgroups的方案。而cpu隔離包括預設不對cpu資源進行隔離和基於cgroups的方案。

yarn支援的排程語義包括請求某個特定節點/機架上的特定資源量、將某些節點加入(或移除)黑名單,不再為自己分配這些節點上的資 源以及請求歸還某些資源。不支援的語義包括請求任意節點/機架上的特定資源量、請求一組或幾組符合某種特質的資源、超細粒度資源以及動態調整container資源 。

yarn是通用的統一資源管理系統,同時首席執行官應用程式和短應用程式 。長應用程式通常情況下,指永不停止執行的程式 ervice、http server等。短應用程式指短時間(秒級、分鐘級、小時級)內會執行結束的程式 mr job、spark job等 。如下圖所示,yarn使得集群中各種任務的執行成為可能。

mapreduce的執行過程如上圖。首先,clien

t向resourcemanager發出任務請求。

2、dag計算框架tez 

多個作業之間存在資料依賴關係,並形成乙個依賴關係有向 圖( directed acyclic graph ),該圖的計算稱為「dag計算」。apache tez是基於yarn的dag計算框架其執行在yarn之上,充分利用yarn的資源管理和容錯等功能;tez提供了豐富的資料流(dataflow)api、擴充套件性良好的「input-processor-output」執行時模型以及動態生成物理資料流關係。 

如上圖所示,在mapreduce情況下,如果執行wordcount和topk需要啟動兩個mapreduce job。但是,如果用tez只需要啟動乙個任務。第乙個mapreduce實現wordcount,緊接著執行乙個reduce作業實現topk。tez執行的作業類似於樹狀拓撲結構。tez的工作原理類似於上述hadoop的執行流程,如下圖所示。

(1).作業提交到ampoolserver服務上; 

tez 應用場景

1、直接編寫應用程式 

(1).tez提供了一套通用程式設計介面;

(2).適合編寫有依賴關係的作業。

2、優化pig、hive等引擎 

(1).下一代hive:stinger ;

(2).好處1:避免查詢語句轉換成過多的mapreduce作業後產 生大量不必要的網路和磁碟io;

(3).好處2:更加智慧型的任務處理引擎。 

3、流式計算框架storm 

流式(streaming)計算,是指被處理的資料像流水一樣不斷流入系統,而系統需要針對每條資料進行實時處理和計算, 並永不停止(直到使用者顯式殺死程序);傳統做法:由訊息佇列和訊息處理者組成的實時處理網路進行實時計算其缺乏自動化、健壯性並且伸縮性差 。因此,storm孕育而生。

如上圖所示,nimbus相當於resourcemanager。supervisor相當於nodemanager。nimbus不直接排程supervisor,而是通過zookeeper排程。task中,spout和blot相當於map/reduce。整個作業是一種拓撲結構。執行以作業流的方式執行。執行在yarn上的storm執行機制類似於hadoop,如下圖所示。

4、記憶體計算框架spark 

spark克服了mapreduce在迭代式計算和互動式計算方面的不足,引入rdd(resilient distributed datasets)資料表示模型。rdd是乙個有容錯機制,可以被並行操作的資料集合,能夠被快取到記憶體或磁碟上。

spark如上圖所示,可以執行多個stage,最後不同的stage的結果可以合併進行下一步的計算。

spark在yarn上的執行機制同樣類似於hadoop。

上圖為spark的生態系統。shark是spark的類sql流語句。sparkstreaming是spark的流式分布式計算框架。graphx是spark的圖計算庫mlbase是spark的機器學習庫。

上述,我們介紹了yarn的原理與排程機制。接下來,將逐個講解各部分。

Yarn的原理與資源排程

本節,主要介紹yarn的基本原理以及資源排程。在hadoop1.0不能滿足多系統整合的背景下孕育了yarn的產生。由於多分布式系統可以很好的整合,因此yarn的出現使得整個集群的運維成本大大降低。同時,yarn可以很好的利用集群資源,避免資源的浪費。除此之外,yarn的出現實現了集群的資料共享問題。...

Yarn資源排程

由於yarn良好的相容性和擴充套件性,目前可以支援大部分資料引擎,所以了解yarn的資源排程原理很有必要,yarn主要由四個重要角色組成 yarn排程主要分為8個步驟如上圖所示 1.有yarnclient提交program資訊打拼resourcemanager,包括 應用 和應用需要的一切引數和環境...

Yarn資源排程

yarn的介紹 yarn是hadoop集群當中的資源管理系統模組,從hadoop2.0開始引入yarn模組,yarn可為各類計算框架提供資源的管理和排程,主要用於管理集群當中的資源 主要是伺服器的各種硬體資源,包括cpu,記憶體,磁碟,網路io等 以及排程執行在yarn上面的各種任務。yarn核心出...