为什么不能从纱线中请求超过32个芯线来运行作业? 设置: 节点数量:3 芯数:每台机器32芯 内存:每台机器410GB Spark版本:1.2.0 Hadoop版本:2.4.0(Hortonworks) 目标: 我想运行一个包含32个以上执行器内核的Spark作业。 问题:

为什么不能从纱线中请求超过32个芯线来运行作业? 设置: 节点数量:3 芯数:每台机器32芯 内存:每台机器410GB Spark版本:1.2.0 Hadoop版本:2.4.0(Hortonworks) 目标: 我想运行一个包含32个以上执行器内核的Spark作业。 问题:,hadoop,mapreduce,apache-spark,yarn,Hadoop,Mapreduce,Apache Spark,Yarn,当我为Spark作业请求超过32个executor Core时,我得到以下错误: 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.reso

当我为Spark作业请求超过32个executor Core时,我得到以下错误:

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)
未捕获异常:无效的资源请求,请求的虚拟核心<0,或请求的虚拟核心>最大配置,请求的虚拟核心=150,最大虚拟核心=32
位于org.apache.hadoop.warn.server.resourcemanager.SchedulerUtils.validateResourceRequest(SchedulerUtils.java:212)
位于org.apache.hadoop.warn.server.resourcemanager.RMServerUtils.validateResourceRequests(RMServerUtils.java:96)
位于org.apache.hadoop.warn.server.resourcemanager.ApplicationMasterService.allocate(ApplicationMasterService.java:501)
位于org.apache.hadoop.warn.api.impl.pb.service.ApplicationMasterProtocolPBServiceImpl.allocate(ApplicationMasterProtocolPBServiceImpl.java:60)
位于org.apache.hadoop.warn.proto.ApplicationMasterProtocol$ApplicationMasterProtocolService$2.callBlockingMethod(ApplicationMasterProtocol.java:99)
在org.apache.hadoop.ipc.protobufrpceengine$Server$protobufrpinvoker.call(protobufrpceengine.java:619)上
位于org.apache.hadoop.ipc.RPC$Server.call(RPC.java:962)
位于org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2039)
位于org.apache.hadoop.ipc.Server$Handler$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)
以下是my Thread-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>

warn.nodemanager.resource.memory-mb
400000
warn.scheduler.minimum-allocation-mb
3072
从上面到属性,我想我可以请求400k/3072=~130个内核。但它仍然把我限制在32岁。如何将32个以上的executor Core分配给Spark作业

如果需要更多信息,请告诉我,我会更新问题

编辑1: vcore设置来自warn-site.xml

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

纱线.nodemanager.resource.cpu-vcores
2.
在warn-site.xml集合中

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

纱线.scheduler.maximum-allocation-vcores
130

听起来您的纱线配置为最多为一个容器分配32芯。这与记忆无关。你检查过vcores设置了吗?@SeanOwen:谢谢你的回复,肖恩。我已经从warn-site.xml添加了对vcore属性的编辑。请让我知道需要哪些其他信息。谢谢