Resource Allocation of Yarn

关键词:yarn 资源分配 mapreduce spark



简要指南

适合不想看太多原理细节直接上手用的人。

基本原则:

  • container分配的内存不等于机器实际用掉的内存。NM给container分配的内存是预留这么多内存,但实际用多少取决于你的-Xmx加上你的堆外内存。大部分堆外内存使用不多的情况下,实际主要就是JVM堆内存。
  • container内存是按yarn.scheduler.minimum-allocation-mb的整数倍分配的,用户设置的内存不足整数倍会向上取整,并且不会超过 yarn.scheduler.maximum-allocation-mb 。
  • 还有一个增量概念 yarn.scheduler.increment-allocation-mb (默认1024m),即如果yarn.scheduler.minimum-allocation-mb设置较大,假设4g,那客户端申请了4.5G内存,按道理最终container内存是要变成 4+4=8g 的,但有增量内存1024m配置的话,分配内存时会尝试 4+1=5g 是否能满足,从而避免内存资源浪费。
  • 所有上线的任务都要手动设置资源配置,尤其是内存。

MapReduce:

  • mapreduce.map.memory.mb表示给map的container申请的最大内存,即container内存;mapreduce.map.java.opts则是设置jvm启动的实际参数,其中堆内存-Xmx也是在这里设置,不能超过mapreduce.map.memory.mb,一般设置为0.75倍的mapreduce.map.memory.mb(只是建议,不一定),留给堆外内存一点空间。reduce同理。

Spark 1.x:

关于Spark On YARN相关的配置参数,请参考Spark配置参数。一般主要关注以下几个参数:

  • spark.driver.memory:默认值512m
  • spark.executor.memory:默认值512m
  • spark.yarn.am.memory:默认值512m
  • spark.yarn.executor.memoryOverhead:值为executorMemory * 0.07, with minimum of 384
  • spark.yarn.driver.memoryOverhead:值为driverMemory * 0.07, with minimum of 384
  • spark.yarn.am.memoryOverhead:值为AM memory * 0.07, with minimum of 384
  • --executor-memory/spark.executor.memory 控制 executor 的堆的大小,但是 JVM 本身也会占用一定的堆空间,比如内部的 String 或者直接 byte buffer,spark.yarn.XXX.memoryOverhead 属性决定向 YARN 请求的每个 executor 或dirver或am 的额外堆内存大小,默认值为 max(384, 0.07 * spark.executor.memory)。所以实际计算container内存的时候是 memory + memoryOverhead。
  • 在 executor 执行的时候配置过大的 memory 经常会导致过长的GC延时,内存并不是越大越好。

spark core分配:

  • 默认的yarn.scheduler.capacity.resource-calculator=org.apache.hadoop.yarn.util.resource.DefaultResourseCalculator , 这种时候的vcore会按container个数分配,而不是实际的spark core数。即设置了5个executor,每个executor2个core,实际除去ApplicationMaster和spark driver,最后只有5个vcore。
  • 改成org.apache.hadoop.yarn.util.resource.DominantResourceCalculator,上述案例则会变成10个vcore。暂未测试和看代码确定是否能客户端配置生效,一般服务端配置,在ambari里或部分语境下,有时也叫CPU-schedule的ResourceCalculator,相比default版的只考虑memory,dominant的同时考虑了memory和cpu。

Reference(值得一读):

时间: 2024-10-13 05:55:56

Resource Allocation of Yarn的相关文章

hdu 3288 Resource Allocation

题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3288 Resource Allocation Description HDU-Sailormoon is made up of three girls~~~wj, xq, lff, usually they work together ---- solve a variety of problems. So they has to use some resources in the process.

LTE下行物理层传输机制(6)-下行资源分配方式(Resource Allocation Type)

下行RB的资源分配(Resource Allocation)有三种方式,分别是资源分配方式0.资源分配方式1和资源分配方式2.在上一篇博文<LTE下行物理层传输机制(5)-DCI格式的选择和DCI1A>中提到DCI1A的时候,提到DCI1A只能分配连续的RB,以及这种方式下RIV(Resource Indication Value )的计算,那么这种分配方式其实就是资源分配方式2.而DCI2和DCI2A格式使用的则是另外2种不同的分配方式,即资源分配方式0和资源分配方式1.因此在讲DCI2和D

【转】Resource Localization in YARN

一个Applciation运行在YARN上的流程为,从YARN Client向ResourceManager提交任务,将Applciation所需资源提交到HDFS中,然后ResourceManager启动APPMaster,APPMaster通知各个NodeManager启动container执行具体到计算任务.在启动container之前需要从HDFS上下载该container执行所依赖的资源,这些资源包括jar.依赖的jar或者其它文件,这个过程就称为资源本地化(Resource Loca

Mesos Resource Allocation Algo: DRF(Dominant Resource Fairness)

http://datastrophic.io/resource-allocation-in-mesos-dominant-resource-fairness-explained/ Original paper at: https://people.eecs.berkeley.edu/~alig/papers/drf.pdf Key Take-away: Dominant resource - a resource of specific type (cpu, memory, disk, port

PatentTips - Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system

BACKGROUND? 1. Field? The embodiments of the disclosure generally relate to computer clusters, and more particularly to systems, methods, and devices for the efficient management of resources of computer clusters.? 2. Description of the Related Art?

YARN/MRv2 Resource Manager深入剖析—资源调度器

在YARN中,资源调度器(ResourceScheduler)是一个非常核心的部件,它负责将各个节点上的资源封装成container,并按照一定的约束条件(按队列分配,每个队列有一定的资源分配上限等)分配给各个application. (注意:本文分析基于hadoop-2.0.3-alpha) YARN的资源管理器实际上是一个事件处理器,它需要处理来自外部的6种SchedulerEvent类型的事件,并根据事件的具体含义进行相应的处理.这6种事件含义如下: (1)  NODE_REMOVED 事

yarn默认配置

name value description yarn.ipc.client.factory.class   Factory to create client IPC classes. yarn.ipc.serializer.type protocolbuffers Type of serialization to use. yarn.ipc.server.factory.class   Factory to create server IPC classes. yarn.ipc.excepti

Docker on YARN在Hulu的实现

这篇文章是我来Hulu这一年做的主要工作,结合当下流行的两个开源方案Docker和YARN,提供了一套灵活的编程模型,目前支持DAG编程模型,将会支持长服务编程模型. 基于Voidbox,开发者可以很容易的写出一个分布式的框架,Docker作为运行的执行引擎,YARN作为集群资源的管理系统. 同时这篇文章也发表在Hulu官方的技术博客上:http://tech.hulu.com/blog/2015/08/06/voidbox-docker-on-yarn/ 1. Voidbox Motivati

Migrating from MapReduce 1 (MRv1) to MapReduce 2 (MRv2, YARN)...

This is a guide to migrating from Apache MapReduce 1 (MRv1) to the Next Generation MapReduce (MRv2 or YARN). See the following sections for more information: Introduction Terminology and Architecture For MapReduce Programmers: Writing and Running Job