为什么不能超过32个内核,从纱线被要求运行作业? [英] Why cannot more than 32 cores be requested from YARN to run a job?

查看:456
本文介绍了为什么不能超过32个内核,从纱线被要求运行作业?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

设置:


  • 没有。节点:3

  • 没有。内核:每台机器32个内核

  • RAM:每台机器410GB

  • 星火版本:1.2.0

  • 的Hadoop版本:2.4.0(Hortonworks)

目标:


  • 我想运行超过32执行人核心的星火工作。

问题:

当我要求超过32执行人内核火花的工作,我得到以下错误:

 未捕获的异常:无效的资源请求,请求的虚拟内核< 0,或请求的虚拟内核>最大配置,requestedVirtualCores = 150,maxVirtualCores = 32
在org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerUtils.validateResourceRequest(SchedulerUtils.java:212)
在org.apache.hadoop.yarn.server.resourcemanager.RMServerUtils.validateResourceRequests(RMServerUtils.java:96)
在org.apache.hadoop.yarn.server.resourcemanager.ApplicationMasterService.allocate(ApplicationMasterService.java:501)
在org.apache.hadoop.yarn.api.impl.pb.service.ApplicationMasterProtocolPBServiceImpl.allocate(ApplicationMasterProtocolPBServiceImpl.java:60)
在org.apache.hadoop.yarn.proto.ApplicationMasterProtocol$ApplicationMasterProtocolService$2.callBlockingMethod(ApplicationMasterProtocol.java:99)
在org.apache.hadoop.ipc.ProtobufRpcEngine $服务器$ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
在org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:962)
在org.apache.hadoop.ipc.Server $ $处理程序1.run(Server.java:2039)
在org.apache.hadoop.ipc.Server $ $处理程序1.run(Server.java:2035)
在java.security.AccessController.doPrivileged(本机方法)
在javax.security.auth.Subject.doAs(Subject.java:415)
在org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
在org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2033)

下面是一些属性从我的纱线-site.xml中:

 <性>
  <名称> yarn.nodemanager.resource.memory-MB< /名称>
  < VALUE> 400000< /值>
< /性>
<性>
  <名称> yarn.scheduler.minimum分配-MB< /名称>
  < VALUE> 3072< /值>
< /性>

从上面的属性,我想我可以要求400K / 3072 =〜130芯。但它仍然是限制我32.我如何可以分配32个以上的内核执行人到火花的工作吗?

请让我知道,如果需要更多的信息,我会更新的问题。

编辑1:

从纱线-site.xml的核心电压设置

 <性>
  <名称> yarn.nodemanager.resource.cpu-vcores< /名称>
  <价值> 2'; /值>
< /性>


解决方案

在纱线-site.xml中设置

 <性>
  <名称> yarn.scheduler.maximum分配-vcores< /名称>
  < VALUE> 130℃; /值>
< /性>

Setup:

  • No. of nodes: 3
  • No. of cores: 32 Cores per machine
  • RAM: 410GB per machine
  • Spark Version: 1.2.0
  • Hadoop Version: 2.4.0 (Hortonworks)

Objective:

  • I want to run a Spark job with more than 32 executor cores.

Problem:

When I request more than 32 executor cores for Spark job, I get the following error:

Uncaught exception: Invalid resource request, requested virtual cores < 0, or requested virtual cores > max configured, requestedVirtualCores=150, maxVirtualCores=32
at org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerUtils.validateResourceRequest(SchedulerUtils.java:212)
at org.apache.hadoop.yarn.server.resourcemanager.RMServerUtils.validateResourceRequests(RMServerUtils.java:96)
at org.apache.hadoop.yarn.server.resourcemanager.ApplicationMasterService.allocate(ApplicationMasterService.java:501)
at org.apache.hadoop.yarn.api.impl.pb.service.ApplicationMasterProtocolPBServiceImpl.allocate(ApplicationMasterProtocolPBServiceImpl.java:60)
at org.apache.hadoop.yarn.proto.ApplicationMasterProtocol$ApplicationMasterProtocolService$2.callBlockingMethod(ApplicationMasterProtocol.java:99)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:619)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2039)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2035)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2033)

Here are some properties from my yarn-site.xml:

<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>400000</value>
</property>
<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>3072</value>
</property>

From above to properties, I thought I would be able to request 400k/3072 = ~130 cores. But It is still limiting me to 32. How can I assign more than 32 executor cores to a Spark job?

Please let me know if more info is needed and I will update the question.

EDIT 1:

vcore settings from yarn-site.xml

<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>2</value>
</property>

解决方案

In yarn-site.xml set

<property>
  <name>yarn.scheduler.maximum-allocation-vcores</name>
  <value>130</value>
</property>

这篇关于为什么不能超过32个内核,从纱线被要求运行作业?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