成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

【大數據】yarn 任務中的幾種狀態變化詳細過程

大數據 數據分析
YARN Proxy可以讓您通過Web界面對集群進行監視和管理,而不必直接連接到每個節點。YARN Proxy服務是一個Web代理服務器,運行在YARN集群之外,并提供對集群資源管理器和節點管理器的訪問。

一、概述

在YARN中,應用程序和Container的狀態變化會影響任務的執行和資源分配。下面是YARN中應用程序和Container的狀態詳細過程:

1)Application 狀態

是指YARN應用程序的狀態。每個應用程序都有一個唯一的Application ID,并且可以通過ResourceManager API或YARN Web UI來獲取應用程序的當前狀態。在YARN中,應用程序狀態可以有以下狀態:

  1. NEW:應用程序剛創建時的狀態。應用程序會被分配一個唯一的Application ID,但還沒有分配資源,也沒有進入資源隊列。
  2. NEW_SAVING:應用程序等待資源保存。這個狀態只存在于開啟了Application歷史保存的集群上,如果沒有保存歷史,則該狀態的轉換不會發生。
  3. SUBMITTED:應用程序已經提交給YARN,并在隊列中等待調度資源。在該狀態下,YARN只是對應用程序進行了初步的運行時配置,但還沒有將任何容器分配到該應用程序。
  4. ACCEPTED:應用程序已經通過隊列,并已經分配了它需要的初始和最小容器。
  5. RUNNING:應用程序正在運行中,并具有正在運行的容器。
  6. FINISHED:應用程序已經成功完成,并且其最終狀態已經保存到YARN應用歷史中。
  7. FAILED:應用程序運行失敗,并且其最終狀態已經保存到YARN應用歷史中。
  8. KILLED:應用程序已被終止,并且其最終狀態已經保存到YARN應用歷史中。

2)Container 狀態

容器狀態指的是在YARN集群上運行的應用程序內部的容器狀態。在YARN集群上運行的應用程序是通過啟動多個容器來實現的,每個容器都運行著應用程序的一部分(如MapReduce中的一個map或reduce任務),并使用一個或多個資源(如內存、CPU等)來執行任務。當一個應用程序啟動后,它的容器狀態可能有以下幾種:

  1. NEW:Container剛剛創建,但還沒有分配資源。
  2. LOCALIZED:Container已經獲取了運行時環境和所需的資源,表示資源已經被分配給某個容器,但資源還未完全在該容器上本地化。在容器執行應用程序之前,需要將應用程序所需的資源(如JAR包、配置文件等)拷貝到容器所在的節點上,并在容器內部完成相關配置。完成本地化操作后,容器就可以開始執行應用程序。
  3. RUNNING:Container正在運行,并且已經分配了資源。
  4. COMPLETE:Container已經完成工作并退出。
  5. EXITED_WITH_SUCCESS:表示容器成功執行完畢,并且已經被清理。
  6. EXITED_WITH_FAILURE:表示容器執行失敗,并且已經被清理。

從 NEW 狀態到 LOCALIZED 狀態,Container 會向 NodeManager 發起本地化請求,要求 NodeManager 將所需的資源復制到本地磁盤。從 LOCALIZED 狀態到 RUNNING 狀態,Container會通過啟動進程來運行任務。在運行過程中,Container 可能會由于各種原因失敗,進入 FAILED 狀態。如果Container 順利完成任務,則進入 COMPLETE 狀態。

綜上所述,YARN中應用程序和Container的狀態變化對于任務的執行和資源分配非常關鍵。在使用YARN進行任務調度和管理時,需要對不同狀態之間的轉換有清晰的理解,以確保任務能夠順利運行和完成。

二、資源不足情況下狀態變化

1)資源不足情況下

