hadoop2.x推荐配置(译文)

看到一篇写hadoop2.x版本配置的讲解文章,感觉很不错,在此翻译一下。原文连接:https://hortonworks.com/blog/how-to-plan-and-configure-yarn-in-hdp-2-0/


作为Hadoop2.x的一部分,Yarn拥有MapReduce(hadoop1.x)中的资源管理功能并对齐进行打包,以便新引擎可以使用它们。这也简化了MapReduce,使其只进行数据处理。使用Yarn可以在Hadoop中运行多个程序,所有程序都共享一个公共资源管理。

在这篇文章中,我们将介绍如何在hdoop2.x集群中规划和配置处理能力。这将包括Yarn和MapReduce2。我们将使用一个示例物理集群,它的从节点有48GB的运行内存,12个磁盘和2个CPU核心。

Yarn会考虑集群中所有机器的可用计算资源。Yarn将协商来自集群中运行程序的资源请求。然后,Yarn通过分配容器为应用程序提供处理能力。Container是Yarn中处理能力的基本单元,是资源(cpu,内存等)的封装。

 

配置Yarn

在Hadoop集群中,平衡内存、cpu和磁盘等资源非常重要,这样处理能力不受任何一个集群资源的限制。作为一般的建议,我们发现每个磁盘和核心允许1-2个容器可以为集群利用提供最佳平衡。因此,对于有12个磁盘和12个核心的实例集群,我们允许为每个节点分配20个最大容器。

集群中每台机器有48G的内存,部分内存应保留用于操作系统。在每个节点上,我们将为Yarn分配40G的内存,为操作系统预留8G。以下属性设置Yarn可在节点上使用的最大内存:

yarn-site.xml

<name>
    yarn.nodemanager.resource.memory-mb
</name>
<value>
    40960
</value>

下一步是提供如何分解Container中可用资源总量的指南。可以通过指定为Container分配的最小内存(默认是1GB)执行此操作。我们希望最多允许20个Container。因此,每个Container最小2G(40/20).

yarn-site.xml

<name>
    yarn.scheduler.minimum-allocation-mb
</name>
<value>
    2048
</value>

通过这样配置,Yarn将分配内存大于yarn.scheduler.minimum-mb的Container。这里,没有配置Container最大可用内存(默认是8G)。

 

配置MapReduce

MapReduce运行在Yarn之上,并利用Yarn的容器分配和运行Map和Reduce任务。

在Yarn上配置MapReduce资源利用时,有三个方面需要考虑:

  • 每个Map和Reduce任务物理内存的限制
  • 每个任务的JVM堆大小限制
  • 每个任务将获得的虚拟内存量

我们可以定义每个Map和Reduce任务所占用的最大内存。由于每个Map和Reduce任务运行在单独的Container中,因此最大内存的设定应该等于或大于Yarn中最小Container分配,等于或小于最大Container分配。

在实例集群中,我们配置了最小2GB的Container。因此,我们将为Map任务分配4G,为Reduce任务分配8G(map*2)。

mapred-site.xml

<name>
    mapreduce.map.memory.mb
</name>
<value>
    4096
</value>

<name>
    mapreduce.reduce.memory.mb
</name>
<value>
    8192
</value>

每个Container都将运行JVM以执行Map和Reduce任务,jvm设置的大小应低于上面定义的Map和Reduce内存,以便它们在Yarn分配的Container内存范围内。

mapred-site.xml

<name>
    mapreduce.map.java.opts
</name>
<value>
    -Xmx3072m
</value>

<name>
    mapreduce.reduce.java.opts
</name>
<value>    
    -Xmx6144m
</value>

上述配置了Map和Reduce任务使用的物理内存上限,每个Map/Reduce任务的虚拟内存上限由允许每个Container的虚拟内存比确定。它由以下配置,默认值是2.1:

yarn-site.xml

<name>
    yarn.nodemanager.vmem-pmem-ratio
</name>
<value>
    2.1
</value>

通过以上的配置,每个Map任务将获得以下的内存分配:

  • 物理内存:4GB
  • Map任务Container中的JVM堆空间上限:3GB
  • 虚拟内存上限:4*2.1=8.4G

通过配置Yarn和MapRedue,不需要再为Map和Reduce任外务预先配置静态slot。整个集群可动态进行资源分配。在实例集群中,Yarn能够在每个节点醉倒分配10(40/4)个Map任务或5(40/8)个reduce任务。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值