Spark(18)Yarn-概述

Hadoop三大核心組件:HDFS、MapReduce和YARN

Yarn的概念

YARN(Yet Another Resource Negotiator,另一種資源協調者)是一個通用資源管理系統和調度平臺,可為上層應用提供統一的資源管理和調度。它的引入為集群在利用率,資源統一管理和數據共享等方面帶帶了巨大好處。

資源管理系統:集群的硬件資源,和程序運行相關,比如:內存,CPU等。

調度平臺:多個程序同時申請計算資源如何分配,調度的規則(算法)。

通用:不僅僅支持Mapredcue程序,理論上支持各種計算程序。YARN不關心你干什么,只關心你要資源,在有的情況下給你,用完了之后還給我。

可以把YARN理解為一個分布式操作系統平臺,而MapReduce等計算程序則相當于運行于操作系統之上的應用程序,YARN為這些程序提供運算所需要的資源。

二)yarn架構

yarn是如何完成這些任務的呢?我們來看它的架構圖。

ResourceManager(RM): YARN集群中的主角色,決定系統中所有應用程序之間資源分配的最終權限,即最終仲裁者。接收用戶的作業提交,并通過NM分配,管理各個機器上的計算資源。

NodeManager(NM)。YARN中的從角色,一臺機器上一個,負責管理本機器上的計算資源。根據RM命令,啟動Container容器,監視容器的資源使用情況。并且向RM主角色匯報資源使用情況。

ApplicationMaster(AM)。用戶提交的每個應用程序均包含一個AM。應用程序內的“老大”,負責程序內部各階段的資源申請,監督程序的執行情況。

ResourceManager,NodeManager 是集群物理層面的組件,ApplicationMaster(App Mstr) 是App層面的組件。 以上叫yarn的三大組件。

4臺機器,兩個客戶端

Client: 提交程序的一端。

Container容器:每臺機器上都可能會有若干個容器,它是硬件資源的抽象。在一臺機器上運行多個程序,如何保證程序之間它們相互不干擾?通過容器。一臺機器上有很多的容器,有的容器大,有的容器小。

(三)核心流程

上面的流程圖中,有四個核心交互流程

  1. MR作業提交 Client-->RM
  2. 資源的申請 AppMaster-->RM
  3. MR作業狀態匯報 Container(Map|Reduce Task)-->Container(AppMaster)
  4. 節點的狀態匯報 NM-->RM

四)整體概述

當用戶向 YARN 中提交一個應用程序后, YARN將分兩個階段運行該應用程序 。

第一個階段是客戶端申請資源啟動運行本次程序的ApplicationMaster

第二個階段是由ApplicationMaster根據本次程序內部具體情況,為它申請資源,并監控它的整個運行過程,直到運行完成。

五)MR提交YARN詳細流程

第1步、用戶通過客戶端向YARN中ResourceManager提交應用程序(比如hadoop jar提交MR程序);

第2步、ResourceManager為該應用程序分配第一個Container(容器),并與對應的NodeManager通信,要求

它在這個Container中啟動這個應用程序的ApplicationMaster。

第3步、ApplicationMaster啟動成功之后,首先向ResourceManager注冊并保持通信,這樣用戶可以直接通過ResourceManage查看應用程序的運行狀態(處理了百分之幾);

第4步、AM為本次程序內部的各個Task任務向RM申請資源,并監控它的運行狀態;

第5步、一旦 ApplicationMaster 申請到資源后,便與對應的 NodeManager 通信,要求它啟動任務。

第6步、NodeManager 為任務設置好運行環境后,將任務啟動命令寫到一個腳本中,并通過運行該腳本啟動任務

第7步、各個任務通過某個 RPC 協議向 ApplicationMaster 匯報自己的狀態和進度,以讓 ApplicationMaster 隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務。在應用程序運行過程中,用戶可隨時通過RPC 向 ApplicationMaster 查詢應用程序的當前運行狀態。

第8步、應用程序運行完成后,ApplicationMaster 向 ResourceManager 注銷并關閉自己。

(六)調度器策略

在理想情況下,應用程序提出的請求將立即得到YARN批準。但是實際中,資源是有限的,并且在繁忙的群集上, 應用程序通常將需要等待其某些請求得到滿足。YARN調度程序的工作是根據一些定義的策略為應用程序分配資源。

在YARN中,負責給應用分配資源的就是Scheduler,它是ResourceManager的核心組件之一。Scheduler完全專用于調度作業,它無法跟蹤應用程序的狀態。

一般而言,調度是一個難題,并且沒有一個“最佳”策略,為此,YARN提供了多種調度器和可配置的策略供選擇