在YARN中,當資源不足時,YARN的資源管理器會對應用程序的狀態進行調整,以幫助其適應現有的資源情況。下面是YARN中應用程序狀態在資源不足的情況下的狀態變化:

  • 如果應用程序在 SUBMITTED 狀態時,發現資源不足,那么應用程序會進入 ACCEPTED狀態。在這種情況下,YARN會嘗試為應用程序分配資源,但可能需要等待其他應用程序釋放資源后才能成功分配。
  • 如果應用程序在 ACCEPTED 狀態時,發現資源不足,那么應用程序會進入等待狀態。在等待狀態下,應用程序不會分配任何容器,因為資源不足無法分配。
  • 如果應用程序在等待狀態中,嘗試重新分配資源,但仍然可以找到空閑資源。在這種情況下,應用程序會返回 ACCEPTED 狀態,并成功分配新的容器。
  • 如果應用程序在等待狀態中,無法重新分配資源,那么應用程序會轉移到 KILLED 或 FAILED 狀態。在這種情況下,應用程序無法分配所需的資源,因此無法完成任務。

2)任務超時時間配置

任務等待超時時間:

  • 在YARN中,任務等待資源的超時時間可以由任務提交者指定(優先級高),并且也可以在應用程序的配置文件(例如mapred-site.xml或yarn-site.xml)中進行設置。超時時間指定的是任務等待資源的最長時間,如果在此期間內無法獲得所需的資源,則任務將被標記為失敗。
  • 在默認情況下,任務等待資源的超時時間是YARN調度器指定的一個全局值,可以在yarn-site.xml配置文件中進行設置。該全局值的默認值是600000毫秒(10分鐘)。但也可以針對某個具體任務的特定需求進行調整,方法是在提交任務時構造一個ResourceRequest對象,并指定該對象的超時時間。

在YARN中,可以通過配置文件設置任務等待資源的超時時間,其中包括 mapred-site.xml 和 yarn-site.xml 兩個文件。

1、yarn-site.xml 文件中配置超時時間

在 yarn-site.xml 文件中,可以設置以下兩個參數來控制任務等待資源的超時時間:

  • yarn.nodemanager.resource.timeout-ms:這個參數定義了節點管理器等待應用程序可能需要的資源的最長時間。如果等待時間超過此限制,則節點管理器會殺死該應用程序。默認值為10分鐘(600000毫秒)。
  • yarn.resourcemanager.resource-tracker.client.thread-count:這個參數定義了資源管理器向節點管理器發送請求的線程數。通過增加這個參數,可以提高資源管理器向節點管理器發送請求的并發性能,從而減少任務等待的時間。

2、mapred-site.xml 文件中配置超時時間

在 mapred-site.xml 文件中,可以設置以下參數來控制 MapReduce 作業等待資源的超時時間:

  • mapreduce.client.completion.pollinterval:這個參數定義了客戶端輪詢作業的完成狀態的時間間隔。默認值為5000毫秒。
  • mapreduce.client.progressmonitor.pollinterval:這個參數定義了客戶端輪詢作業的進度狀態的時間間隔。默認值為1000毫秒。

在這兩個文件中,都可以使用默認值,也可以根據實際需求進行調整。當然也可以在程序中設定超時時間,示例代碼如下:

ResourceRequest resReq = Records.newRecord(ResourceRequest.class);
resReq.setResourceName(capability.getResourceName());
resReq.setCapability(capability);
resReq.setNumContainers(numContainers);
resReq.setRelaxLocality(relaxLocality);
resReq.setPriority(priority);
//設置最長等待時間為30分鐘,即1800000毫秒
resReq.setTimeout(1800000);
appAttemptID.setAttemptId(appAttemptNumber);
amClient.addContainerRequest(resReq);

綜上所述,在應用程序和資源的狀態變化中,資源不足是一個常見的問題。在處理這種情況時,YARN會對應用程序的狀態進行調整,以盡可能適應現有的資源情況。在使用YARN進行任務調度和管理時,需要注意資源分配情況,并根據實際情況進行調整,以確保任務能夠順利運行和完成。

三、環境準備

如果已經有了環境了,可以忽略,如果想快速部署環境進行測試可以參考我這篇文章:通過 docker-compose 快速部署 Hive 詳細教程

# 登錄容器
docker exec -it hive-hiveserver2 bash
# 連接hive
beeline -u jdbc:hive2://hive-hiveserver2:10000  -n hadoop

四、Yarn 工作流程

YARN主要由 ResourceManager、NodeManager、ApplicationMaster 和 Container 等組件構成。

當用戶給Yarn提交了一個應用程序后,Yarn的主要工作流程如下圖:

  • 【步驟1】用戶向Yarn提交應用程序,其中包括用戶程序、相關文件、啟動 ApplicationMaster 命令、 ApplicationMaster程序等。
  • 【步驟2】ResourceManager為該應用程序分配第一個Container,并且與Container所在的NodeManager通信,并且要求該NodeManager在這個Container中啟動應用程序對應的ApplicationMaster。
  • 【步驟3】ApplicationMaster 首先會向 ResourceManager 注冊,這樣用戶才可以直接通過 ResourceManager 查看到應用程序的運行狀態,然后它為準備為該應用程序的各個任務申請資源,并監控它們的運行狀態直到運行結束,即重復后面4~7步驟。
  • 【步驟4】ApplicationMaster 采用輪詢的方式通過 RPC 協議向 ResourceManager 申請和領取資源。
  • 【步驟5】一旦 ApplicationMaster 申請到資源后,便會與申請到的 Container 所對應的 NodeManager 進行通信,并且要求它在該Container中啟動任務。
  • 【步驟6】任務啟動。NodeManager 為要啟動的任務配置好運行環境,包括環境變量、JAR包、二進制程序等,并且將啟動命令寫在一個腳本里,通過該腳本運行任務。
  • 【步驟7】各個任務通過 RPC 協議向其對應的 ApplicationMaster 匯報自己的運行狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行狀態,從而可以再任務運行失敗時重啟任務。
  • 【步驟8】應用程序運行完畢后,其對應的ApplicationMaster會向ResourceManager通信,要求注銷和關閉自己。

這個需要注意的是在整個工作流程當中,ResourceManager 和 NodeManager 都是通過心跳保持聯系的,NodeManager 會通過心跳信息向 ResourceManager 匯報自己所在節點的資源使用情況。

五、Yarn 常用命令

下面是YARN常用命令的一些示例:

1)查看應用程序

# 查看在運行的任務
yarn application -list

# 查看所有任務
yarn application -list -appStates ALL
# 狀態值:ALL,NEW,NEW_SAVING,SUBMITTED,ACCEPTED,RUNNING,FINISHED,FAILED,KILLED

該命令用于顯示當前正在運行中的所有應用程序的列表,包括應用程序ID、名稱、用戶、隊列、開始時間、結束時間、狀態等信息。

  • 查看YARN應用程序的狀態:
yarn application -status <Application ID>

# 示例:
yarn application -status application_1683209715059_0002

該命令用于查看指定 Application ID 的應用程序的狀態。可以查看應用程序的名稱、用戶、隊列、開始時間、結束時間、狀態、進度等信息。

3)查看指定應用程序的日志

yarn logs -applicationId <Application ID>

#示例:
yarn logs -applicationId application_1683209715059_0002

該命令用于查看指定應用程序的日志。可以使用該命令查看應用程序在運行過程中輸出到 STDOUT 和STDERR 的所有日志信息。

4)查看NodeManager ID

使用以下命令查看YARN集群中所有NodeManager的狀態:

yarn node -list

該命令將顯示所有NodeManager節點的狀態,包括主機名,HTTP地址,狀態,容器數量等信息。

5)查看指定NodeManager的日志

# 查看<Application ID>
yarn application -list -appStates ALL

# 查看<NodeManager ID>
yarn node -list

# 再查看日志
yarn logs -applicationId <Application ID> -nodeId <NodeManager ID>

# 示例:
yarn logs -applicationId application_1683209715059_0002 hadoop-yarn-nm-0:40140

該命令用于查看指定NodeManager上指定應用程序的日志。可以使用該命令查看節點管理器(NodeManager)在運行過程中輸出到 STDOUT 和 STDERR 的所有日志信息。

