Apache spark Spark作业从不从接受状态进行,并挂起状态为未定义

Apache spark Spark作业从不从接受状态进行,并挂起状态为未定义,apache-spark,hadoop,Apache Spark,Hadoop,我有一个简单的hadoop集群,由一个主节点和两个从节点组成。我已安装spark,正在尝试从spark示例运行建议的示例作业: ./bin/run-example SparkPi 10 看起来好像所有内容都已正确提交到,作业的状态已更新为已接受,但仍保持此状态。在检查输出时,我发现以下情况: 2018-05-21 16:27:41 INFO Client:54 - Application report for application_1526910547092_0004 (state: A

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

./bin/run-example SparkPi 10
看起来好像所有内容都已正确提交到,作业的状态已更新为已接受,但仍保持此状态。在检查输出时,我发现以下情况:

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
<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>
2018-05-21 16:27:41信息客户:54-申请报告
申请书_1526910547092_0004(状态:已接受)
2018-05-21 16:27:41信息客户:54-
客户端令牌:不适用
诊断:[Mon May 21 16:27:40+0200 2018]应用程序已添加到计划程序,尚未激活。正在跳过AM分配,因为群集资源为空。详细信息:AM分区=;AM资源请求=;AM=的队列资源限制;队列的用户AM资源限制=;队列AM资源使用率=;
ApplicationMaster主机:不适用
ApplicationMaster RPC端口:-1
队列:默认值
开始时间:1526912860005
最终状态:未定义
跟踪URL:http://vm-10-155-208-189:8088/proxy/application_1526910547092_0004/
用户:root
具体如下:应用程序已添加到调度程序,但尚未激活。正在跳过AM分配,因为群集资源为空。详细信息:AM分区=;AM资源请求=;AM=的队列资源限制;队列的用户AM资源限制=;队列AM资源使用率=

所以这似乎意味着我对可用内存设置了0的限制,而对vCores设置了0的限制

我的机器每个都有8GB的RAM和至少20GB的可用空间,所以我不知道为什么这个作业从来没有分配过任何资源

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

我一定是配置不正确,但我不确定是什么。在Hadoop资源管理器中,我可以看到作业,它显示每台机器都有足够的资源,所以我不知道是什么导致了问题

编辑:

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


我注意到,在Hadoop web UI中,我的数据节点显示为活动节点,但在资源管理器中,没有显示活动节点,从而解决了这个问题

通过将namenode和所有datanodes上的warn-site.xml修改为以下内容,问题得以解决:

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
<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>

纱线.节点管理器.辅助服务
mapreduce_shuffle
warn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
warn.resourcemanager.scheduler.address
船长:8030
.resourcemanager.address
船长:8032
warn.resourcemanager.webapp.address
船长:8088
warn.resourcemanager.resource-tracker.address
船长:8031
warn.resourcemanager.admin.address
船长:8033

看起来您的所有资源都已分配,因此无法启动更多作业。检查Spark UI或Thread,查看您拥有多少资源以及它们是如何分配的。也许有些挂起作业除了锁定所有内存/CPU外什么也不做。据我所知,有足够的可用资源。没有一台机器在做任何事情,这是我提交的第一份工作。所以没有别的东西在运行。。。