最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

深入理解 Taier:MR on Yarn 的實現(xiàn)原理

2023-03-15 11:26 作者:袋鼠云  | 我要投稿

我們今天常說的大數(shù)據(jù)技術,它的理論基礎來自于2003年 Google 發(fā)表的三篇論文,《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》、《Bigtable: A Distributed Storage System for Structured Data》。這三篇論文分別對應后來出現(xiàn)的 HDFS,MapReduce, HBase。

在大數(shù)據(jù)的發(fā)展歷史上,還有一個名字是無論如何都繞不開的,那就是 Doug Cutting。Doug是 Apache Lucene、Nutch、Hadoop、Avro 項目的創(chuàng)始人,2006 年 Docu Cutting 開源了?Hadoop,名字取自于他兒子的玩具小象 Hadoop。

那么就從 Hadoop 起,我們開始本文的分享。

Taier & Yarn

Hadoop

新生事物的成長往往是螺旋上升的,Hadoop 也是如此。Hadoop 1.0 是指 MapReduce + HDFS,其中?MapReduce?是一個離線處理框架,由編程模型(新舊API)、運行時環(huán)境(JobTracker 和 TaskTracker)和數(shù)據(jù)處理引擎(MapTask和ReduceTask)三部分組成。早期的 MapReduce 非常臃腫,有著很明顯的缺點,JobTracker 有單點故障問題、框架設計只能執(zhí)行 MapReduce 任務,不能跑 Storm,F(xiàn)link 等計算框架的任務。

之后迎來的 Hadoop 2.0 是指 MapReduce + HDFS + Yarn,其中 YARN 是一個資源管理系統(tǒng),負責集群資源管理和調度, MapReduce 則是運行在 YARN 上的離線處理框架。Hadoop 2.0 很好地解決了單點問題,它將 JobTracker 中的資源管理和作業(yè)控制分開,分別由?ResourceManager?負責所有應用程序的資源分配,ApplicationMaster 負責管理一個應用程序。并且解決了擴展問題,包括針對 Hadoop 1.0 中的 MapReduce 在擴展性和多框架支持等方面的不足。

MapReduce 2.0

MapReduce 1.0的工作機制中,角色主要包括客戶端,Jobtracker,Tasktracker。Jobtracker?主要是協(xié)調作業(yè)的運行,而?Tasktracker?是負責運行作業(yè)劃分之后的任務。網(wǎng)上關于 MR 1.0 的內(nèi)容很多,這里就不再過多贅述,流程圖如下:

到了 MapReduce 2.0,核心思想則是將 MR 1.0 中 JobTracker 的資源管理和任務調度兩個功能分開,分別由 ResourceManager 和 ApplicationMaster 進程實現(xiàn)。

MR 2.0 的工作流程主要分為以下6個執(zhí)行過程(請將圖片和文字對照起來看):

一、作業(yè)的提交

1)客戶端向 ResourceManager 請求一個新的作業(yè)ID,ResourceManager 收到后,回應一個?ApplicationID,見第2步

2)計算作業(yè)的輸入分片,將運行作業(yè)所需要的資源(包括jar文件、配置文件和計算得到的輸入分片)復制到一個(HDFS),見第3步

3)告知 ResourceManager 作業(yè)準備執(zhí)行,并且調用 submitApplication() 提交作業(yè),見第4步

二、作業(yè)的初始化

4) ResourceManager收到對其 submitApplication() 方法的調用后,會把此調用放入一個內(nèi)部隊列中,交由作業(yè)調度器進行調度,并對其初始化,然后為該其分配一個 contain 容器,見第5步

5)并與對應的 NodeManager 通信,見第5a步;要求它在 Contain 中啟動 ApplicationMaster ,見第5b步

6) ApplicationMaster 啟動后,會對作業(yè)進行初始化,并保持作業(yè)的追蹤,見第6步

7) ApplicationMaster 從 HDFS 中共享資源,接受客戶端計算的輸入分片為每個分片,見第7步