6)殺死指定應用程序

# 查看在運行的任務
yarn application -list

# kill 任務
yarn application -kill <Application ID>

# 示例:
yarn application -kill application_1683209715059_0002

該命令用于殺死指定 Application ID 的應用程序。如果應用程序正在運行,則它將被強制終止并結束。

7)服務啟停命令

1、啟停YARN服務

# 包括RM,NM,啟動
start-yarn.sh

# 停止
stop-yarn.sh

2、啟停YARN resourcemanager、NM服務

# 啟動 resourcemanager
yarn --daemon start resourcemanager
# 停止 resourcemanager
yarn --daemon stop  resourcemanager

# 啟動 nodemanager
yarn --daemon start  nodemanager
# 停止 nodemanager
yarn --daemon stop  nodemanager

# 指定日志級別,有 DEBUG、INFO、WARN、ERROR等級別。
#示例:
yarn --loglevel DEBUG --daemon start resourcemanager

8)啟停YARN proxyserver 服務

YARN Proxy可以讓您通過Web界面對集群進行監視和管理,而不必直接連接到每個節點。YARN Proxy服務是一個Web代理服務器,運行在YARN集群之外,并提供對集群資源管理器和節點管理器的訪問。您可以通過代理訪問Web界面,查看群集使用情況和任務執行狀況。

yarn --daemon start proxyserver

這里就不展開講解YARN proxyserver 服務,后面有單獨講解。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2014-04-16 11:01:07

SparkYarn

2014-01-06 11:26:38

ApacheMesos

2014-01-06 17:41:44

ApacheMesos

2019-12-12 15:39:28

大數據IT互聯網

2018-04-11 06:31:24

大數據架構數據分析Hadoop

2019-08-23 15:55:27

架構大數據BI系統

2023-07-27 07:03:24

MySQL存儲SQL

2012-05-09 09:27:54

大數據PaaSMapReduce

2015-01-06 09:11:54

TCP

2020-01-09 10:47:15

HDFS數據文件

2017-01-04 10:12:15

大數據農業氣候

2012-02-15 14:49:27

云計算大數據

2018-10-24 14:32:15

數據分析數據科學算法

2016-12-23 21:15:03

大數據思維模式變化

2021-02-22 10:55:59

大數據大數據平臺數據平臺建設

2023-05-09 07:46:32

2018-12-07 14:50:35

大數據數據采集數據庫

2020-12-17 19:15:48

大數據大數據平臺架構數據平臺建設

2021-07-21 10:42:00

大數據數據分析證券交易
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久精品一区二区三区 | 韩日一区二区三区 | 久热久| 成人性生交大片免费看中文带字幕 | 一区二区不卡高清 | 水蜜桃亚洲一二三四在线 | 精品成人av | 成人精品一区二区户外勾搭野战 | 久久在线 | 国产1区2区| 国产精品激情 | 欧美久久精品一级黑人c片 91免费在线视频 | 亚洲精品一区二区三区 | 激情网站在线观看 | 成人h动漫精品一区二区器材 | 国产精品1区2区 | 91在线精品视频 | 久久久久久免费毛片精品 | 国产精品久久久乱弄 | 国产伦精品一区二区三区视频金莲 | 国产精品美女久久久 | 91久久久精品国产一区二区蜜臀 | 日日噜噜噜夜夜爽爽狠狠视频, | 欧美成人精品一区二区男人看 | 国产精品成人av | 日韩不卡在线 | 欧美一级二级在线观看 | 天堂亚洲网 | 国产中的精品av涩差av | 91精品国产乱码久久蜜臀 | 国产视频中文字幕 | 国产一区二区三区色淫影院 | 精品久久久久香蕉网 | 毛色毛片免费看 | 日本 欧美 三级 高清 视频 | 欧美激情欧美激情在线五月 | 久久综合一区二区三区 | 国产精品18毛片一区二区 | 一区二区三区在线 | 日韩精品一区二区三区在线播放 | 日韩在线看片 |