揭秘Apache Hadoop YARN,第2部分:全局配置基础[译]
Yarn
2019-07-14
1077
0
在本系列的第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 Cluster (Required) (Master/NameNode, Worker/DataNode)
这篇文章有意地省略了HDFS的任何讨论,HDFS是一个必需的Hadoop组件。对于我们讲述的内容而言,记住以下两点:
- Master节点守护程序称为NameNode
- Worker节点守护程序称为DataNode
对于Hadoop安装,Cloudera建议HDFS DataNode和YARN NodeManager在集群中的同一组Worker节点上运行。 DataNode需要预留一些基本资源用于正确的操作。这可以在下面的Figure 1中看到。
Figure 1: Master node with NameNode. Worker nodes with DataNode.
HBase Cluster Requirements (CDH)
如果集群配置为使用Apache HBase,则应为RegionServer预留每个工作节点上的资源。预留的内存量尽可能大。
Impala Cluster Requirements (CDH)
如果集群配置为使用Impala,则应为Impala后台驻留程序留出每个工作节点上的资源。预留的内存量尽可能大。
YARN NodeManagers (Required)
NodeManager还需要预留一些资源以便正常操作。
分配剩余的资源给YARN
一旦将资源分配给上述各种组件,剩余的可以分配给YARN。 (注意:本文没有具体的建议,因为一个节点的硬件规格随着时间的推移而持续改进,具体数字的例子请参考这个调优指南;还可以参考Tuning the Cluster for MapReduce v2 (YARN)
应用配置
计算最终属性后,可以在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,如下面的Figure 2所示。
Figure 2: Verifying YARN Cluster Resources on ResourceManager Web UI
Container 配置
此时,YARN集群根据资源正确设置。 YARN使用这些资源进行分配,并对集群实施限制。
YARN Container Memory Sizing Minimum:yarn.scheduler.minimum-allocation-mb
Maximum: yarn.scheduler.maximum-allocation-mb
YARN Container VCore Sizing Minimum: yarn.scheduler.minimum-allocation-vcores
Maximum: yarn.scheduler.maximum-allocation-vcores
YARN Container Allocation Size Increments Memory Increment: yarn.scheduler.increment-allocation-mb
VCore Increment: 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必须适合容器,该属性应小于容器最大值
Conclusion
本文我们讲述了以下事情:
1.了解YARN专用群集情况下的基本群集配置。 2.YARN群集基本配置,同时考虑防止将所有资源分配给YARN,考虑以下配置: 操作系统开销(Linux,Windows) 管理服务,例如Cloudera Manager Agent 必要的服务,如HDFS Master/Worker服务(HBase,Impala) 剩余资源给YARN。 3.知道在哪里查看集群的配置。 4.了解需要进一步调整基于在群集上运行的应用程序的分析。还有请注意可能有其他配置开销没有列在此帖中。
Next Time…
第三部分我们将介绍YARN的基本调度。
Ray Chiang是Cloudera的软件工程师。
Dennis Dawson是Cloudera的高级技术撰稿人。
原文地址Untangling Apache Hadoop YARN, Part 2: Global Configuration Basics