天天看點

專欄 | YARN,母系社會的運作架構

是時候該讨論一下YARN了。

最近看了不少YARN的技術資料,每次看都覺得不知所雲。無法了解其精髓,今天在航班上突然靈光一現,豁然開朗。然後,又洋洋灑灑在航班清潔袋上鬼畫符,寫下了今天我想跟大家分享的内容。我自己覺得蠻過瘾的,也希望大家看着也更過瘾。

廢話不多說,上圖!

專欄 | YARN,母系社會的運作架構

首先,我鄭重申明:我家庭和睦,我很愛我的孩子,更愛我的老婆(請注意我說話的順序,我很嚴謹)。

解釋一下以上這張圖想要表達的意思。上圖講述的就是一個家庭生活中經常會遇到的場景:給小孩買東西。

兒子:小名Client,提需求是他的強項,自己沒有購買能力,隻能将需求送出給他老媽——也就是我老婆。

老婆:小名RM,超級大Boss,家庭核心成員,掌門人,擅長垂簾聽政。平日主要負責兩件大事:1、資金管理,家裡的生活開支、事無巨細、樣樣門兒清(老婆辛苦了)。2、排計劃,手上的資金不能亂花,是以都按計劃行事,杜絕突發情況出現。

老公:小名AM,也就是鄙人了。1、擅長執行任務(勞累命,哈哈),需要随時接受老婆配置設定的工作任務。2、需要周期性的通過親情電話号碼向老婆彙報生活和工作等各方面的情況(多跟上級彙報工作是職場法則)。其他方面就不多說了,都是淚,過……。自己看圖了解!

買東西其實不複雜,具體的處理流程如下:

兒子隻負責提需求。老婆主要根據目前家庭的收入支出情況,以及需求的合理性(玩具是否适合這個年齡段、是否具有危險性、是否适合男孩子玩等)來判斷需求是否可以被接納。一旦确定兒子提出的請求是合理的,就把購買商品的任務下發給老公執行。

還有一種情況,如果兒子一次性有多個商品需要購買的話,老婆為了防止老公搞混淆了,也會一個個的下達單獨的購買指令、由老公來負責逐一執行。老婆在送出購買指令的時候,會詳細說明購買商品的要求。

老公接到老婆下發的指令後,立馬執行任務。并且需要具備基本的判斷能力,比如:哪些商品适合在淘寶購買,哪些商品是适合在京東上購買等等。這個過程需要多加小心,處理的好就是一座豐碑,處理不當的話就會成為一個墓碑了,極有可能莫名其妙的得罪了老婆。

老公需要周期性的主動關注老婆的淘寶或京東購物車狀态,并且要對購物車中收藏的商品進行細緻的分析,理清楚商品購買的優先級。确定購買優先級的方法有以下幾種:

其一:老婆自用的商品優先級高。如果老婆自用的商品太多,那就需要從時間次元考量,收藏時間很久的,優先級一定要提高,不然死都不知道怎麼死的;

其二:價格低的商品優先級高,花錢少,就别磨叽了;

其三:把商品進行分類,比如:衣、食、住、行。然後根據各類産品所占比例來排優先級。這種情況下,一般購買量大,為了不影響本月的資金周轉,也建議購買占比最小的商品類别。這樣花錢,心裡多少會好受一些。

在購買商品的時候,也必須及時跟老婆商讨,以免標明的商品不符合要求。

老公選擇好商品後,正式下單。下單的快遞号需要及時發給老婆。老婆會經常提醒老公催廠家發貨。老公需要通過淘寶或者京東的App實時監控商品的物流狀态。值得說明的是:老公和老婆直接的溝通是有單獨的綠色通道的,在營運商設定了親情号碼,保證溝通快捷高效。

商品到貨後,交給兒子使用。

至此,整個流程結束。

為什麼文章标題要把YARN與母系社會扯在一起呢?

道理很簡單:女人,是适合處理各種對内、對外的事務的,溝通協調是她們的長項。簡單中不乏睿智,強勢中也不缺溫柔。

說點正經的吧。

YARN,是Yet Another Resource Negotiator的縮寫,是一個通用的資源管理平台,可為各類計算架構(離線計算MR、線上計算Storm、記憶體計算Spark等)提供資源的管理和排程。它将叢集内所有節點的資源(CPU、記憶體、磁盤、網絡等)抽象為Container,在資源進行運算任務時,計算架構需要向YARN申請Container,YARN按照政策對資源進行排程,進行Container的配置設定。

