我创建了一个非常简单的基于Java的星火程序“单词计数”,并在一个运行在纱线上的集群中运行它,其中包含以下详细信息:
Hadoop详细信息:
主节点(NN,SNN,RM) - 192.168.0.100
从节点(DN,NM) - 192.168.0.105,192.168.0.108
火花细节:
大师跑: 192.168.0.100
流动工人: 192.168.0.105,192.168.0.108
我已经创建了一个客户端机器,在这里我提交了Spark作业(客户端机器的IP地址是-> 192.168.0.240)。
下面的命令用于将作业提交给Spark:
spark-submit --class com.example.WordCountTask --master yarn /root/SparkCodeInJava/word-count/target/word-count-1.0-SNAPSHOT.jar /spark/input/inputText.txt /spark/output
然而,程序完全没有终止,数据集非常小(10行文本),我希望它不会花费太多时间完成。
下面是提交作业后在控制台上看到的输出:
17/03/26 19:54:42 INFO yarn.Client: Application report for application_1490572543329_0001 (state: ACCEPTED)
17/03/26 19:54:43 INFO yarn.Client: Application report for application_1490572543329_0001 (state: ACCEPTED)
17/03/26 19:54:44 INFO yarn.Client: Application report for application_1490572543329_0001 (state: ACCEPTED)
17/03/26 19:54:45 INFO yarn.Client: Application report for application_1490572543329_0001 (state: ACCEPTED)
17/03/26 19:54:46 INFO yarn.Client: Application report for application_1490572543329_0001 (state: ACCEPTED)
这种情况将永远持续下去。我不知道为什么这件事没有完成。
这就是我在GUI中看到的这个应用程序:
以下是:纱线原木-applicationId application_1490572543329_0002的输出
17/03/26 20:24:09 WARN util.NativeCodeLoader: Unable to load native-hadoop libra
/tmp/logs/root/logs/application_1490572543329_0002 does not exist.
日志聚合尚未完成或未启用。
这是我的第一个星火程序,我配置成在纱线集群上运行它。
我使用运行在Virtualbox上的4VM‘s分操作系统来模拟分布式环境。
有人能帮我解释一下为什么这个程序不能正常运行吗?
更新:
我在AWS中设置了环境,有两个启动实例,配置良好(8 Vcpu和32 GB RAM),但工作仍未完成。
(A)纱线-site.xml
<property>
<name>yarn.nodemanager.auxservices</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>ip-XXX-YYYY-ZZZ-AAA.us-west-2.compute.internal:8032</value>
</property>
(B)在使用spark提交作业之后,我在控制台上显示的输出中看到了这一点:
17/03/29 15:51:35 INFO yarn.Client: Requesting a new application from cluster with **0 NodeManagers**
这和工作还没有完成有什么关系吗?
发布于 2017-03-29 20:56:54
从ERROR
消息中,
纱线应用状态:接受,等待AM容器的分配
17/03/29 15:51:35 INFO yarn.Client: Requesting a new application from cluster with **0 NodeManagers**
由于没有可用的活动NodeManager(s)
,纱线无法为Spark应用程序分配容器。
诺德曼用户使用属性yarn.resourcemanager.resource-tracker.address
与ResourceManager
通信。默认情况下,此属性的值设置为
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>${yarn.resourcemanager.hostname}:8031</value>
</property>
引用属性yarn.resourcemanager.hostname
默认为0.0.0.0
。除非正确定义RM主机名,否则Nodemanagers将无法与RM通信。
在yarn-site.xml
中为所有节点修改此属性
<property>
<name>yarn.resourcemanager.hostname</name>
<value>rm_hostname</value> <!-- Hostname of the node where Resource Manager is started -->
</property>
此外,属性yarn.nodemanager.auxservices
必须是yarn.nodemanager.aux-services
。
更改后重新启动服务。
发布于 2017-03-29 11:48:22
如果“接受”状态在任何时候继续,而不存在任何“失败”状态,这意味着群集资源分配允许您提交作业,但是当前没有空闲资源来启动容器中的作业。状态机看起来类似于hadoop任务
https://stackoverflow.com/questions/43091806
复制相似问题