本地提交到yarn_Hadoop(四) Yarn
Yran架構
Yarn架構圖.pngResourceManager(rm):處理客戶端請求,啟動/監控ApplicationMaster,監控NodeManager、資源分配與調度。
NodeManager(nm):單個節點上的資源管理、處理來自RM的命令、處理來自AppMaster的的命令
ApplicationMaster(am):數據切片、為應用程序申請資源,被分配內部任務、任務監控與容錯。
Container:對任務運行環境的抽象,封裝了CPU、內存等資源以及環境變量、啟動命令等任務運行相關信息
Yarn任務提交(工作機制)
Yarn的工作機制.png作業提交過程之YARN
第12步:MR向兩個接收到任務的NodeManager發送程序啟動腳本,這兩個NodeManager 分別啟動MapTask,MapTask對數據分區排序。
第13步:MrAppMaster等待所有MapTask運行完畢后,向RM申請容器,運行ReduceTask。
第14步:ReduceTask向MapTask獲取相應分區的數據。
第15步:程序運行完畢后,MR會向RM申請注銷自己。
第10步:MrAppMaster向RM申請運行多個MapTask任務資源。
第11步:RM將運行MapTask任務分配給另外兩個NodeManager,另兩個NodeManager分 別領取任務并創建容器。
第6步:當RM收到Client的請求后,將該job添加到容量調度器中。
第7步:某一個空閑的NM領取到該Job。
第8步:該NM創建Container,并產生MRAppmaster。
第9步:下載Client提交的資源到本地。
第1步:Client調用job.waitForCompletion方法,向整個集群提交MapReduce作業。
第2步:Client向RM申請一個作業id。
第3步:RM給Client返回該job資源的提交路徑和作業id。
第4步:Client提交jar包、切片信息和配置文件到指定的資源提交路徑。
第5步:Client提交完資源后,向RM申請運行MrAppMaster。
作業提交
作業初始化
任務分配
任務運行
進度和狀態更新 ?YARN中的任務將其進度和狀態返回給應用管理器, 客戶端每秒(通過mapreduce.client.progressmonitor.pollinterval設置)向應用管理器請求進度更新, 展示給用 戶
作業完成 ?除了向應用管理器請求作業進度外, 客戶端每5秒都會通過調用waitForCompletion()來檢查作業是否完成。時間間隔可以通過mapreduce.client.completion.pollinterval來設置。作業完 成之后, 應用管理器和Container會清理工作狀態。作業的信息會被作業歷史服務器存儲以備 之后用戶核查。
Yarn調度策略
Hadoop作業調度器主要有三種:FIFO、Capacity Scheduler和Fair Scheduler。Hadoop2.9.2默認的資 源調度器是Capacity Scheduler。
FIFO:先進先出調度器
Capacity Scheduler 容量調度器
Apache Hadoop默認使用的調度策略。Capacity 調度器允許多個組織共享整個集群,每個組織可 以獲得集群的一部分計算能力。通過為每個組織分配專門的隊列,然后再為每個隊列分配一定的集 群資源,這樣整個集群就可以通過設置多個隊列的方式給多個組織提供服務了。除此之外,隊列內 部又可以垂直劃分,這樣一個組織內部的多個成員就可以共享這個隊列資源了,在一個隊列內部, 資源的調度是采用的是先進先出(FIFO)策略。
Fair Scheduler 公平調度器
Fair調度器的設計目標是為所有的應用分配公平的資源(對公平的定義可以通過參數來設置)。公平調度也可以在多個隊列間工作。舉個例子,假設有兩個用戶A和B,他們分別擁有一個隊列。當A啟動一個job而B沒有任務時,A會獲得全部集群資源;當B啟動一個job后,A的job會繼續運 行,不過一會兒之后兩個任務會各自獲得一半的集群資源。如果此時B再啟動第二個job并且其它 job還在運行,則它將會和B的第一個job共享B這個隊列的資源,也就是B的兩個job會用于四分之 一的集群資源,而A的job仍然用于集群一半的資源,結果就是資源最終在兩個用戶之間平等的共 享
Yarn多租戶資源隔離配置
Yarn集群資源設置為A,B兩個隊列,
A隊列設置占用資源70%主要用來運行常規的定時任務,
B隊列設置占用資源30%主要運行臨時任務,
兩個隊列間可相互資源共享,假如A隊列資源占滿,B隊列資源比較充裕,A隊列可以使用B隊列的 資源,使總體做到資源利用最大化.
選擇使用Fair Scheduler調度策略!!
配置yarn.xml
2<property>
3????<name>yarn.resourcemanager.scheduler.classname>??????
4??<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairSchedulervalue>
5????<description>In?case?you?do?not?want?to?use?the?default?schedulerdescription>
6property>
在Hadoop安裝目錄的/etc/hadoop創建fair-scheduler.xml文件
1<?xml ?version="1.0"?encoding="UTF-8"?standalone="yes"?>2<allocations>
3????<defaultQueueSchedulingPolicy>fairdefaultQueueSchedulingPolicy>
4????<queue?name="root"?>
5????????<queue?name="default">
6??????????????
7????????????<aclAdministerApps>*aclAdministerApps>
8??????????????
9????????????<aclSubmitApps>*aclSubmitApps>
10??????????????
11????????????<maxResources>9216?mb,4?vcoresmaxResources>
12????????????<maxRunningApps>100maxRunningApps>
13??????????????
14????????????<minResources>1024?mb,1vcoresminResources>
15????????????<minSharePreemptionTimeout>1000minSharePreemptionTimeout>
16????????????<schedulingPolicy>fairschedulingPolicy>
17????????????<weight>7weight>
18????????queue>
19????????<queue?name="queue1">
20????????????<aclAdministerApps>*aclAdministerApps>
21????????????<aclSubmitApps>*aclSubmitApps>
22????????????<maxResources>4096?mb,4vcoresmaxResources>
23????????????<maxRunningApps>5maxRunningApps>
24????????????<minResources>1024?mb,?1vcoresminResources>
25????????????<minSharePreemptionTimeout>1000minSharePreemptionTimeout>
26????????????<schedulingPolicy>fairschedulingPolicy>
27????????????<weight>3weight>
28????????queue>
29????queue>
30????<queuePlacementPolicy>
31????????<rule?create="false"?name="specified"/>
32????????<rule?create="true"?name="default"/>
33????queuePlacementPolicy>
34allocations>
NameNode 如何支撐高并發訪問
分段鎖
雙緩沖機制
NameNode 如何支撐高并發訪問
在Hadoop安裝目錄的/etc/hadoop創建fair-scheduler.xml文件
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的本地提交到yarn_Hadoop(四) Yarn的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux 总数 进程_linux性能监
- 下一篇: 2接口详解_TS入门笔记2——TS接口进