(七)三種調度器?

提供了三種調度器:

  1. FIFO Scheduler(先進先出調度器)
  2. Capacity Scheduler(容量調度器)
  3. Fair Scheduler(公平調度器)

Apache版本YARN默認使用Capacity Scheduler。如果需要使用其他的調度器,可以在在配置文件中去修改。具體修改的信息是:yarn-site.xml中的yarn.resourcemanager.scheduler.class進行配置。

(1)FIFO Scheduler?先進先出調度器

FIFO Scheduler是Hadoop1.x中JobTracker原有的調度器實現,此調度器在YARN中保留了下來。

FIFO Scheduler是一個先進先出的思想,即先提交的應用先運行。調度工作不考慮優先級和范圍,適用于負載較低的小規模集群。當使用大型共享集群時,它的效率較低且會導致一些問題。

FIFO Scheduler擁有一個控制全局的隊列queue,默認queue名稱為default,該調度器會獲取當前集群上所有的 資源信息作用于這個全局的queue。

優勢: 無需配置、先到先得、易于執行

壞處: 任務的優先級不會變高,因此高優先級的作業需要等待;不適合共享集群

(2)Capacity Scheduler容量調度

Capacity Scheduler容量調度是Apache Hadoop3.x默認調度策略。該策略允許多個組織共享整個集群資源,每個組織可以獲得集群的一部分計算能力。通過為每個組織分配專門的隊列,然后再為每個隊列分配一定的集群資源, 這樣整個集群就可以通過設置多個隊列的方式給多個組織提供服務了。

Capacity可以理解成一個個的資源隊列,這個資源隊列是用戶自己去分配的。隊列內部又可以垂直劃分,這樣一個組織內部的多個成員就可以共享這個隊列資源了,在一個隊列內部,資源的調度是采用的是先進先出(FIFO)策略。

(3)Fair Scheduler公平調度器?

Fair Scheduler叫做公平調度,提供了YARN應用程序公平地共享大型集群中資源的另一種方式。使所有應用在平均情況下隨著時間的流逝可以獲得相等的資源份額。

Fair Scheduler設計目標是為所有的應用分配公平的資源(對公平的定義通過參數來設置)。

公平調度可以在多個隊列間工作,允許資源共享和搶占。

如何理解公平共享?

有兩個用戶A和B,每個用戶都有自己的隊列。

  1. A啟動一個作業,由于沒有B的需求,它分配了集群所有可用的資源。
  2. 然后B在A的作業仍在運行時啟動了一個作業,經過一段時間,A,B各自作業都使用了一半的資源。
  3. 現在,如果B用戶在其他作業仍在運行時開始第二個作業,它將與B的另一個作業共享其資源,因此B的每個作業將擁有資源的四分之一,而A繼續將擁有一半的資源。結果是資源在用戶之間公平地共享

(八)設置隊列,并提交任務到不同的隊列執行?

理論介紹完了,我們來看一下提交任務到不同隊列的操作步驟。

  1. 停止服務。 使用命令:myhadoop stop
  2. 進入hadoop100節點,修改配置文件hadoopcapacity-scheduler.xml(調度器),它所在的位置是:/opt/module/hadoop-3.1.3/etc/hadoopcapacity-scheduler.xml。內容修改如下:設置三個隊列:default, production, test分別占用20,60,20的資源。

?

補充的配置如下。

?<property>

????<name>yarn.scheduler.capacity.root.queues</name>

????<value>default,production,test</value>

??</property>

??<property>

????<name>yarn.scheduler.capacity.root.default.capacity</name>

????<value>20</value>

??</property>

??<property>

????<name>yarn.scheduler.capacity.root.production.capacity</name>

????<value>60</value>

??</property>

??<property>

????<name>yarn.scheduler.capacity.root.test.capacity</name>

????<value>20</value>

??</property>

  1. 把配置文件同步給其他機器。 對應的命令是:
    xsync /opt/module/hadoop-3.1.3/etc/hadoop
  2. 重新啟動服務。 對應的命令是: myhadoop start
  3. 運行wordcount任務,并手動設置提交的隊列名字。

cd /opt/module/hadoop-3.1.3/share/hadoop/mapreduce?# 切換目錄

hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount -Dmapred.job.queue.name=test ?/cinput /out2

上面的-Dmapred.job.queue.name=test中,test就是我們指定的運行本任務的隊列的名字。

