热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

配置Hadoop2.0的内存资源

在Hadoop2.0中,YARN负责管理MapReduce中的资源(内存,CPU等)并且将其打包成Container.这样可以精简MapReduce,使之专注于其擅长的数据处理任务,将无需考虑资源调度.如下图所示YARN会管理集群中所有机器的可用计算资源.基于这些资源YARN会调度应用(比如

在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考虑资源调度. 如下图所示 YARN会管理集群中所有机器的可用计算资源. 基于这些资源YARN会调度应用(比如


在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考虑资源调度. 如下图所示

Screen Shot 2014-05-24 at 上午11.43.46YARN会管理集群中所有机器的可用计算资源. 基于这些资源YARN会调度应用(比如MapReduce)发来的资源请求, 然后YARN会通过分配Container来给每个应用提供处理能力, Container是YARN中处理能力的基本单元, 是对内存, CPU等的封装.

本文中假设集群中每个节点的配置为48G内存, 12个硬盘, 2个hex core CPU(12 核).

1. 配置YARN


在Hadoop集群中, 平衡内存, CPU等的使用很重要, 这样才能避免整个集群的计算能力不会因为某种资源而受限. 根据Hortonworks的推荐, 每个硬盘和核1-2个Container能够达到最好的集群使用平衡. 如果集群的每个节点有12个硬盘和12个核, 那么每个节点上最好最多20个Container.

因为每个节点有48G内存, 我们为操作系统保留部分内存, 所以分配40G内存给YARN, 8G留给操作系统. 下面配置的是每个节点上YARN可以使用的最大内存.

在yarn-site.xml中
yarn.nodemanager.resource.memory-mb
40960

然后需要配置如何把这些资源分配给Container, 可以配置分配给Container的最小内存, 因为我们允许每个节点最多20个Container, 所以每个Container的内存为40G / 20 = 2G

在yarn-site.xml中
yarn.scheduler.minimum-allocation-mb
2048


2. ?配置MapReduce2


MapReduce2构建在YARN的基础之上, 使用YARN的Container来调度和运行其map和reduce任务.

在配置YARN上的MapReduce资源使用时, 需要考虑:
  1. 每个Map和Reduce任务的物理内存限制
  2. 每个任务的JVM堆栈大小
  3. 每个任务的虚拟内存

可以设置每个map和reduce任务的最大内存, 该值应该大于等于Container的最小内存. 比如前面我们设置每个Container的最小内存(yarn.scheduler.minimum-allocation-mb)为2GB, 所以我们可以设置map任务的内存为4GB, reduce任务的内存为8GB:

在mapred-site.xml中
mapreduce.map.memory.mb
4096
mapreduce.reduce.memory.mb
8192

每个Container会为每个map和reduce任务运行一个JVM, JVM的堆栈大小应该小于map和reduce的内存大小:

在mapred-site.xml中
mapreduce.map.java.opts
-Xmx3072m
mapreduce.reduce.java.opts
-Xmx6144m

前面设置的是map和reduce任务可以使用的物理内存, 而虚拟内存(物理内存+paged memory)的上限是由每个Container的虚拟内存比例决定的, 默认值为2.1:

在yarn-site.xml中:
yarn.nodemanager.vmem-pmem-ratio
2.1

根据之前的所有设置, 每个map任务的内存分配为
  • 物理内存 = 4GB
  • map任务的Container的JVM堆栈 = 3GB
  • 虚拟内存大小 = 4 * 2.1 = 8.4GB

在YARN和MapReduce2中, 除此之外没有其他的map和reduce任务的资源预配置. 整个集群可以根据作业的需要动态的分配map和reduce, 比如在本例中, YARN会配置最多10(40/4)个mapper或者5(40/8)个reducer, 或者是其他合适的组合.



参考文献:

[1].?How to Plan and Configure YARN and MapReduce 2 in HDP 2.0


推荐阅读
author-avatar
手机用户2602935405
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有