`
linxiao
  • 浏览: 12800 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

YARN 和 MapReduce的内存分配公式

阅读更多
这个章节描述在指定的硬件节点上,如何配置YARN 和 MapReduce的内存分配设置。
YARN 考虑到了集群上每个机器的可用计算资源,在可用的资源上,YARN 负责处理运行在集群中应用(MapReduce)的资源请求。YARN 通过分配的Containers为每个应用提供计算资源,在YARN中,一个
Container是基本的计算资源(processing capacity),并且它是基础资源(内存,cpu等)的封装。
在hadoop集群中,去均衡内存,cpu和磁盘的使用是非常重要的,因此,计算处理不能被集群资源中的任何一个所限制。作为一般的推荐,允许每个硬盘和每个core对应2个Containers,这对集群的利用是最好的均衡
当决定为集群中每个节点分配适当的YARN 和 MapReduce内存时,先从可用的硬件资源开始。特别地注意每个节点上的值,如下所示:
  • RAM (内存数量)

  • CORES ( CPU cores 数量)

  • DISKS (磁盘数量)

YARN 和 MapReduce总共可用的内存,需要考虑到保留的内存,保留的内存是提供给操作系统和hadoop其他的组件来使用的(如Hbase)

保留内存 = 堆栈存储器内存( stack memory) + Hbase内存(如果Hbase和DataNode在相同的节点上)

使用下面的表格内容来决定每个节点的保留内存

每个节点总共的Memory
推荐保留的系统内存
推荐保留的Hbase内存
4 GB 
1 GB
1 GB
8 GB
2 GB
1 GB
16 GB
2 GB
2 GB
24 GB
4 GB
4 GB
48 GB
6 GB
8 GB
64 GB
8 GB
8 GB
72 GB
8 GB
8 GB
96 GB
12 GB
16 GB
128 GB
24 GB
24 GB
256 GB
32 GB
32 GB
512 GB
64 GB
64 GB

 

下一步来计算每个节点上分配的最大containers ,下面的公式可以被使用:

 container 数量 = min (2*CORES, 1.8*DISKS, (Total available RAM) / MIN_CONTAINER_SIZE)

假定 container 数量 = numbers

MIN_CONTAINER_SIZE 是最小的container 大小(RAM)。这个值依赖可用的内存数量,在较小内存节点中,container 内存最小值应该会更小,下面的表格显示了推荐的值:

每个节点总共的RAM
推荐最小的container 大小
少于4 GB
256MB
4 GB 和 8 GB之间 
256MB
8 GB 和 24 GB之间 
1024MB
24 GB 以上
2048MB

最终的计算来决定每个container的RAM 数量

每个container RAM = max(MIN_CONTAINER_SIZE, (Total Available RAM) / numbers))

假定 每个container RAM = RAM-unit

经过这些计算,YARN 和 MapReduce可以被设置成的值如下所示:

配置文件
配置项
计算的值
yarn-site.xml
yarn.nodemanager.resource.memory-mb
= numbers * RAM-unit
yarn-site.xml
yarn.scheduler.minimum-allocation-mb 
= RAM-unit
yarn-site.xml
yarn.scheduler.maximum-allocation-mb
= numbers * RAM-unit
mapred-site.xml
mapreduce.map.memory.mb
= RAM-unit
mapred-site.xml
mapreduce.reduce.memory.mb
= 2 * RAM-unit
mapred-site.xml
mapreduce.map.java.opts
= 0.8 * RAM-unit
mapred-site.xml
mapreduce.reduce.java.opts
= 0.8 * 2 *RAM-unit
yarn-site.xml (check)
yarn.app.mapreduce.am.resource.mb
= 2 * RAM-unit
yarn-site.xml (check)
yarn.app.mapreduce.am.command-opts
= 0.8 * 2 * RAM-unit

 

 

举个例子

集群节点有12个CPU cores,48 GB RAM 和 12 个磁盘.

保留的内存=6 GB系统使用 + (如果有Hbase)8 GB HBase使用

最小container 大小 = 2GB

如果没有Hbase:

numbers = container 数量 =  min (2*12, 1.8* 12, (48-6)/2) = min (24, 21.6, 21) = 21

RAM-unit  = 每个container RAM =  max (2, (48-6)/21) = max (2, 2) = 2

配置
计算的值
yarn.nodemanager.resource.memory-mb
21 2 = 42GB
yarn.scheduler.minimum-allocation-mb 
2 GB
yarn.scheduler.maximum-allocation-mb
21 2 = 42GB
mapreduce.map.memory.mb
2GB
mapreduce.reduce.memory.mb
= 2 * 2 = 4GB
mapreduce.map.java.opts
= 0.8 * 2 = 1.6GB
mapreduce.reduce.java.opts
= 0.8 * 2 * 2 = 3.2GB
yarn.app.mapreduce.am.resource.mb
= 2 * 2 = 4GB
yarn.app.mapreduce.am.command-opts
= 0.8 * 2 * 2 = 3.2GB

 

如果包含了Hbase:

 

container 数量 = min (2*12, 1.8* 12, (48-6-8)/2) = min (24, 21.6, 17) = 17

每个container RAM = max (2, (48-6-8)/17) = max (2, 2) = 2

配置
计算的值
yarn.nodemanager.resource.memory-mb
17 2 = 34GB
yarn.scheduler.minimum-allocation-mb 
2 GB
yarn.scheduler.maximum-allocation-mb
17 2 = 34GB
mapreduce.map.memory.mb
2GB
mapreduce.reduce.memory.mb
= 2 * 2 = 4GB
mapreduce.map.java.opts
= 0.8 * 2 = 1.6GB
mapreduce.reduce.java.opts
= 0.8 * 2 * 2 = 3.2GB
yarn.app.mapreduce.am.resource.mb
= 2 * 2 = 4GB
yarn.app.mapreduce.am.command-opts
= 0.8 * 2 * 2 = 3.2GB

需要说明的几点:

1、yarn.nodemanager.resource.memory-mb,表示当前节点上最大可以使用的内存。

2、yarn.scheduler.minimum-allocation-mb ,表示当前节点上可以分配的container 最小内存。

3、yarn.scheduler.maximum-allocation-mb,表示当前节点上可以分配的container 最大内存。

4、map 和 reduce的job是运行在yarn上的,利用container 来运行tasks。

5、map 和 reduce 的task是运行在互相独立的container中,相互不影响。

6、map 和 reduce 运行的task需要的内存是等于或者大于 container 最小内存,即yarn.scheduler.minimum-allocation-mb的值。

7、map 和 reduce运行task的时候会单独启动一个jvm,jvm的内存大小一般为物理内存的80%,即0.8

 

 

原文地址http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0/bk_installing_manually_book/content/rpm-chap1-11.html,内容有增删。

分享到:
评论

相关推荐

    23、hadoop集群中yarn运行mapreduce的内存、CPU分配调度计算与优化

    优化YARN和MapReduce的内存分配时,需要考虑以下几点: - 确保配置的内存大小与实际硬件匹配,避免资源浪费。 - 根据工作负载动态调整资源配置,例如,处理大数据量的任务可能需要更多的内存和CPU。 - 监控集群性能...

    Yarn 内存分配管理机制及相关参数配置.

    在YARN中,内存分配管理是一个关键环节,它直接影响到应用性能和集群资源的有效利用。本篇将深入探讨YARN内存分配的管理机制以及相关参数配置。 首先,YARN内存管理涉及到三个主要角色:ResourceManager(RM)、...

    YARN内存配置计算脚本

    一个计算yarn内存配置的python脚本yarn-util.py,该脚本有四个参数 参数 描述 -c CORES 每个节点CPU核数 -m MEMORY 每个节点内存总数(单位G) -d DISKS 每个节点的硬盘个数 -k HBASE 如果安装了Hbase则为True,...

    3_Hadoop平台(YARN+MapReduce)1

    1. **Resource Manager (RM)**:RM是整个集群的资源管理者,负责接收客户端请求,启动和监控AM,以及分配和调度资源。 2. **Node Manager (NM)**:NM是每个节点上的代理,负责报告节点资源状态,执行RM的命令,启动...

    藏经阁-Apache Hadoop 3.0_ What’s new in YARN & MapReduce.pdf

    Apache Hadoop 3.0 版本中,YARN(Yet Another Resource Negotiator)和 MapReduce 组件发生了许多变化。本文将对这些变化进行详细的介绍和分析。 首先,Hadoop 3.0 版本的演变是从 YARN 开始的。YARN 的演变将继续...

    hadoop、habse、yarn、MapReduce调优等总结的集合调优.docx

    MapReduce调优主要包括作业调度、任务划分、内存分配等方面,例如调整`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`以适应不同作业的需求,同时优化作业的并行度和数据本地性。 集群权限管理是保障系统...

    03_MapReduce 和Spark on YARN.docx

    在YARN上部署MapReduce和Spark,作业通过客户端提交给YARN的资源管理器,资源管理器根据作业的资源需求分配任务到工作节点上的容器中执行。YARN通过心跳机制监控应用程序的状态,当节点故障时,它可以重新调度任务到...

    YARN Moving beyond MapReduce and Batch Processing with Apache Hadoop

    总结以上知识点,Apache Hadoop YARN作为一个先进的资源管理层,为Hadoop平台引入了更加灵活和强大的资源分配和任务调度机制,使得Hadoop能够适应更多种类的数据处理场景。YARN的推出,标志着Hadoop从单一的批处理...

    yarn内存和CPU配置

    - **Container**:YARN中资源分配的基本单位,它包含一定数量的内存和CPU资源。 - **ResourceManager (RM)**:集群级别的资源管理器,负责接收来自应用程序的资源请求,并根据当前可用资源分配Container。 - **...

    05.hadoop上课笔记之hadoop5mapreduce和yarn

    YARN 负责管理资源的分配和任务的调度,以确保 MapReduce 任务的执行。 四、实践应用 本节笔记还提供了一个实践应用,演示如何使用 MapReduce 编程来处理大规模数据。该应用程序使用了 Hadoop 提供的 MapReduce ...

    大数据MapReduce和YARN架构原理.pdf

    大数据MapReduce和YARN架构原理 大数据处理中,MapReduce和YARN架构原理是两个核心概念。MapReduce是一种分布式计算框架,用于处理大规模数据集的并行运算,而YARN(Yet Another Resource Negotiator)是Hadoop 2.0...

    大数据平台构建:YARN中运行Mapreduce程序.pptx

    在大数据处理领域,Apache Hadoop的YARN(Yet Another Resource Negotiator)是一种重要的资源管理和调度系统,它使得不同的计算框架如MapReduce能够高效地运行在分布式集群上。MapReduce是Hadoop早期版本的主要计算...

    大数据技术之Hadoop(MapReduce&Yarn).docx

    Hadoop是一个开源的分布式计算框架,主要由两个关键组件组成:MapReduce和YARN。MapReduce是Hadoop的核心计算模型,用于处理大规模数据集;YARN则是资源管理系统,负责调度和管理集群中的计算资源。 **MapReduce...

    Cloudera的yarn任务监控api

    - `reservedMB`, `availableMB`, `allocatedMB`, `totalMB`: 分别表示预留、可用、已分配和总内存容量。 此外,`Cluster Metrics API`提供了详细的集群度量信息,如各种应用程序状态的数量和内存使用情况。通过`...

    华为大数据认证:MapReduce分布式离线批处理和Yarn资源协调.pptx

    1. 资源管理:YARN通过RM全局协调集群资源,分配和回收Container。 2. 任务调度:RM和AM协作完成任务调度,确保资源高效利用。 3. 应用管理:AM负责监控和恢复任务,处理故障。 4. 容错机制:通过AM重试和数据备份...

    Spark on Yarn之Executor内存管理 - 简书1

    Spark会根据任务的需求动态调整这两部分的内存分配。在某些情况下,如果Execution Memory不足,Spark会尝试将Storage Memory中的数据卸载到磁盘以释放内存。 3. **常见错误与解决方案** 在Spark on YARN环境中,...

    第5章大数据技术教程-MapReduce运行原理及Yarn介绍.pdf

    YARN 的出现解决了 MapReduce 1 中的许多缺陷,并提高了集群的资源利用率和数据共享。 在 YARN 中,ResourceManager 负责管理集群的资源,并将资源分配给不同的应用程序。ApplicationMaster 负责管理应用程序的执行...

    MapReduce\Yarn架构

    TaskTracker的slot概念在YARN中被Container取代,Container是YARN中资源分配的基本单位,可以包含内存、CPU等资源。ApplicationMaster向ResourceManager请求Container来运行任务。 总的来说,MapReduce 1.x的架构在...

    高级软件人才培训专家-Hadoop课程资料-3-第三章 - MapReduce & YARN入门

    ### 高级软件人才培训专家-Hadoop课程资料-3-第三...通过本章的学习,读者不仅能够了解分布式计算的基础知识,还能深入了解MapReduce和YARN的核心原理,并通过实践加深理解,为进一步学习Hadoop生态系统打下坚实基础。

    Apache Hadoop YARN Moving beyond MapReduce and Batch Processing

    Apache Hadoop TM YARN Moving beyond MapReduce and Batch Processing with Apache HadoopTM 2 全本,不是sample。

Global site tag (gtag.js) - Google Analytics