您好,登錄后才能下訂單哦!
2019/3/26 星期二
調整YARN
本主題僅適用于YARN群集,并介紹如何為群集調整和優化YARN。
注意:下載Cloudera YARN調整電子表格以幫助計算YARN配置。 有關簡短視頻概述,請參閱調整YARN應用程序。
概觀
此概述提供YARN群集的抽象描述和YARN調整的目標。
YARN群集由主機組成。 主機提供內存和CPU資源。 vcore或虛擬核心是主機CPU的使用份額。
調整YARN主要包括在工作主機上最佳地定義容器。 您可以將容器視為由內存和vcores組成的矩形圖。 容器執行任務。
有些任務使用大量內存,對大量數據的處理最少。
其他任務需要大量處理能力,但使用的內存較少。例如,蒙特卡羅模擬評估許多可能的“如果?”場景在相對較小的數據集上使用大量處理能力。
YARN ResourceManager分配內存和vcores以盡可能以最有效的方式使用所有可用資源。理想情況下,很少或沒有資源閑置。
應用程序是由一個或多個任務組成的YARN客戶端程序。通常,任務使用容器中的所有可用資源。任務不能超過其指定的分配,確保它不能使用所有主機CPU周期或超過其內存分配。
通過將容器配置為使用除開銷和其他服務所需的所有可用資源之外,調整YARN主機以優化vcores和內存的使用。
YARN調整有三個階段。這些階段對應于YARN調整電子表格中的選項卡。
????1、群集配置,您可以在其中配置主機。
????2、YARN配置,您可以量化內存和vcores。
????3、MapReduce配置,您可以為特定map和reduce任務分配最小和最大資源。
YARN和MapReduce具有許多可配置的屬性。有關完整列表,請參閱Cloudera Manager配置屬性。 YARN調整電子表格列出了這些屬性的基本子集,這些屬性最有可能提高常見MapReduce應用程序的性能。
群集配置
在Cluster Configuration選項卡中,您可以為YARN實現定義工作主機配置和群集大小。
機器配置
第1步:工作者主機配置 //表格中寫單個主機配置
在下面的輸入框中輸入您可能的機器配置。 如果您不確定您計劃購買哪種機器,請提供一些適合您預期購買的最小值。
與任何系統一樣,可用的內存和CPU資源越多,集群處理大量數據的速度就越快。 具有4個帶超線程的CPU的機器,每個CPU有6個內核,每個主機提供48個vcore。
2個單元服務器安裝中的3 TB硬盤驅動器在JBOD(Just a Bunch Of Disks)配置中有12個可用插槽,這是在創建電子表格時性能和價格之間的合理平衡。 存儲成本會隨著時間的推移而降低,因此您可能會考慮使用4 TB磁盤。 較大的磁盤價格昂貴,并非所有用例都需要。
兩個1千兆位以太網端口在電子表格發布時提供了足夠的吞吐量,但10千兆位以太網端口是價格低于速度的選擇。
第2步:工人主持人計劃
現在您已從步驟1獲得基本主機配置,請使用下表將資源(主要是CPU和內存)分配給在主機上運行的各種軟件組件。
從您的操作系統開始至少8 GB,為Cloudera Manager開始至少1 GB。 如果CDH以外的服務需要其他資源,請在“其他服務”下添加這些數字。
HDFS DataNode使用至少1個內核和大約1 GB內存。 相同的要求適用于YARN NodeManager。
電子表格列出了幾個可選服務:
???? Impala守護程序需要至少16 GB的守護程序。
???? HBase Region Servers需要12-16 GB的內存。
???? Solr服務器至少需要1 GB的內存。
???? Kudu平板電腦服務器至少需要1 GB的內存。
任何剩余資源都可用于YARN應用程序(Spark和MapReduce)。 在此示例中,有44個CPU內核可用。 在每個物理核心上設置所需的vcores乘數,以計算總可用vcores。
第3步:群集大小
定義了群集中每個主機的規范后,輸入支持業務案例所需的工作主機數。 要了解并行計算的好處,請將主機數設置為最小值10。
YARN配置
在YARN Configuration選項卡上,驗證可用資源并設置每個容器的最小和最大限制。
第4步:在群集上配置YARN
這些是群集的第一組配置值。 您可以在YARN-> Configuration中設置這些值
步驟4和5:驗證設置
步驟4從步驟2中提取內存和vcore編號。
步驟5顯示群集的總內存和vcores。
轉到資源管理器Web UI(通常是http:// <ResourceManagerIP>:8088 /并驗證“內存總計”和“Vcores Total”與上面的值匹配。如果您的機器沒有壞節點,那么數字應該完全匹配。
步驟6:驗證群集上的容器設置
為了讓YARN作業干凈地運行,您需要配置容器屬性。
在步驟6中,您可以更改影響容器大小的值。
最小vcores數應為1.當需要額外的vcores時,一次添加1將導致最有效的分配。 將vcore預留的最大數量設置為節點的大小。
設置內存的最小和最大預留。 增量應該是可以影響性能的最小量。 這里,最小值約為1 GB,最大值約為8 GB,增量為512 MB。
步驟6A:集群容器容量
本節將告訴您群集的容量(就容器而言)。
步驟6A允許您根據輸入的數字驗證群集中容器的最小和最大數量。
最大可能容器數,基于內存配置
最大可能容器數,基于vcore配置
基于每個磁盤軸2個容器的容器編號
根據內存配置,最小可能容器數
根據vcore配置,最小可能容器數
步驟6B:容器健全檢查
本節將針對主機在STEP 6中對容器參數進行一些基本檢查。
MapReduce配置
在MapReduce Configuration選項卡上,您可以規劃增加的特定于任務的內存容量。
第7步:MapReduce配置
對于CDH 5.5及更高版本,我們建議僅為map和reduce任務指定堆或容器大小。 未指定的值將根據設置mapreduce.job.heap.memory-mb.ratio計算。 此計算遵循Cloudera Manager并根據比率和容器大小計算堆大小。
步驟7A:MapReduce完整性檢查
完整性檢查MapReduce設置對容器的最小/最大屬性。
通過步驟7A,您可以一目了然地確認所有最小和最大資源分配都在您設置的參數范圍內。
連續調度
啟用或禁用連續調度會更改YARN連續或基于節點心跳調度的頻率。 對于較大的群集(超過75個節點)看到繁重的YARN工作負載,建議通常使用以下設置禁用連續調度:
???? yarn.scheduler.fair.continuous-scheduling-enabled應為false
???? yarn.scheduler.fair.assignmultiple應該是真的
在大型群集上,連續調度可能導致ResourceManager無響應,因為連續調度會遍歷群集中的所有節點。
有關連續調度調優的更多信息,請參閱以下知識庫文章:FairScheduler使用assignmultiple調整和連續調度
我們沒有75個節點,設置為yarn.scheduler.fair.continuous-scheduling-enabled 為true
yarn.scheduler.fair.assignmultiple = true
小結:
yarn中容器內存的計算方法
yarn.nodemanager.resource.memory-mb
容器虛擬 CPU 內核
yarn.nodemanager.resource.cpu-vcores
//這2個值是更具最后用到的資源剩下來 多少給yarn的
提示:如果yarn.nodemanager.resource.memory-mb=2G yarn.nodemanager.resource.cpu-vcores=2 4個節點那么在192.168.0.142:8088/cluster 界面上就會有 “Memory Total=8G” “ VCores Total=8”
最小容器內存
yarn.scheduler.minimum-allocation-mb = 1G //推薦值
最小容器虛擬 CPU 內核數量
yarn.scheduler.minimum-allocation-vcores = 1 //推薦值
最大容器內存
yarn.scheduler.maximum-allocation-mb = < yarn.nodemanager.resource.memory-mb
最大容器虛擬 CPU 內核數量
yarn.scheduler.maximum-allocation-vcores = < yarn.nodemanager.resource.cpu-vcores //推薦值
容器內存增量
yarn.scheduler.increment-allocation-mb = 512M
容器虛擬 CPU 內核增量
yarn.scheduler.increment-allocation-vcores = 1 //推薦值
ApplicationMaster 虛擬 CPU 內核
yarn.app.mapreduce.am.resource.cpu-vcores = 1 //推薦值
ApplicationMaster 內存
yarn.app.mapreduce.am.resource.mb = 1024M
ApplicationMaster Java 選項庫
yarn.app.mapreduce.am.command-opts = -Djava.net.preferIPv4Stack=true -Xmx768m
堆與容器大小之比
mapreduce.job.heap.memory-mb.ratio = 0.8 默認
Map 任務 CPU 虛擬內核
mapreduce.map.cpu.vcores = 1
Map 任務內存
mapreduce.map.memory.mb = 1024
Map 任務 Java 選項庫
mapreduce.map.java.opts = 忽視 ignored
I/O 排序內存緩沖 (MiB)
mapreduce.task.io.sort.mb = 400
Reduce 任務 CPU 虛擬內核
mapreduce.reduce.cpu.vcores = 1
Reduce 任務內存
mapreduce.reduce.memory.mb = 1024M
Reduce 任務 Java 選項庫
mapreduce.reduce.java.opts 忽視
Map 任務最大堆棧 819 //是 mapreduce.map.memory.mb 0.8
Reduce 任務最大堆棧 819M //mapreduce.reduce.memory.mb 0.8
ApplicationMaster Java 最大堆棧 819.2 //這個數字是yarn.app.mapreduce.am.resource.mb * 0.8得到的
鏈接中,有建議的值,但是我們這是測試集群,資源很小,生產集群上具體見鏈接最后的建議值
參考鏈接:
https://www.cloudera.com/documentation/enterprise/5-13-x/topics/cdh_ig_yarn_tuning.html
CDH5性能調優 http://blog.hylstudio.cn/archives/488
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。