CDH6.3.2之YARN生產環境調優

shkstart發表於2022-01-11

調整 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:// :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得到的

連結中,有建議的值,但是我們這是測試叢集,資源很小,生產叢集上具體見連結最後的建議值

版權宣告:本文為原創文章,轉載請附上原文出處連結及本宣告。下載相關影片學習資料到尚矽谷官方網站。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27721058/viewspace-2851686/,如需轉載,請註明出處,否則將追究法律責任。

相關文章