2014-10-16 102 views
1

我有一个3节点集群。运行Hadoop 2.4.1和Spark 1.1.0(编译为在Hadoop上运行的版本)。当我在纱线客户端模式下运行我的应用程序(读取和写入到HDFS的Spark SQL查询的结果)时,它完美运行,但是当我在yarn-cluster中运行时,我注意到只有服务器具有执行程序。仅在纱线集群模式下的服务器上运行的Spark任务

我看到

http://<server>:8088/cluster 

点击应用程序就可以看到任务的详细信息,执行时间等,并打开星火应用主跟踪网址:

http://<server>:8088/proxy/application_id/ 

在这个网址我请注意,在EXECUTORS选项卡中,我只有namenode的执行者

这就是我如何运行我的应用程序

$ bin/spark-submit --class "categoriasFacturas" --master yarn-cluster --num-executors 3 --driver-memory 512m --executor-memory 512m target/scala-2.10/merge-categoria_2.10-1.0.jar 

spark和hadoop中的从站文件列出了相同的3个节点,服务器和其他2台机器。 HDFS看起来很好配置在

http://<server>:50070/dfshealth.html 

我看到DFS容量是3台机器的组合大小。活节点列出了3台机器。

如何确保应用程序的工作负载在整个群集节点之间分配?

P.S:发布所有配置文件会混淆问题,所以请。如果您需要更多详细信息,请询问我将发表评论。

回答

2

冲突位于yarn-site.xml,它在主节点上配置并在整个群集中复制。它看起来像这样:

<property> 
    <name>yarn.resourcemanager.resource-tracker.address</name> 
    <value>localhost:8025</value> 
</property> 
<property> 
    <name>yarn.resourcemanager.scheduler.address</name> 
    <value>localhost:8030</value> 
</property> 
<property> 
    <name>yarn.resourcemanager.address</name> 
    <value>localhost:8050</value> 
</property> 

资源管理器指向localhost而不是namenode。将其更改为“服务器”。

<property> 
    <name>yarn.resourcemanager.resource-tracker.address</name> 
    <value>server:8025</value> 
</property> 
<property> 
    <name>yarn.resourcemanager.scheduler.address</name> 
    <value>server:8030</value> 
</property> 
<property> 
    <name>yarn.resourcemanager.address</name> 
    <value>server:8050</value> 
</property> 

现在工作负载分布在集群中。我现在面临的麻烦是我看不到Spark Application Master(正在运行的应用程序的详细信息),但我会看看我能做些什么。

+0

我做了正确的配置,如上所述,但它仍然只运行在1节点上,你知道为什么吗? – anunixercoder 2016-08-18 10:40:20

相关问题