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.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(值得一读):
Resource Allocation of Yarn的更多相关文章
- Spark动态资源分配-Dynamic Resource Allocation
微信搜索lxw1234bigdata | 邀请体验:数阅–数据管理.OLAP分析与可视化平台 | 赞助作者:赞助作者 Spark动态资源分配-Dynamic Resource Allocation S ...
- Hadoop Aggregate Resource Allocation解释
1.在hadoop里面运行程序的时候,查看某个任务的具体信息如下: [hadoop@master monitor]$ yarn application -list 如上图,这里面的Aggregate ...
- hdu 3288 Resource Allocation
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3288 Resource Allocation Description HDU-Sailormoon i ...
- 【转】Resource Localization in YARN
一个Applciation运行在YARN上的流程为,从YARN Client向ResourceManager提交任务,将Applciation所需资源提交到HDFS中,然后ResourceManage ...
- Service Function Chaining Resource Allocation: A Survey
摘要: 服务功能链(SFC)是未来Internet的一项关键技术. 它旨在克服当前部署模型的僵化和静态限制. 该技术的应用依赖于可以将SFC最佳映射到衬底网络的算法. 这类算法称为"服务功能 ...
- Solving Large-Scale Granular Resource Allocation Problems Efficiently with POP(2021-POP-SOSP-文献阅读笔记)
读者 这篇文章来自2021的SOSP,单位是斯坦福大学和微软.选该文章的理由有二,一是资源分配的主题较为相关:二是文章结构.语言很清晰,读起来很舒服. 本文的中心思想可以概括为:分化瓦解,各个击破.即 ...
- YARN - Yet Another Resource Negotiator
http://www.socc2013.org/home/program http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-ya ...
- 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 m ...
- Docker on YARN在Hulu的实现
这篇文章是我来Hulu这一年做的主要工作,结合当下流行的两个开源方案Docker和YARN,提供了一套灵活的编程模型,目前支持DAG编程模型,将会支持长服务编程模型. 基于Voidbox,开发者可以很 ...
随机推荐
- 如何巧妙的使用ArrayList的Clone方法
一.ArrayList的Clone方法的源码 返回一个Object对象,所以在使用此方法的时候要强制转换. ArrayList的本质是维护了一个Object的数组,所以克隆也是通过数组的复制实现的,属 ...
- Ubuntu16下Hive 安装
0.安装环境和版本 Ubuntu16,hadoop版本是2.7.2 ,选择Hive版本为 hive-2.1.17 1. Hive安装包下载 地址: https://mirrors.tuna.tsin ...
- 清除Windows访问共享时保存的凭据记录
场景:某些时候我们连接了某台PC或服务器的共享目录或打印机,但因为一些原因突然连接不上了(或是对方组策略发生变化,或是对方计算机用户密码变更 等等..) 又或者电脑给其它用户使用,因一些安全问题需要临 ...
- 【cpp】chap 8
1.输出“输入的内容” // basic file operations #include <iostream> #include <fstream> #include < ...
- sqlserver 生成脚本执行创建索引
create or alter proc SP_CreateIndex as begin if exists(select * from sys.objects where name='execsql ...
- C#利用VUDP.cs开发网络通讯应用例程
VClassLib-CS项目Github地址:https://github.com/velscode/VClassLib-CS VUDP文档地址:https://github.com/velscode ...
- UOJ #109「APIO2013」TASKSAUTHOR
貌似是最入门的题答题 刚好我就是入门选手 就这样吧 UOJ #109 题意 太热了不讲了 $ Solution$ 第一个点:$ 105$个数字卡掉$ Floyd$ 直接$101$个点无出边一次询问就好 ...
- error: no matching function for call to 'std::exception:exception(const char[16])'
环境:codeblocks 语言:C++ 在执行:throw new exception("queue is empty.");时 遇到问题:error: no matching ...
- vim简单使用教程【转】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- 史上最明白的 NULL、0、nullptr 区别分析(老师讲N篇都没讲明白的东东),今天终于明白了,如果和我一样以前不明白的可以好好的看看...
C的NULL 在C语言中,我们使用NULL表示空指针,也就是我们可以写如下代码: int *i = NULL; foo_t *f = NULL; 实际上在C语言中,NULL通常被定义为如下: #def ...