YARN筆記——技術點彙總

来源:http://www.cnblogs.com/netoxi/archive/2017/07/28/7223087.html
-Advertisement-
Play Games

目錄 · 概況 · 原理 · 資源調度器分類 · YARN架構 · ResourceManager · NodeManager · ApplicationMaster · Container · YARN工作流程 · YARN資源調度 · 操作 · Overview · User Commands ...


目錄

· 概況

· 原理

    · 資源調度器分類

    · YARN架構

    · ResourceManager

    · NodeManager

    · ApplicationMaster

    · Container

    · YARN工作流程

    · YARN資源調度

· 操作

    · Overview

    · User Commands

    · Administration Commands


 

概況

1. YARNYet Another Resource Negotiator,統一資源管理調度平臺。

2. 與MRv1:脫胎於MRv1,解決了MRv1可靠性差、擴展性差、資源利用率低、無法支持異構計算資源的問題。

3. YARN與計算框架:整個HadoopYARN為中心,計算框架都可插拔。

原理

資源調度器分類

1. 集中調度器(Monolithic Scheduler

    a) 原理:全局只運行一個中央調度器。

    b) 特點:高併發作業情況下,容易出現性能瓶頸。

    c) 舉例:MRv1

2. 雙層調度器(Two-level Scheduler

    a) 原理:中央調度器管理集群中所有資源,按照一定策略(如FIFOFairCapacityDelayDominant Resource Fair)將資源粗粒度地分配給個框架調度器;各框架收到資源後再根據作業特性細粒度地將資源分配給容器執行具體計算任務。

    b) 特點:二級調度器大大減輕了中央調度器的負載,提升併發和資源利用率。

    c) 舉例:Apache YARNApache Mesos

3. 狀態共用調度器(Shared-state Scheduler

    a) 起源:GoogleOmega論文。

    b) 特點:不成熟。

YARN架構

1. 架構圖

2. 守護進程

名稱

集群中數目

作用

ResourceManager

1

負責集群所有資源的統一管理和調度

NodeManager

多個(至少1個)

負責管理單計算節點、容器的生命周期管理、追蹤節點健康狀況

3. 架構與主要進程 

ResourceManager

1. 職責:雙層調度器中的中央調度器。

2. 調度過程:當多個作業同時提交時,ResourceManager在多個競爭的作業間權衡優先順序並仲裁;資源分配後,ResourceManager不再關心應用內部資源分配和每個應用狀態。減輕了ResourceManager負荷,增強了擴展性。

3. 架構

    a) YarnScheduler:基於應用程式的資源申請執行資源調度,目前能調度CPU核和記憶體,支持FIFOCapacity、自適應、自學習、動態優先順序等調度器,相當於雙層調度器的中央調度器。

    b) ApplicationManager:負責管理已提交的應用集合。應用提交後,檢查ApplicationMaster資源請求合法性,再確定沒有其他已提交的應用使用相同ID

    c) ApplicationMasterService:響應來自所有ApplicationMaster的請求,包括註冊新ApplicationMaster、接收來自任意正在結束的ApplicationMaster的終止或取消註冊請求、認證來自不同ApplicationMaster的所有請求、獲取所有來自所有運行ApplicationMasterContainer分配和釋放請求。確保任意時間任意ApplicationMaster只有一個線程可以發送請求給ResourceManager,即將來自ApplicationMasterRPC請求串列化,實現中央調度器悲觀併發。

    d) ResourceTrackerService:負責和NodeManager交互。包括響應NodeManager周期性發送的PRC請求心跳、註冊新節點、接收前面註冊節點的心跳、確保只有合法的節點可以和ResourceManager通信。

    e) ClientService:負責處理來自客戶端到ResourceManagerRPC通信,有作業提交、作業終止、獲取應用程式、隊列、集群統計、用戶ACL等信息。

NodeManager

1. 職責:管理YARN集群中單計算節點。

