Spark作业永远不会从ACCEPTED状态进展,并挂起状态为UNDEFINED

时间:2018-05-21 14:38:44

标签: apache-spark hadoop

我有一个简单的hadoop集群,由一个主节点和两个从节点组成。我安装了spark,我试图从spark示例中运行建议的示例作业:

./bin/run-example SparkPi 10

看起来好像所有内容都已正确提交,并且作业状态已更新为ACCEPTED,但它仍处于此状态。在检查输出时,我发现了以下内容:

2018-05-21 16:27:41 INFO  Client:54 - Application report for 
application_1526910547092_0004 (state: ACCEPTED)
2018-05-21 16:27:41 INFO  Client:54 - 
 client token: N/A
 diagnostics: [Mon May 21 16:27:40 +0200 2018] Application is added to the scheduler and is not yet activated. Skipping AM assignment as cluster resource is empty.  Details : AM Partition = <DEFAULT_PARTITION>; AM Resource Request = <memory:1024, vCores:1>; Queue Resource Limit for AM = <memory:0, vCores:0>; User AM Resource Limit of the queue = <memory:0, vCores:0>; Queue AM Resource Usage = <memory:0, vCores:0>; 
 ApplicationMaster host: N/A
 ApplicationMaster RPC port: -1
 queue: default
 start time: 1526912860005
 final status: UNDEFINED
 tracking URL: http://vm-10-155-208-189:8088/proxy/application_1526910547092_0004/
 user: root

具体如下:应用程序已添加到调度程序中,尚未激活。跳过AM分配为群集资源为空。详情:AM Partition =; AM资源请求=; AM =的队列资源限制;队列的用户AM资源限制=;队列AM资源使用=;

所以似乎暗示我对可用内存设置了0的限制,对于vCores限制为0?

我的机器每个都有8GB的RAM,每个可用空间至少有20GB,所以我不确定为什么这个工作从未实际分配任何资源呢?

同样地,我无法启动spark-shell,它只是在输入命令后永久挂起。

我必须配置错误但我不确定是什么。在Hadoop资源管理器中,我可以看到作业,它显示每台机器都有足够的资源,所以我不明白导致问题的原因。

编辑:

从资源管理器添加了屏幕截图。这是否意味着我需要将条目更改为更高的数字?如果是这样,我该怎么做?

enter image description here

1 个答案:

答案 0 :(得分:0)

我能够通过注意到在Hadoop Web UI中我的datanode显示为活动但在资源管理器中没有显示活动节点来解决此问题。

通过将namenode和所有datanode上的yarn-site.xml修改为以下内容来修复问题:

<configuration>
<property>
   <name>yarn.nodemanager.aux-services</name>
   <value>mapreduce_shuffle</value>
</property>
<property>
   <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
   <value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
   <name>yarn.resourcemanager.scheduler.address</name>
   <value>master:8030</value>
</property>
<property>
   <name>yarn.resourcemanager.address</name>
   <value>master:8032</value>
</property>
<property>
   <name>yarn.resourcemanager.webapp.address</name>
   <value>master:8088</value>
</property>
<property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master:8031</value>
</property>
<property>
   <name>yarn.resourcemanager.admin.address</name>
   <value>master:8033</value>
</property>
</configuration>