YARN筆記——技術點彙總

目錄

· 概況html

· 原理node

    · 資源調度器分類apache

    · YARN架構安全

    · ResourceManager網絡

    · NodeManager架構

    · ApplicationMaster併發

    · Containerapp

    · 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.

 

做者:netoxi
出處:http://www.cnblogs.com/netoxi本文版權歸做者和博客園共有,歡迎轉載,未經贊成須保留此段聲明,且在文章頁面明顯位置給出原文鏈接。歡迎指正與交流。

相關文章
相關標籤/搜索