2. 架構

    a) NodeStatusUpdaterNodeManager啟動時,向ResourceManager註冊,併發送該節點的可用資源信息;接下來與ResourceManager通信時,周期性彙報新啟動的Container、正在運行的Container、狀態更新和已完成的Container信息;ResourceManager也可通過NodeStatusUpdater銷毀正在運行的Container

    b) ContainerManagerNodeManager最核心組件之一,有許多子組件構成,每個子組件負責容器管理的一部分功能,協同管理節點的所有容器。

    c) RPC ServerApplicationMasterNodeManager間通信的唯一通道。

    d) ResourceLocalizationService:負責Container所需資源本地化,按照正確的URIHDFS下載Container所需的文件資源,如JAR文件。

    e) AuxService:運行用戶通過配置附屬服務的方式擴展功能,使每個節點可定製特定框架需要的服務(hdfs-site.xml的參數“yarn.nodemanager.aux-services”)。

    f) ContainerLauncher:維護一個線程池並行完成Container操作(如啟停Container)。

    g) ContainerMonitor:負責監控Container資源使用量。

    h) LogHandler:一個可插拔組件,用戶自定義控制Container日誌保持方式。

    i) ContainerExecutor:與底層操作系統交互,安全存放Container需要的文件和目錄,進而以一種安全的方式啟動和清除Container對應的進程。

ApplicationMaster

1. ApplicationMaster:每個應用程式都有自己專屬的ApplicationMaster,不同計算框架實現也不同。

2. 職責

    a) 向ResourceManager申請資源;

    b) 在對應NodeManager上啟動Container來執行任務,並監控Container狀態;

    c) 雙層調度器中的二級調度器。

Container

1. Container:動態資源分配單位,封裝了多維度資源,如CPU、記憶體、磁碟、網路(目前只支持CPU、記憶體)。

2. 申請:ApplicationMasterResourceManager申請資源時,ResourceManager返回的資源用Container表示。

3. 任務執行:每個任務只有一個Container,只能使用該資源代表的資源量。

YARN工作流程

1. 客戶端向ResourceManager提交應用。

2. ResourceManagerNodeManager發出指令,為該應用啟動一個Container,併在其中啟動ApplicationMaster

3. ApplicationMasterResourceManager註冊。

4. ApplicationMaster採用輪訓方式向ResourceManagerYarnScheduler申領資源。

5. ApplicationMaster與資源對應的NodeManager通信,請求啟動計算任務。

6. NodeManager根據資源量大小、所需運行環境,在Container中啟動任務。

7. 各任務向ApplicationMaster彙報各自狀態和進度。

8. 應用運行完成後,ApplicationMasterResourceManager註銷並關閉自己。

YARN資源調度

1. YARN資源管理機制

    a) 資源池:資源以資源池形式組織,每個資源池對應一個隊列,用戶提交作業時以“-queue”參數指定隊列。

    b) 隊列:隊列以樹形方式組織,整個集群資源用root表示。未指定隊列預設使用root

 

1. FIFO Scheduler:先按作業優先順序高低,再按到達時間先後選擇執行作業。

2. Capacity Scheduler

    a) 原理:以隊列劃分資源,每個隊列可設定資源最低保證和最大使用上限,每個用戶可設定資源使用上限;當某隊列資源空閑時,可將剩餘資源共用給其他隊列。

    b) 調度過程:先按資源使用率由小到大遍歷各子隊列,直到子隊列為葉子隊列為止,則選擇該隊列分配用戶,這樣保證選中最空閑隊列;再選擇提交時間較早的作業;接著選擇優先順序高的Container,優先順序排序方式為Node Local(本地)、Rack Local(同機架)、No Local(跨機架);最後隊列內部採用FIFO調度。

3. Fair Scheduler

    a) Fair Scheduler:由Fackbook開發,與Capacity Scheduler相似。

    b) 與Capacity Scheduler區別

        i. 隊列內部支持多種調度策略:隊列內部可選擇FIFOFairDRF調度策略。

        ii. 支持資源搶占:隊列剩餘資源可共用給其他隊列,當隊列有新應用提交時,調度器強制回收。

        iii. 負載均衡:基於任務數目的負載均衡,即儘可能將任務均衡分配到各節點。

        iv. 提高小應用響應時間:小應用可快速獲取資源,避免餓死狀況。

操作

Overview

1. Yarn commands are invoked by the bin/yarn script. Running the yarn script without any arguments prints the description for all commands.

