在Hadoop2.0中, YARN负责管理MapReduce中的资源(内存, CPU等)并且将其打包成Container. 这样可以精简MapReduce, 使之专注于其擅长的数据处理任务, 将无需考虑资源调度. 如下图所示
YARN会管理集群中所有机器的可用计算资源. 基于这些资源YARN会调度应用(比如MapReduce)发来的资源请求, 然后YARN会通过分配Container来给每个应用提供处理能力, Container是YARN中处理能力的基本单元, 是对内存, CPU等的封装.
目前我这里的服务器情况:6台slave,每台:32G内存,2*6核CPU。
由于hadoop 1.x存在JobTracker和TaskTracker,资源管理有它们实现,在执行mapreduce作业时,资源分为map task和reduce task。所有存在下面两个参数分别设置每个TaskTracker可以运行的任务数:
<property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>6</value> <description><![CDATA[CPU数量=服务器CPU总核数 / 每个CPU的核数;服务器CPU总核数 = more /proc/cpuinfo | grep 'processor' | wc -l;每个CPU的核数 = more /proc/cpui nfo | grep 'cpu cores']]></description> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>4</value> <description>一个task tracker最多可以同时运行的reduce任务数量</description> </property>
但是在hadoop 2.x中,引入了Yarn架构做资源管理,在每个节点上面运行NodeManager负责节点资源的分配,而slot也不再像1.x那样区分Map slot和Reduce slot。在Yarn上面Container是资源的分配的最小单元。
Yarn集群的内存分配配置在yarn-site.xml文件中配置:
<property> <name>yarn.nodemanager.resource.memory-mb</name> <value>22528</value> <discription>每个节点可用内存,单位MB</discription> </property> <property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>1500</value> <discription>单个任务可申请最少内存,默认1024MB</discription> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>16384</value> <discription>单个任务可申请最大内存,默认8192MB</discription> </property>
由于我Yarn集群还需要跑Spark的任务,而Spark的Worker内存相对需要大些,所以需要调大单个任务的最大内存(默认为8G)。
而Mapreduce的任务的内存配置:
<property> <name>mapreduce.map.memory.mb</name> <value>1500</value> <description>每个Map任务的物理内存限制</description> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>3000</value> <description>每个Reduce任务的物理内存限制</description> </property> <property> <name>mapreduce.map.java.opts</name> <value>-Xmx1200m</value> </property> <property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx2600m</value> </property>
mapreduce.map.memory.mb:每个map任务的内存,应该是大于或者等于Container的最小内存。
按照上面的配置:每个slave可以运行map的数据<= 22528/1500,reduce任务的数量<=22528/3000
相关推荐
综上所述,YARN内存管理的优化需要综合考虑RM、NM和AM的角色及它们的配置参数,确保资源有效利用,同时避免内存不足或溢出导致的问题。在实际操作中,需根据应用需求和集群资源状况合理调整这些参数,以实现最佳性能...
### YARN内存与CPU配置详解 #### 一、引言 Apache Hadoop YARN(Yet Another Resource Negotiator)作为新一代的资源管理和任务调度框架,在大数据处理领域占据着重要的地位。YARN不仅支持内存资源的调度,还支持...
这里提到的"hadop yarn优化配置项生成工具"是一个实用的脚本工具,用于根据特定的硬件环境和工作负载生成优化的YARN配置参数。这个工具基于Python编写,名为`yarn-utils.py`。 要使用这个工具,首先确保你的系统...
- 对于内存敏感的应用,可以设置溢写策略,如使用MapReduce的`mapreduce.task.io.sort.mb`和`io.sort.factor`来控制排序阶段的内存使用。 总之,理解和优化YARN的内存和CPU分配是提升Hadoop集群效率的关键。通过...
如果Executor在运行过程中实际使用的内存超出上限,YARN会终止Executor进程。 2.1 **Executor可用内存总量** Executor的总内存包括Heap内存和Off-Heap内存。Heap内存由`spark.executor.memory`指定,Spark对Heap...
若要切换为FIFO调度器,需要在`yarn-site.xml`中设置`yarn.resourcemanager.scheduler.class`属性为`org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler`,并重新启动HDFS和Yarn集群。...
在提交Spark任务前,需要配置Spark的相关属性,如`spark.master`设置为`yarn-client`或`yarn-cluster`,前者用于客户端模式,后者用于集群模式。此外,还需指定Hadoop的配置目录,例如`spark.yarn.conf.archive`。 ...
除了调整内存配置,还可以优化代码,减少内存消耗,或者考虑使用更高效的算法。 - `[YARN-20003]` 集群资源足够时,大量任务处于 Accepted 状态:这可能是由于调度策略或队列设置问题。检查 RM 的调度器配置,如...
通过深入学习"YARN学习书籍及注解",读者可以全面了解YARN的工作原理,掌握如何配置和管理YARN集群,以及如何针对特定应用场景进行优化,这对于从事大数据处理和分析的工程师来说是非常宝贵的技能。
- **mapreduce.map.memory.mb** 和 **mapreduce.reduce.memory.mb**:分别设置Map和Reduce任务可用的最大内存。 #### 五、Shuffle过程中的优化策略 - **减少磁盘I/O**:通过增加内存缓冲区大小或调整溢写阈值,...
- **容器配置:** 可以通过配置文件来设置容器的最大内存、CPU 核心数等参数。 **2. 调度策略配置:** - **FIFO 调度器配置:** 设置默认的调度策略为 FIFO。 - **容量调度器配置:** 定义队列及其优先级、最大资源...
在配置SparkSQL任务时,我们需要注意Core与内存比例的设置。如果不指定Executor的核心数,可能导致多数Executor空闲。解决办法是指定Executor的核心数,例如设置为4,可以避免 Executor 空闲的情况。此外,我们还...
本文将根据提供的文件内容,详细介绍如何通过一系列步骤来优化Hadoop YARN,包括工作主机配置、集群规模规划以及MapReduce配置等,并简要介绍如何使用YARN REST API进行监控和管理。 #### 二、YARN调优概览 YARN...
**2.2 YARN内存配置** - **节点管理器可用内存总量**: - `yarn.nodemanager.resource.memory-mb`:设置为150000MB(150GB),确保有足够的内存资源分配给YARN容器。 - **Container内存范围**: - 最小值:`yarn....
接着,需要更新Hadoop配置文件(如`yarn-site.xml`和`core-site.xml`),配置YARN的相关参数,如内存和CPU的分配策略。最后,启动YARN服务,确保所有节点都能正常通信。 总之,JDK 1.8和YARN 1.22.10的结合,为基于...
- **yarn.nodemanager.resource.cpu-vcores**:设置为16,允许每个节点分配16个虚拟CPU核心给YARN使用。 - **yarn.scheduler.maximum-allocation-vcores** 和 **yarn.scheduler.minimum-allocation-vcores**:分别...
同时,对于内存溢出问题,可以通过调整YARN的内存配置参数来避免。 总的来说,《Hadoop技术内幕深入解析YARN架构设计与实现原理》这本书是学习和理解YARN的宝贵资料,它不仅介绍了YARN的基本概念,还深入探讨了其...
- 根据具体业务场景,调整Yarn的配置参数,如心跳间隔、队列设置等,优化系统性能。 - 对应用程序进行优化,如合理设置AM内存、优化数据局部性等。 通过《基于Yarn的淘宝海量数据服务平台》这篇内容,我们可以...