Spark2.x(五十六):Queue's AM resource limit exceeded.
背景:
按照业务需求将数据拆分为60份,启动60个application分别运行对每一份数据,application的提交脚本如下:
#/bin/sh
#LANG=zh_CN.utf8
#export LANG
export SPARK_KAFKA_VERSION=0.10
export LANG=zh_CN.UTF-
jarspath=''
for file in `ls /home/dx/pro2./app01/sparkjars/*.jar`
do
jarspath=${file},$jarspath
done
jarspath=${jarspath%?}
echo $jarspath ./bin/spark-submit.sh \
--jars $jarspath \
--properties-file ../conf/spark-properties.conf \
--verbose \
--master yarn \
--deploy-mode cluster \
--name Streaming-$2-$3-$4-$5-$1-Agg-Parser \
--driver-memory 9g \
--driver-cores 1 \
--num-executors 1 \
--executor-cores 12 \
--executor-memory 22g \
--driver-java-options "-XX:+TraceClassPaths" \
--class com.dx.app01.streaming.Main \
/home/dx/pro2.0/app01/lib/app01-streaming-driver.jar $1 $2 $3 $4 $5
运行集群包含的运行节点43个节点,每个节点配置信息如下:24VCores 64G
yarn配置情况:
| yarn.scheduler.minimum-allocation-mb | 单个容器可申请的最小内存 1G |
| yarn.scheduler.maximum-allocation-mb | 单个容器可申请的最大内存 51G |
| yarn.nodemanager.resource.cpu-vcores | NodeManager总的可用虚拟CPU个数 21vcores |
| yarn.nodemanager.resource.memory-mb | 每个节点可用的最大内存,RM中的两个值不应该超过此值 51G |
问题:
执行上边脚本启动了60个任务,但是经过测试发现最多只能提交24个任务,然后剩余还有一个部分任务都是处于 Accepted 状态,按照目前情况至少要执行43个任务。
通过yarn node -list命令查看当前节点上运行containers情况如下:
| Node-Id | Node-State | Node-Http-Address | Number-of-Running-Containers |
| node-53:45454 | RUNNING | node-53:8042 | 1 |
| node-62:45454 | RUNNING | node-62:8042 | 4 |
| node-44:45454 | RUNNING | node-44:8042 | 3 |
| node-37:45454 | RUNNING | node-37:8042 | 0 |
| node-35:45454 | RUNNING | node-35:8042 | 1 |
| node-07:45454 | RUNNING | node-07:8042 | 0 |
| node-30:45454 | RUNNING | node-30:8042 | 0 |
| node-56:45454 | RUNNING | node-56:8042 | 2 |
| node-47:45454 | RUNNING | node-47:8042 | 0 |
| node-42:45454 | RUNNING | node-42:8042 | 2 |
| node-03:45454 | RUNNING | node-03:8042 | 6 |
| node-51:45454 | RUNNING | node-51:8042 | 2 |
| node-33:45454 | RUNNING | node-33:8042 | 1 |
| node-04:45454 | RUNNING | node-04:8042 | 1 |
| node-48:45454 | RUNNING | node-48:8042 | 6 |
| node-39:45454 | RUNNING | node-39:8042 | 0 |
| node-60:45454 | RUNNING | node-60:8042 | 1 |
| node-54:45454 | RUNNING | node-54:8042 | 0 |
| node-45:45454 | RUNNING | node-45:8042 | 0 |
| node-63:45454 | RUNNING | node-63:8042 | 1 |
| node-09:45454 | RUNNING | node-09:8042 | 1 |
| node-01:45454 | RUNNING | node-01:8042 | 1 |
| node-36:45454 | RUNNING | node-36:8042 | 3 |
| node-06:45454 | RUNNING | node-06:8042 | 0 |
| node-61:45454 | RUNNING | node-61:8042 | 1 |
| node-31:45454 | RUNNING | node-31:8042 | 0 |
| node-40:45454 | RUNNING | node-40:8042 | 0 |
| node-57:45454 | RUNNING | node-57:8042 | 1 |
| node-59:45454 | RUNNING | node-59:8042 | 1 |
| node-43:45454 | RUNNING | node-43:8042 | 1 |
| node-52:45454 | RUNNING | node-52:8042 | 1 |
| node-34:45454 | RUNNING | node-34:8042 | 1 |
| node-38:45454 | RUNNING | node-38:8042 | 0 |
| node-50:45454 | RUNNING | node-50:8042 | 4 |
| node-46:45454 | RUNNING | node-46:8042 | 1 |
| node-08:45454 | RUNNING | node-08:8042 | 1 |
| node-55:45454 | RUNNING | node-55:8042 | 1 |
| node-32:45454 | RUNNING | node-32:8042 | 0 |
| node-41:45454 | RUNNING | node-41:8042 | 2 |
| node-05:45454 | RUNNING | node-05:8042 | 1 |
| node-02:45454 | RUNNING | node-02:8042 | 1 |
| node-58:45454 | RUNNING | node-58:8042 | 0 |
| node-49:45454 | RUNNING | node-49:8042 | 0 |
很明显,目前集群还有一部分节点未被使用,说明资源时充足的。
那么,至少应该能提交43个任务才对,但是目前只提交了24个任务,而且在Yarn上还提示错误信息:
[Tue Jul :: + ] Application is added to the scheduler and is not yet activated.
Queue's AM resource limit exceeded. Details : AM Partition = <DEFAULT_PARTITION>;
AM Resource Request = <memory:9216MB(9G), vCores:>;
Queue Resource Limit for AM = <memory:454656MB(444G), vCores:>;
User AM Resource Limit of the queue = <memory:229376MB(224G), vCores:>;
Queue AM Resource Usage = <memory:221184MB(216G), vCores:>;
解决方案:
其中错误日志:“Queue AM Resource Usage = <memory:221184MB(216G), vCores:24>;”中正是指目前已经运行了24个app(yarn-cluster模式下,每个app包含一个driver,driver也就是等同于AM):每个app的driver包含1个vcores,一共占用24vcores;每个app的driver内存为9G,9G*24=216G。
其中错误日志:“User AM Resource Limit of the queue = <memory:229376MB(224G), vCores:1>; ”中集群中用于运行应用程序ApplicationMaster的资源最大允许224G,这个值由参数”yarn.scheduler.capacity.maximum-am-resource-percent“决定。
|
yarn.scheduler.capacity.maximum-am-resource-percent / yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent |
集群中用于运行应用程序ApplicationMaster的资源比例上限,该参数通常用于限制处于活动状态的应用程序数目。该参数类型为浮点型,默认是0.1,表示10%。 所有队列的ApplicationMaster资源比例上限可通过参数yarn.scheduler.capacity. maximum-am-resource-percent设置(可看做默认值), 而单个队列可通过参数yarn.scheduler.capacity.<queue-path>.maximum-am-resource-percent设置适合自己的值。 |
1)yarn.scheduler.capacity.maximum-am-resource-percent(调大)
<property>
<!-- Maximum resources to allocate to application masters
If this is too high application masters can crowd out actual work -->
<name>yarn.scheduler.capacity.maximum-am-resource-percent</name>
<value>0.5</value>
</property>
2)降低 driver 内存。
关于Yarn Capacity更多,更官方问题请参考官网文档:《Hadoop: Capacity Scheduler》
Spark2.x(五十六):Queue's AM resource limit exceeded.的更多相关文章
- 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)
本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/16384009 作者:毛星云 ...
- 第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点
第三百五十六节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy分布式爬虫要点 1.分布式爬虫原理 2.分布式爬虫优点 3.分布式爬虫需要解决的问题
- “全栈2019”Java第五十六章:多态与字段详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)
1.简介 前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件.因此宏哥就接着讲解和分享一下:自动化测试下载文件.可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就 ...
- Abp(net core)+easyui+efcore实现仓储管理系统——出库管理之七(五十六)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统--ABP总体介绍(一) abp(net core)+ ...
- OpenCV开发笔记(五十六):红胖子8分钟带你深入了解多种图形拟合逼近轮廓(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- FastAPI 学习之路(五十六)将token存放在redis
在之前的文章中,FastAPI 学习之路(二十九)使用(哈希)密码和 JWT Bearer 令牌的 OAuth2,FastAPI 学习之路(二十八)使用密码和 Bearer 的简单 OAuth2,Fa ...
- Linux性能优化实战学习笔记:第五十六讲
一.上节回顾 上一节,我带你一起梳理了,性能问题分析的一般步骤.先带你简单回顾一下. 我们可以从系统资源瓶颈和应用程序瓶颈,这两个角度来分析性能问题的根源. 从系统资源瓶颈的角度来说,USE 法是最为 ...
- 论文阅读笔记五十六:(ExtremeNet)Bottom-up Object Detection by Grouping Extreme and Center Points(CVPR2019)
论文原址:https://arxiv.org/abs/1901.08043 github: https://github.com/xingyizhou/ExtremeNet 摘要 本文利用一个关键点检 ...
随机推荐
- android ViewFlipper(翻转视图) 使用
1.布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns ...
- MySQL Processlist--查看会话执行过的SQL情况
对于MySQL 5.7版本,可以使用sys.session视图来查看会话最后一次执行的SQL: SELECT * FROM sys.session WHERE CONN_ID = \G 其中sys.s ...
- Sleep和 SleepEx函数
Sleep和 SleepEx函数的功能是在指定的执行时间内中止所在线程的执行. SleepEx扩展了Sleep的功能,在最短超时时间间隔已到的情况下恢复线程执行外,在以下两种情况下发生时也可以恢复执行 ...
- Oracle12C本地用户的创建和登录
1.查看sysdba下所有PDB以及服务名 select name,pdb from v$services; 2.根据PDB信息修改tnsnames.ora 3.修改listener.ora(网上相关 ...
- thinkphp5.x命令执行漏洞复现及环境搭建
楼主Linux环境是Centos7,LAMP怎么搭不用我废话吧,别看错了 一.thinkphp5.X系列 1.安装composer yum -y install composer 安装php拓展 yu ...
- 使用Arduino连接HC-SR04超声波距离传感器的方法
距离传感器是机器人项目最有用的传感器之一. HC-SR04是一种便宜的超声波距离传感器,可以帮助您的机器人在房间周围导航.通过一些努力和一个额外的组件,它也可以用作测量设备.在这篇文章中,您将学习到通 ...
- Docker万字详解!
一.简介 1.了解Docker的前生LXC LXC为Linux Container的简写.可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性.相当于C+ ...
- js 函数的this指向
一. 1.es5: 函数里的this指向分两种,一种正常函数调用指向被调用的对象,比如: test=()=>{ console.log(this) }; test();//是当前window调用 ...
- appium+python自动化63-使用Uiautomator2报错问题解决
前言 appium desktop V1.7.1版本使用命令行版本启动appium后,使用Uiautomator2定位toast信息报错:appium-uiautomator2-server-v0.3 ...
- 微信小程序~扫码
为了让用户减少输入,我们可以把复杂的信息编码成一个二维码,利用宿主环境wx.scanCode这个API调起微信扫一扫,用户扫码之后,wx.scanCode的success回调会收到这个二维码所对应的字 ...