yarn [--config confdir] COMMAND

2. Yarn has an option parsing framework that employs parsing generic options as well as running classes.

COMMAND_OPTIONS

Description

--config confdir

Overwrites the default Configuration directory. Default is ${HADOOP_PREFIX}/conf.

COMMAND COMMAND_OPTIONS

Various commands with their options are described in the following sections. The commands have been grouped into User Commands and Administration Commands.

User Commands

1. jar

    a) Runs a jar file. Users can bundle their Yarn code in a jar file and execute it using this command.

    b) Format.

yarn jar <jar> [mainClass] args...

2. application

    a) Prints application(s) report/kill application.

    b) Format.

yarn application <options>

    c) Options.

COMMAND_OPTIONS

Description

-list

Lists applications from the RM. Supports optional use of -appTypes to filter applications based on application type, and -appStates to filter applications based on application state.

-appStates States

Works with -list to filter applications based on input comma-separated list of application states. The valid application state can be one of the following:  

ALL, NEW, NEW_SAVING, SUBMITTED, ACCEPTED, RUNNING, FINISHED, FAILED, KILLED

-appTypes Types

Works with -list to filter applications based on input comma-separated list of application types.

-status ApplicationId

Prints the status of the application.

-kill ApplicationId

Kills the application.

3. node

    a) Prints node report(s).

    b) Format.

yarn node <options>

    c) Options.

COMMAND_OPTIONS

Description

-list

Lists all running nodes. Supports optional use of -states to filter nodes based on node state, and -all to list all nodes.

-states States

Works with -list to filter nodes based on input comma-separated list of node states.

-all

Works with -list to list all nodes.

-status NodeId

Prints the status report of the node.

4. logs

    a) Dump the container logs.

    b) Format.

yarn logs -applicationId <application ID> <options>

    c) Options.

COMMAND_OPTIONS

Description

-applicationId <application ID>

Specifies an application id

-appOwner AppOwner

AppOwner (assumed to be current user if not specified)

-containerId ContainerId

ContainerId (must be specified if node address is specified)

-nodeAddress NodeAddress

NodeAddress in the format nodename:port (must be specified if container id is specified)

5. classpath

    a) Prints the class path needed to get the Hadoop jar and the required libraries.

    b) Format.

yarn classpath

6. version

    a) Prints the version.

    b) Format.

yarn version

Administration Commands

Refers to official documentation.

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、原因 1、如果apk發佈到網上,系統預設的簽名debug.keystore存在安全問題,所以要自己寫簽名。 二、方法 方法一:利用JDK中的keytool.exe工具 利用JDK中的keytool.exe工具 我的目錄是: E:\JAVA\jdk\bin\keytool.exe 步驟 1、在wi ...
  • java.lang.IllegalStateException: Fragment already added: ******Effect 出現的原因是commit方法提交是非同步的,所以容易出現,判斷的時候是還沒有added的狀態,但是在真的添加的時候,重覆添加了,其實就是一個同步非同步的問題。 解決 ...
  • Android項目目錄結構 ...
  • Android程式的安裝和打包 ...
  • 1.查找是否存在指定包名的App 2.創建Intent,刪除指定包名的App ...
  • 一、NSTimer使用時有哪些需要註意點? 1、必須保證有一個活躍的RunLoop。 NSTimer是基於RunLoop的一種定時機制,這涉及到預設主線程和子線程RunLoop的知識延伸;同時還有頁面滑動時防止定時器失效的知識點: 解決方案:[[NSRunLoop currentRunLoop] a ...
  • 目錄 · 概況 · 原理 · MapReduce編程模型 · MapReduce過程 · 容錯機制 · API · 概況 · WordCount示例 · Writable介面 · Mapper類 · Reducer類 · Partitioner抽象類 · WritableComparator介面 · ...
  • SQL Server 中數據存儲的基本單位是頁。為資料庫中的數據文件(.mdf 或 .ndf)分配的磁碟空間可以從邏輯上劃分成頁(從 0 到 n 連續編號)。磁碟 I/O 操作在頁級執行。也就是說,SQL Server 讀取或寫入所有數據頁。 區是八個物理上連續的頁的集合,用來有效地管理頁。所有頁都 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...