【深入淺出 Yarn 架構與實現】3-1 Yarn Application 流程與編寫方法

来源:https://www.cnblogs.com/shuofxz/archive/2022/11/14/16890029.html
-Advertisement-
Play Games

本篇學習 Yarn Application 編寫方法,將帶你更清楚的瞭解一個任務是如何提交到 Yarn ,在運行中的交互和任務停止的過程。通過瞭解整個任務的運行流程,幫你更好的理解 Yarn 運作方式,出現問題時能更好的定位。 一、簡介 本篇將對 Yarn Application 編寫流程進行介紹。 ...


本篇學習 Yarn Application 編寫方法,將帶你更清楚的瞭解一個任務是如何提交到 Yarn ,在運行中的交互和任務停止的過程。通過瞭解整個任務的運行流程,幫你更好的理解 Yarn 運作方式,出現問題時能更好的定位。

一、簡介

本篇將對 Yarn Application 編寫流程進行介紹。將一個新的應用程式運行到 Yarn 上,主要編寫兩個組件 ClientApplicationMaster,組件的具體實現案例將在後兩篇文章中介紹。
(實際使用中,我們並不需要實現一個 Yarn Application,直接將任務提交到 MapReduce、Spark、Hive、Flink 等框架上,再由這些框架提交任務即可,這些框架也可以被視為一種特定的 Yarn Application。)
其中,Client 主要用於提交應用程式和管理應用程式,ApplicationMaster 負責實現應用程式的任務切分、調度、監控等功能。

一)Application 的提交和啟動流程

image.png

二)各服務間涉及的 protocol

image.png

二、組件實現流程

一)Client 實現

  1. 創建並啟動 YarnClient;
  2. 通過 YarnClient 創建 Application;
  3. 完善 ApplicationSubmissionContext 所需內容:
    1. 設置 application name;
    2. 設置 ContainerLaunchContext;(包含 app master jar)
    3. 設置優先順序、隊列等
  4. 提交 Application

二)ApplicationMaster實現

  1. 創建並啟動 AMRMClientAsync,用於與 ResourceManager 通信;
  2. 創建並啟動 NMClientAsync ,用於與 NodeManager 通信;
  3. ResourceManager 註冊,之後會向 ResourceManager 發送心跳;
  4. ResourceManager 申請 Container
  5. Container 中運行 task

三)Hadoop 實現案例

Hadoop 自帶的 hadoop-yarn-applications-distributedshell 是個很好的學習案例,可以參考其中的 Client.javaApplicationMaster.java 兩個類進行學習。DistributedShell 可以執行用戶指定的 Shell 命令或腳本,包含了編寫一個 YARN Application 的完整內容。
image.png

三、小結

本篇帶大家瞭解了 Yarn Application 提交和啟動流程、組件間涉及的通信協議,以及編寫 Application 的基本流程。實際上,在 Yarn 上運行不同的框架應用 Hive、Spark、Flink 等就是主要實現 Client 和 Application Master 兩個組件。理解了本文的相關知識,再去看其他應用提交過程就會清晰很多。
接下來的兩篇講帶大家學習 Client 和 Application Master 具體編寫方式。


參考文章:
深入解析yarn架構設計與技術實現-yarn 應用程式設計方法
Hadoop YARN原理 - 編寫YARN Application
Hadoop DOC: Writing YARN Applications
github app-on-yarn-demo
《Hadoop 技術內幕 - 深入解析 Yarn 結構設計與實現原理》第四章


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • css裡面有個背景色漸變色的效果,我們能拿來做什麼呢 現在就演示下,我在開發此頁面時所實際實現的樣子 演示頁面-唯一線上客服系統 實現代碼很簡單,效果還是很不錯: background: linear-gradient(90deg, #EE884C 0%, #FFBA8E 100%); 首頁里也有個 ...
  • 摘要:Ajax是非同步JavaScript和XML可用於前後端交互。 本文分享自華為雲社區《Flask框架:運用Ajax輪詢動態繪圖》,作者:LyShark。 Ajax是非同步JavaScript和XML可用於前後端交互,在之前《Flask 框架:運用Ajax實現數據交互》簡單實現了前後端交互,本章將通 ...
  • 5. 文件服務開發 全套代碼及資料全部完整提供,點此處下載 5.1 環境搭建 5.1.1 資料庫環境搭建 第一步:創建pd_files資料庫 create database pd_files character set utf8mb4; 第二步:在pd_files資料庫中創建pd_attachmen ...
  • 前提 Tomcat 10.1.x Tomcat線程池介紹 Tomcat線程池,源於JAVA JDK自帶線程池。由於JAVA JDK線程池策略,比較適合處理 CPU 密集型任務,但是對於 I/O 密集型任務,如資料庫查詢,rpc 請求調用等,不是很友好,所以Tomcat在其基礎上進行了擴展。 任務處理 ...
  • 模板 c++另一種編程思想稱為泛型編程,主要利用的技術就是模板 c++提供兩種模板機制:函數模板和類模板 函數模板 建立一個通用函數,函數的返回值類型和形參類型可以不具體指定,用一個虛擬的類型來代表 語法: template<typename T> //或者 template<class T> 函數 ...
  • 渲染模板 我的客服系統後端使用的golang Gin 框架,想把頁面渲染出來,下麵就是載入html模板頁面 package router func InitViewRouter(engine *gin.Engine) { //關於頁面 engine.GET("/aboutus.html", func ...
  • 在看集合源碼的時候,因為對一些知識點有些混淆,導致看源碼比較吃力。所以重新回顧一下麵向對象的繼承和多態,順便記錄一下重點。 繼承 子類會繼承父類的所有屬性和方法,但私有屬性和方法在子類不能直接訪問,需要通過父類提供的公共方法訪問; 子類必須調用父類的構造器,完成父類的初始化(創建子類對象時會調用父類 ...
  • 本文花了較短的篇幅重點介紹了JVM Sandbox的功能,實際用法,以及基礎原理。它通過封裝一些底層JVM控制的框架,使得對JVM層面的AOP開發變的異常簡單,就像作者自己所說“JVM-SANDBOX還能幫助你做很多很多,取決於你的腦洞有多大了。” ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...