揭祕Apache Hadoop YARN,第二部分:全局配置基礎

原文:Untangling Apache Hadoop YARN, Part 2: Global Configuration Basics

揭秘Apache Hadoop YARN,第二部分:全局配置基礎

http://blog.cloudera.com/blog/2015/10/untangling-apache-hadoop-yarn-part-2/

在本系列的第1部分,我們介紹了YARN集群的基本原理。在第2部分中,您將瞭解在集群上運行的其他組件以及它們如何影響YARN集群配置。

理想的YARN資源分配

上一篇文章所說,YARN集群可以配置為使用集群上的所有資源。

實際的YARN資源分配

在實際情況中,有兩個原因不能讓YARN使用全部資源:

1.非Apache Hadoop服務也需要在節點上運行(日常開銷)。

2.其他與Hadoop相關的組件需要專用資源,不能與YARN共享(如運行CDH時)。

操作系統(日常開銷)

任何節點需要一個操作系統才能工作。運行任何操作系統都需要預留一些資源。最常見的Hadoop操作系統是Linux。

Cloudera Manager Agents (管理)

Cloudera Manager是Cloudera的CDH集群管理工具。 Cloudera Manager Agent是在每個工作節點上運行的程序,用於跟蹤其運行狀況並處理其他管理任務(如配置部署)。

HDFS 集群 (必須) (Master/NameNode, Worker/DataNode)

這篇文章有意地省略了HDFS的任何討論,HDFS是一個必需的Hadoop組件。對於我們講述的內容而言,記住以下兩點:

  • Master節點守護程序稱為NameNode
  • Worker節點守護程序稱為DataNode

對於Hadoop安裝,Cloudera建議HDFS DataNode和YARN NodeManager在集群中的同一組Worker節點上運行。 DataNode需要預留一些基本資源用於正確的操作。這可以在下面的Figure 1中看到。

揭秘Apache Hadoop YARN,第二部分:全局配置基礎

HBase 集群需求 (CDH)

如果集群配置為使用Apache HBase,則應為RegionServer預留每個工作節點上的資源。預留的內存量儘可能大。

Impala 集群需求 (CDH)

如果集群配置為使用Impala,則應為Impala後臺守護進程留出每個工作節點上的資源。預留的內存量儘可能大。

YARN NodeManagers (必須)

NodeManager還需要預留一些資源以便正常操作。

分配剩餘的資源給YARN

一旦將資源分配給上述各種組件,剩餘的可以分配給YARN。 (注意:本文沒有具體的建議,因為一個節點的硬件規格隨著時間的推移而持續改進,具體數字的例子請參考這個調優指南 http://tiny.cloudera.com/yarn-tuning-guide;還可以參考Tuning the Cluster for MapReduce v2 (YARN) http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/cdh_ig_yarn_tuning.html

應用配置

計算最終配置後,可以在yarn-site.xml或Cloudera Manager的YARN Configuration部分中輸入。一旦這些屬性配置到集群中,您可以驗證它們。

在RM UI中驗證YARN配置

如前所述,在ResourceManager有YARN集群上可用資源的快照。

示例:假設您在50個Worker節點上具有以下配置:

1.yarn.nodemanager.resource.memory-mb = 90000

2.yarn.nodemanager.resource.vcores = 60

計算下來你群集的總資源是:

1.memory: 5090GB=4500GB=4.5TB

2.vcores: 5060 vcores= 3000 vcores

在ResourceManager Web UI頁面上,集群指標表顯示集群的總內存和總vcores,如下圖所示:

揭秘Apache Hadoop YARN,第二部分:全局配置基礎

容器配置

此時,YARN集群根據資源正確設置。 YARN使用這些資源進行分配,並對集群實施限制。

  • YARN 容器內存限制

最小: yarn.scheduler.minimum-allocation-mb

最大: yarn.scheduler.maximum-allocation-mb

  • YARN 容器VCore 限制

最小: yarn.scheduler.minimum-allocation-vcores

最大: yarn.scheduler.maximum-allocation-vcores

  • YARN 容器分配大小增加值

內存提升: yarn.scheduler.increment-allocation-mb

VCore 提升: yarn.scheduler.increment-allocation-vcores

Container限制及建議值:

  • Memory 屬性:

yarn.scheduler.minimum-allocation-mb最低值為0

任何內存大小調整屬性必須小於或等於yarn.nodemanager.resource.memory-mb

最大值必須大於或等於最小值。

  • VCore 屬性:

yarn.scheduler.minimum-allocation-vcores最低值為0

任何vcore大小調整屬性必須小於或等於yarn.nodemanager.resource.vcores

最大值必須大於或等於最小值

對yarn.scheduler.increment-allocation-vcores的建議值為1。較高的值可能比較浪費。

注意,在YARN配置中有一些非常易犯的錯誤。如果容器內存請求最小值(yarn.scheduler.minimum-allocation-mb)大於每個節點(yarn.nodemanager.resource.memory-mb)可用的內存,那麼YARN將不可能滿足該請求。類似參數有yarn.scheduler.minimum-allocation-vcores。

MapReduce 配置

Map任務內存屬性為mapreduce.map.memory.mb。 Reduce任務的內存屬性是mapreduce.reduce.memory.mb。由於這兩種類型的任務必須適合容器,所以該值應小於容器最大大小。 (我們不會詳細介紹Java和影響啟動Java虛擬機的YARN屬性,它們可能會在以後的文章中討論)。

ApplicationMaster內存配置

屬性yarn.app.mapreduce.am.resource.mb用於設置ApplicationMaster的內存大小。由於ApplicationMaster必須適合容器,該屬性應小於容器最大值

總結

本文主要內容:

1.瞭解YARN專用群集情況下的基本群集配置。

2.實際在開始配置YARN群集時,要考慮到其它服務,防止將所有資源分配給YARN,考慮以下配置:

操作系統開銷(Linux,Windows)

管理服務,例如Cloudera Manager Agent

必要的服務,如HDFS

Master/Worker服務(HBase,Impala)

剩餘資源給YARN。

3.知道在哪裡查看集群的配置。

4.瞭解需要進一步調整基於在群集上運行的應用程序的分析。還有請注意可能有其他配置開銷沒有列在此帖中。

下一步

第三部分我們將介紹YARN的基本調度。


分享到:


相關文章: