本篇學(xué)習(xí) Yarn Application 編寫方法,將帶你更清楚的了解一個任務(wù)是如何提交到 Yarn ,在運行中的交互和任務(wù)停止的過程。通過了解整個任務(wù)的運行流程,幫你更好的理解 Yarn 運作方式,出現(xiàn)問題時能更好的定位。
我們提供的服務(wù)有:成都網(wǎng)站設(shè)計、做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、米脂ssl等。為上1000+企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的米脂網(wǎng)站制作公司
本篇將對 Yarn Application 編寫流程進行介紹。將一個新的應(yīng)用程序運行到 Yarn 上,主要編寫兩個組件 Client
和 ApplicationMaster
,組件的具體實現(xiàn)案例將在后兩篇文章中介紹。
(實際使用中,我們并不需要實現(xiàn)一個 Yarn Application,直接將任務(wù)提交到 MapReduce、Spark、Hive、Flink 等框架上,再由這些框架提交任務(wù)即可,這些框架也可以被視為一種特定的 Yarn Application。)
其中,Client 主要用于提交應(yīng)用程序和管理應(yīng)用程序,ApplicationMaster 負責(zé)實現(xiàn)應(yīng)用程序的任務(wù)切分、調(diào)度、監(jiān)控等功能。
YarnClient
;YarnClient
創(chuàng)建 Application
;ApplicationSubmissionContext
所需內(nèi)容:
Application
。AMRMClientAsync
,用于與 ResourceManager
通信;NMClientAsync
,用于與 NodeManager
通信;ResourceManager
注冊,之后會向 ResourceManager
發(fā)送心跳;ResourceManager
申請 Container
。Container
中運行 taskHadoop 自帶的 hadoop-yarn-applications-distributedshell
是個很好的學(xué)習(xí)案例,可以參考其中的 Client.java
和 ApplicationMaster.java
兩個類進行學(xué)習(xí)。DistributedShell
可以執(zhí)行用戶指定的 Shell 命令或腳本,包含了編寫一個 YARN Application 的完整內(nèi)容。
本篇帶大家了解了 Yarn Application 提交和啟動流程、組件間涉及的通信協(xié)議,以及編寫 Application 的基本流程。實際上,在 Yarn 上運行不同的框架應(yīng)用 Hive、Spark、Flink 等就是主要實現(xiàn) Client 和 Application Master 兩個組件。理解了本文的相關(guān)知識,再去看其他應(yīng)用提交過程就會清晰很多。
接下來的兩篇講帶大家學(xué)習(xí) Client 和 Application Master 具體編寫方式。
參考文章:
深入解析yarn架構(gòu)設(shè)計與技術(shù)實現(xiàn)-yarn 應(yīng)用程序設(shè)計方法
Hadoop YARN原理 - 編寫YARN Application
Hadoop DOC: Writing YARN Applications
github app-on-yarn-demo
《Hadoop 技術(shù)內(nèi)幕 - 深入解析 Yarn 結(jié)構(gòu)設(shè)計與實現(xiàn)原理》第四章