幾個基本元件介紹:

1、ResourceManager(RM)

RM是YARN的核心元件,屬于YARN家族中的大當家,主要由應用程式管理器(Applications Manager)和任務排程器(Scheduler)組成。其主要功能是負責系統資源的管理和配置設定。

應用程式管理器(Applications Manager)

應用程式管理器,負責管理整個系統中所有應用程式,包括應用程式送出、向任務排程器申請資源啟動ApplicationMaster、監控ApplicationMaster運作狀态并在失敗時重新啟動它。

任務排程器(Scheduler)

任務排程器根據系統資源容量以及管理者對隊列的限制條件,按照一定的政策将資源配置設定給正在運作的應用程式。相比于Hadoop1.x而言,Yarn為任務排程器做了減負,任務排程器不再負責跟蹤和監控應用的執行狀态,也不負責重新啟動因為應用執行失敗或者硬體故障而運作失敗的任務,這些任務都有該應用程式對應的ApplicationMaster來負責了,這使得YarnScheduler的功能更加純粹。另外,任務排程器和Hadoop1.x一樣也是一個熱插拔子產品,你可以自定義自己的任務排程器,同樣你也可以直接使用其他任務排程器,如,Fair Scheduler或者Capacity Scheduler。

2、ApplicationMaster(AM)

每當使用者送出了一個應用程式就會為這個應用程式産生一個對應的AM,并且這個單獨程序是在其中一個子節點上運作的。它的主要功能:為應用向RM申請資源,并對Task實行排程、與NodeManager通信以啟動或者停止任務、監控所有任務的運作情況,并且在任務失敗的情下,重新為任務申請資源并且重新開機任務、負責推測任務的執行、當AM向RM注冊後,AM可以提供用戶端查詢作業進度資訊等。

3、NodeManager(NM)

NM是每個子節點上的資源和任務管理器,一方面,它會定向通過心跳資訊向RM彙報本節點上的資源使用情況和各個Container的運作情況;另一方面,它會接收并且處理來自AM的Container啟動和停止的各種請求。

4、Container

Container是YARN中對系統資源的抽象,同時它也是系統資源配置設定的基本機關,它封裝節點上多元度資源,其中包括CPU、記憶體、磁盤、網絡等。YARN會為每個任務配置設定一個Container,并且該任務隻能夠使用該Container中所描述的資源。Container是一個動态的資源劃分機關,它是根據實際送出的應用程式所需求的資源自動生成的,換句話說,Container其裡邊所描述的CPU、記憶體等資源是根據實際應用程式需求而變的。

YARN的工作流程如下:

專欄 | YARN,母系社會的運作架構

步驟1,使用者(兒子)向YARN送出應用程式,其中包括使用者程式、相關檔案、啟動AM指令、AM程式等。

步驟2,RM(老婆)為該應用程式配置設定第一個Container(任務),并且與Container所在的NM(老公)通信,并且要求該NM在這個Container中啟動應用程式對應的AM。

步驟3,AM(具體購買的某個商品)首先會向RM注冊,這樣使用者才可以直接通過RM檢視到應用程式的運作狀态,然後它為準備為該應用程式的各個任務申請資源,并監控它們的運作狀态直到運作結束,即重複後面4-7步驟。

步驟4,AM采用輪詢的方式通過RPC協定(親情号碼)向RM申請和領取資源。

步驟5,一旦AM申請到資源後,便會與申請到的Container所對應的NM進行通信,并且要求它在該Container中啟動任務。

步驟6,任務啟動。NM為要啟動的任務配置好運作環境,包括環境變量、JAR包、二進制程式等,并且将啟動指令寫在一個腳本裡,通過該腳本運作任務。

步驟7,各個任務通過RPC協定向其對應的AM彙報自己的運作狀态和進度,以讓AM随時掌握各個任務的運作狀态,進而可以在任務運作失敗時重新開機任務(監控商品快遞的狀态等)。

步驟8,應用程式運作完畢後,其對應的AM會向RM通信,要求登出和關閉自己。

最後,還原一下最開始的架構圖,供各位了解:

專欄 | YARN,母系社會的運作架構

不得不說:生活,就是一門高深莫測的藝術!你們承不承認?

原文釋出時間為:2018-11-22

本文作者:兩年砍柴

本文來自雲栖社群合作夥伴“

大資料文摘

”,了解相關資訊可以關注“

”。

繼續閱讀