隊列可以被看作是任務的等待區域,就像現實生活中人們排隊等待服務一樣。在 Hadoop 集群中,當有多個 MapReduce 或其他類型的任務同時提交時,這些任務會被放入不同的隊列中等待資源分配和執行。每個隊列都有自己的屬性和規則,用于控制任務的調度和資源分配。

提交任務到指定在隊列中

-Dmapred.job.queue.name=yourQueueName 設置要提交的任務運行在哪個隊列中。

hadoop jar xxx.jar mrDriver -Dmapred.job.queue.name=yourQueueName inputPath outputPath

hadoop jar hadoop-mapreduce-examples-3.1.3.jar wordcount -Dmapred.job.queue.name=test /wcinput /outp62

6.查看結果

打開瀏覽器,輸入http://hadoop101:8088/cluster

如上的test, default就隊列的名稱。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79885.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Flowith AI,解鎖下一代「知識交易市場」

前言 最近幾周自媒體號都在瘋狂推Manus&#xff0c;看了幾篇測評后&#xff0c;突然在某個時間節點&#xff0c;在特工的文章下&#xff0c;發現了很小眾的Flowith。 被這段評論給心動到&#xff0c;于是先去注冊了下賬號。一翻探索過后&#xff0c;發現比我想象中要有趣的多&…

Maxscript調用Newtonsoft.Json解析Json

Maxscript調用Newtonsoft.Json解析Json_newtonsoft.json maxscript-CSDN博客

搭建用友U9Cloud ERP及UAP IDE環境

應用環境 Microsoft Windows 10.0.19045.5487 x64 專業工作站版 22H2Internet Information Services - 10.0.19041.4522Microsoft SQL Server 2019 - 15.0.2130.3 (X64)Microsoft SQL Server Reporing Services 2019 - 15.0.9218.715SQL Server Management Studio -18.6 laster…

github新建一個遠程倉庫并添加了README.md,本地git倉庫無法push

1.本地git倉庫與遠程倉庫綁定 2.push時報錯&#xff0c;本地的 main 分支落后于遠程倉庫的 main 分支&#xff08;即遠程有更新&#xff0c;但你本地沒有&#xff09;&#xff0c;需要拉取遠程的倉庫--->在merge合并&#xff08;解決沖突&#xff09;--->push 3.但是git …

我用deepseek做了一個提取壓縮文件夾下pdf和word文件工具

由于最近需要把大量的壓縮文件的pdf和word文件統一復制到一個文件夾中。 我們一般正常操作方式的是把一個壓縮文件一個一個解壓&#xff0c;然后在把一個的解壓好的文件夾下文件復制到另外一個文件夾中。 這個也需太繁瑣了&#xff0c;從以往統計的需要花費兩個小時間&#x…

企業網絡安全合規風險高、運營不穩定,要怎么解決?

在數字化浪潮中&#xff0c;數據已然成為企業的核心資產&#xff0c;其重要性不言而喻。然而&#xff0c;數據泄露風險也時刻威脅著企業的生存與發展。不少企業在歷經數據泄露的慘痛教訓后&#xff0c;紛紛選擇部署數據防泄露系統。那么&#xff0c;企業部署數據防泄露系統前后…

C#—Lazy<T> 類型(延遲初始化/懶加載模式)

C# 的 Lazy<T> 類型 Lazy<T> 是 C# 中的一個類&#xff0c;用于實現延遲初始化&#xff08;懶加載&#xff09;模式。它提供了一種線程安全的方式來延遲創建大型或資源密集型對象&#xff0c;直到第一次實際需要時才進行初始化。 主要特點 延遲初始化&#xff1a…

C++之unordered封裝

目錄 一、哈希表的修改 1.1、哈希表節點結構 1.2、迭代器 1.3、哈希表結構 1.4、完整代碼 二、unordered_map的實現 二、unordered_set的實現 一、哈希表的修改 注意&#xff1a;這里我們使用哈希桶來封裝unordered_map和unordered_set。 1.1、哈希表節點結構 templa…

[滲透測試]滲透測試靶場docker搭建 — —全集

[滲透測試]滲透測試靶場docker搭建 — —全集 對于初學者來說&#xff0c;僅僅了解漏洞原理是不夠的&#xff0c;還需要進行實操。對于公網上的服務我們肯定不能輕易驗證某些漏洞&#xff0c;否則可能觸犯法律。這是就需要用到靶場。 本文主要給大家介紹幾種常見漏洞對應的靶場…

Docker如何更換鏡像源提高拉取速度