三、任務的分配

8) ApplicationMaster 向 ResourceManager 注冊,這樣就可以直接通過 RM 查看應用的運行狀態(tài),然后為所有的 map 和 reduce 任務獲取資源,見第8步

四、任務的執(zhí)行

9) ApplicationMaster 申請到資源后,與 NodeManager 進行交互,要求它在?Contain 容器中啟動執(zhí)行任務,見第9a、9b步

五、進度和狀態(tài)的更新

10)各個任務通過 RPC 協(xié)議 umbilical 接口向 ApplicationMaster 匯報自己的狀態(tài)和進度,方便 ApplicationMaster 隨時掌握各個任務的運行狀態(tài),用戶也可以向 ApplicationMaster 查詢運行狀態(tài)

六、作業(yè)的完成

11)應用完成后,ApplicationMaster 向 ResourceManager 注銷并關閉自己

手寫一個 Yarn 程序

如果想要將一個新的應用程序運行在 YARN 之上,通常需要編寫兩個組件:客戶端和 ApplicationMaster。

· 客戶端編寫需要注意:客戶端通常只需與 ResourceManager 交互,期間涉及到多個數(shù)據(jù)結構和一個 RPC 協(xié)議。

· ApplicationMaster 編寫需要注意:ApplicationMaster 需要與 ResoureManager 和 NodeManager 交互,以申請資源和啟動 Container,期間涉及到多個數(shù)據(jù)結構和兩個?RPC 協(xié)議。

手寫一個 YARN Application 程序對理解 YARN 的運行原理非常有幫助,熟悉 Spark 、Flink 計算組件的同學也可以參考 Spark on Yarn、Flink on Yarn 的源代碼。

Taier&Yarn

洋洋灑灑,回過頭來,現(xiàn)在來給大家介紹一下 Taier 和 Yarn 之間的關系。

Taier 作為一站式大數(shù)據(jù)任務調度引擎,是數(shù)棧數(shù)據(jù)中臺整體架構的重要樞紐,負責調度日常龐大的任務量。它旨在降低ETL開發(fā)成本,提高大數(shù)據(jù)平臺穩(wěn)定性,讓大數(shù)據(jù)開發(fā)人員可以在 Taier 直接進行業(yè)務邏輯的開發(fā),而不用關心任務錯綜復雜的依賴關系與底層的大數(shù)據(jù)平臺的架構實現(xiàn),將工作的重心更多地聚焦在業(yè)務之中。

為了更好地實現(xiàn)讓數(shù)據(jù)開發(fā)人員關注業(yè)務的目標,Taier 主要在控制臺中展示了 Hadoop Yarn的相關信息。分為以下3點:Yarn 配置管理、Yarn 資源管理、任務 on Yarn 的相關配置。

下面為大家展示一下 Taier 中 Yarn 相關的頁面:

實現(xiàn)原理

前情提要全部講完,下面為大家重點介紹下 Taier 怎么實現(xiàn) MR on Yarn 的計算。

Taier 目前支持22種任務類型,支持在 Yarn 上運行的任務有 python、shell、數(shù)據(jù)同步、實時采集、Flink Jar、Flink SQL、Spark SQL 和 Hadoop MR 等等。

實現(xiàn)原理

以 MR on Yarn 任務為例,其實現(xiàn)原理主要有2個關鍵步驟:

· 組裝任務運行時的相關信息生成 pluginInfo,信息包含任務相關配置、YARN 配置、HDFS 配置和公共配置。

· 根據(jù) pluginInfo 實例化相應的任務提交客戶端,客戶端負責向 YARN 提交任務,實現(xiàn)了 Taier 與計算集群的解耦、保證節(jié)點無侵入。

下圖是目前已經(jīng)在 Taier 上運行的 Flink 任務的一些參數(shù),包括 groupName、jobID 等:

執(zhí)行原理

以 MR on Yarn 任務為例,其執(zhí)行原理可以分為以下3個階段:

● 準備階段

· 對普通的 Hadoop MR 任務進行改造,修改 MR 代碼的 Main 方法

· 編譯修改后的 Hadoop MR 任務,并通過?Taier 的資源上傳功能將 Jar 進行上傳,目標選擇 HDFS

· 配置 Haddoop MR 任務的任務參數(shù)

● 運行階段

· Taier 的?worker-plugin?主要負責任務提交相關工作,其中 hadoop 插件會負責 MR 任務的相關處理

· 實例化 HadoopClient,并下載準備階段上傳的 MR 任務對應的 Jar(注意這里是一個任務的生命周期,為了保障任務的無狀態(tài),所以每次運行都會重新下載一次)

· 通過 MapReduceTemplate ,加載 Jar 并構建 MR 任務的類加載器

· 通過類加載器實獲取 Class 類對象,并調用類對象的 Main 方法,傳入 Configuration、args 等參數(shù)

· 返回 JobId

● 運維階段

· 處理 JobId 并轉化為 ApplicationId

· 實例化 YarnClient,獲取 MR on Yarn 的相關信息,包括運行狀態(tài)、日志、停止 Application

Taier 中的 Hadoop 插件

Hadoop MR 的任務在 Taier 中的實現(xiàn)是基于?Hadoop 的插件,在里面實現(xiàn)了相關的類,其中比較主要的包括:

· HadoopClient: 實現(xiàn)任務提交運行的相關接口(init、judgeSlots、processSubmitJobWithType、beforeSubmitFunc、afterSubmitFunc、getJobStatus、getJobLog、cancelJob)

· MapReduceTemplate:封裝 MR 任務及其重要參數(shù)、方法,實例化 PackagedProgram

· PackagedProgram:MR 任務提交前的處理實現(xiàn)

這一部分相關的代碼可以在 PR 中的上下文看到,也可以下載 Taier 插件看到關鍵類所做的事件,如何相互配合實現(xiàn) MR 任務往 Yarn 上進行提交。

相關PR:

https://github.com/DTStack/Taier/pull/983

案例演示

案例演示的部分,大家直接觀看視頻,會得到最直觀清楚的講解,本文就不再進行贅述。

視頻鏈接:

https://www.bilibili.com/video/BV1ag4y1n7bT/?spm_id_from=333.999.0.0

視頻課程&PPT獲取

視頻課程:

https://www.bilibili.com/video/BV1ag4y1n7bT/?spm_id_from=333.999.0.0

課件獲?。?/p>

關注公眾號 “數(shù)棧研習社” ,后臺私信 “Taier” 獲得直播課件


《數(shù)據(jù)治理行業(yè)實踐白皮書》下載地址:https://fs80.cn/380a4b

想了解或咨詢更多有關袋鼠云大數(shù)據(jù)產(chǎn)品、行業(yè)解決方案、客戶案例的朋友,瀏覽袋鼠云官網(wǎng):https://www.dtstack.com/?src=szbzhan

同時,歡迎對大數(shù)據(jù)開源項目有興趣的同學加入「袋鼠云開源框架釘釘技術 qun」,交流最新開源技術信息,qun 號碼:30537511,項目地址:https://github.com/DTStack


深入理解 Taier:MR on Yarn 的實現(xiàn)原理的評論 (共 條)

分享到微博請遵守國家法律
绥阳县| 阳信县| 内江市| 云林县| 察隅县| 宝清县| 安西县| 陕西省| 宁城县| 启东市| 中方县| 鸡西市| 卫辉市| 邓州市| 响水县| 广州市| 无为县| 麻栗坡县| 广元市| 普兰县| 星座| 孟连| 儋州市| 舟山市| 慈溪市| 涟水县| 北票市| 榆社县| 保定市| 明光市| 客服| 阜康市| 涡阳县| 集贤县| 绥化市| 塘沽区| 航空| 江川县| 井研县| 瑞昌市| 遵化市|