-
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
相关推荐
优化YARN和MapReduce的内存分配时,需要考虑以下几点: - 确保配置的内存大小与实际硬件匹配,避免资源浪费。 - 根据工作负载动态调整资源配置,例如,处理大数据量的任务可能需要更多的内存和CPU。 - 监控集群性能...
在YARN中,内存分配管理是一个关键环节,它直接影响到应用性能和集群资源的有效利用。本篇将深入探讨YARN内存分配的管理机制以及相关参数配置。 首先,YARN内存管理涉及到三个主要角色:ResourceManager(RM)、...
一个计算yarn内存配置的python脚本yarn-util.py,该脚本有四个参数 参数 描述 -c CORES 每个节点CPU核数 -m MEMORY 每个节点内存总数(单位G) -d DISKS 每个节点的硬盘个数 -k HBASE 如果安装了Hbase则为True,...
1. **Resource Manager (RM)**:RM是整个集群的资源管理者,负责接收客户端请求,启动和监控AM,以及分配和调度资源。 2. **Node Manager (NM)**:NM是每个节点上的代理,负责报告节点资源状态,执行RM的命令,启动...
Apache Hadoop 3.0 版本中,YARN(Yet Another Resource Negotiator)和 MapReduce 组件发生了许多变化。本文将对这些变化进行详细的介绍和分析。 首先,Hadoop 3.0 版本的演变是从 YARN 开始的。YARN 的演变将继续...
MapReduce调优主要包括作业调度、任务划分、内存分配等方面,例如调整`mapreduce.map.memory.mb`和`mapreduce.reduce.memory.mb`以适应不同作业的需求,同时优化作业的并行度和数据本地性。 集群权限管理是保障系统...
在YARN上部署MapReduce和Spark,作业通过客户端提交给YARN的资源管理器,资源管理器根据作业的资源需求分配任务到工作节点上的容器中执行。YARN通过心跳机制监控应用程序的状态,当节点故障时,它可以重新调度任务到...
总结以上知识点,Apache Hadoop YARN作为一个先进的资源管理层,为Hadoop平台引入了更加灵活和强大的资源分配和任务调度机制,使得Hadoop能够适应更多种类的数据处理场景。YARN的推出,标志着Hadoop从单一的批处理...
- **Container**:YARN中资源分配的基本单位,它包含一定数量的内存和CPU资源。 - **ResourceManager (RM)**:集群级别的资源管理器,负责接收来自应用程序的资源请求,并根据当前可用资源分配Container。 - **...
YARN 负责管理资源的分配和任务的调度,以确保 MapReduce 任务的执行。 四、实践应用 本节笔记还提供了一个实践应用,演示如何使用 MapReduce 编程来处理大规模数据。该应用程序使用了 Hadoop 提供的 MapReduce ...
大数据MapReduce和YARN架构原理 大数据处理中,MapReduce和YARN架构原理是两个核心概念。MapReduce是一种分布式计算框架,用于处理大规模数据集的并行运算,而YARN(Yet Another Resource Negotiator)是Hadoop 2.0...
在大数据处理领域,Apache Hadoop的YARN(Yet Another Resource Negotiator)是一种重要的资源管理和调度系统,它使得不同的计算框架如MapReduce能够高效地运行在分布式集群上。MapReduce是Hadoop早期版本的主要计算...
Hadoop是一个开源的分布式计算框架,主要由两个关键组件组成:MapReduce和YARN。MapReduce是Hadoop的核心计算模型,用于处理大规模数据集;YARN则是资源管理系统,负责调度和管理集群中的计算资源。 **MapReduce...
- `reservedMB`, `availableMB`, `allocatedMB`, `totalMB`: 分别表示预留、可用、已分配和总内存容量。 此外,`Cluster Metrics API`提供了详细的集群度量信息,如各种应用程序状态的数量和内存使用情况。通过`...
1. 资源管理:YARN通过RM全局协调集群资源,分配和回收Container。 2. 任务调度:RM和AM协作完成任务调度,确保资源高效利用。 3. 应用管理:AM负责监控和恢复任务,处理故障。 4. 容错机制:通过AM重试和数据备份...
Spark会根据任务的需求动态调整这两部分的内存分配。在某些情况下,如果Execution Memory不足,Spark会尝试将Storage Memory中的数据卸载到磁盘以释放内存。 3. **常见错误与解决方案** 在Spark on YARN环境中,...
YARN 的出现解决了 MapReduce 1 中的许多缺陷,并提高了集群的资源利用率和数据共享。 在 YARN 中,ResourceManager 负责管理集群的资源,并将资源分配给不同的应用程序。ApplicationMaster 负责管理应用程序的执行...
TaskTracker的slot概念在YARN中被Container取代,Container是YARN中资源分配的基本单位,可以包含内存、CPU等资源。ApplicationMaster向ResourceManager请求Container来运行任务。 总的来说,MapReduce 1.x的架构在...
### 高级软件人才培训专家-Hadoop课程资料-3-第三...通过本章的学习,读者不仅能够了解分布式计算的基础知识,还能深入了解MapReduce和YARN的核心原理,并通过实践加深理解,为进一步学习Hadoop生态系统打下坚实基础。
Apache Hadoop TM YARN Moving beyond MapReduce and Batch Processing with Apache HadoopTM 2 全本,不是sample。