在國內&#xff0c;由于網絡政策和限制&#xff0c;直接訪問DockerHub速度很慢&#xff0c;尤其是在拉取大型鏡像時。為了解決這個問題&#xff0c;常用的方法就是更換鏡像源。本文將詳細介紹如何更換Docker鏡像源&#xff0c;并提供當前可用的鏡像源。 換源方法 方法1&#x…

第一篇:從哲學到管理——實踐論與矛盾論如何重塑企業思維

引言&#xff1a;當革命哲學照亮現代商業 1937年&#xff0c;毛澤東在戰火中寫就的《實踐論》《矛盾論》&#xff0c;為中國共產黨提供了認識世界的方法論。今天&#xff0c;這兩部著作正成為企業破解管理困局的“思維操作系統”&#xff1a; 戰略模糊&#xff1a;據Gartner統…

云原生--基礎篇-2--云計算概述(云計算是云原生的基礎,IaaS、PaaS和SaaS服務模型)

1、云計算概念 云計算是一種通過互聯網提供計算資源&#xff08;包括服務器、存儲、數據庫、網絡、軟件等&#xff09;和服務的技術模式。用戶無需擁有和維護物理硬件&#xff0c;而是可以根據需要租用這些資源&#xff0c;并按使用量付費。 2、云計算特點 &#xff08;1&am…

一級濾波器設計:IL_cmdm > 80dB

目錄 背景 目的 操作 仿真測試 搭建仿真模型 插入損耗測試 優化設計后重新測試 思考 背景 在選購共模電感時&#xff0c;規格書中通常會提供插損曲線或者阻抗-頻率曲線&#xff0c;但這些數據都是在特定條件下測試獲得的。如果將其集中在我們的樣機中性能會如何&#…

qt 配置 mysql 驅動問題:Cannot load library qsqlmysql;QMYSQL driver not loaded

項目場景&#xff1a; 環境版本&#xff1a; qt &#xff1a;5.14.2 mysql&#xff1a;8.0 windows&#xff1a;10 提示&#xff1a;qt 配置 mysql 驅動&#xff1a; 項目場景&#xff1a;qt 配置 mysql 驅動 問題描述 提示&#xff1a;這里描述項目中遇到的問題&#xff1a;…

Kubernetes相關的名詞解釋Container(16)

什么是Container&#xff1f; 在 Kubernetes 中&#xff0c;Container&#xff08;容器&#xff09; 是一個核心概念&#xff0c;你可以將鏡像&#xff08;Image&#xff09;類比為程序的“源代碼”&#xff0c;而容器是這段“代碼”運行時的進程。例如&#xff0c;一個 nginx…

學習設計模式《四》——單例模式

一、基礎概念 單例模式的本質【控制實例數目】&#xff1b; 單例模式的定義&#xff1a;是用來保證這個類在運行期間只會被創建一個類實例&#xff1b;單例模式還提供了一個全局唯一訪問這個類實例的訪問點&#xff08;即GetInstance方法&#xff09;單例模式只關心類實例的創建…

零基礎上手Python數據分析 (19):Matplotlib 高級圖表定制 - 精雕細琢,讓你的圖表脫穎而出!

寫在前面 —— 超越默認樣式,掌握 Matplotlib 精細控制,打造專業級可視化圖表 上一篇博客,我們學習了 Matplotlib 的基礎繪圖功能,掌握了如何繪制常見的折線圖、柱狀圖、散點圖和餅圖,并進行了基本的圖表元素定制,例如添加標題、標簽、圖例等。 這些基礎技能已經能讓我…

信奧中的數學

信奧賽的數學大綱 ps:知識點是其他小伙伴分享的&#xff0c;我現在在做一下系列視頻 會逐步更新&#xff0c;希望大家支持喜歡。 1.基礎數學 數論 整數和自然數 素數、合數和因數分解 最大公約數(GCD)和最小公倍數(LCM) 同余和取模運算 歐幾里得算法 擴展歐幾里得算法 中國…

PHP騰訊云人臉核身獲取Access Token

參考騰訊云官方文檔&#xff1a; 人臉核身 獲取 Access Token_騰訊云 public function getAccessToken(){$data [appId > , //WBappid,https://cloud.tencent.com/document/product/1007/49634secret > ,grant_type > client_credential, //授權類型version > 1…

《作用域大冒險:從閉包到內存泄漏的終極探索》

“愛自有天意&#xff0c;天有道自不會讓有情人分離” 大家好&#xff0c;關于閉包問題其實實際上是js作用域的問題&#xff0c;那么js有幾種作用域呢&#xff1f; 作用域類型關鍵字/場景作用域范圍示例全局作用域var&#xff08;無聲明&#xff09;整個程序var x 10;函數作用…