为什么spark任务在单个节点上运行?

时间:2014-06-11 15:43:02

标签: apache-spark yarn

我安装了Spark群集。它有4个节点,但是当我在集群上运行SparkPi示例时,只运行一个节点。我该如何解决?

1 个答案:

答案 0 :(得分:10)

一种可能性是,您以本地模式运行示例。也就是说,该示例根本不使用集群。很容易验证这一点:停止Spark master并查看示例是否仍然有效。

http://spark.apache.org/docs/latest/submitting-applications.html介绍了如何运行示例。

bin/spark-submit \
  --class org.apache.spark.examples.SparkPi \
  --master local \
  /path/to/examples.jar \
  100

您需要将local替换为spark://spark-master.example.com:7077

另一种解释可能是由于某种原因,只有一名工作人员已连接。或者,由于某种原因, master仅为应用程序分配了有限的资源。您可以在主UI上检查这两个。 (http://spark-master.example.com:8080/

最后,可能是您的数据被拆分为太少的分区,并且它们都被一台机器选中。在上面的示例中,100是分区数。如果省略它,则默认为2。如果您的工作人员拥有2个或更多核心,则可能其中一个核心将获取两个分区。当您查看应用程序UI上执行的阶段时,您可以查看是否是这种情况。 (http://localhost:4040/stages)解决方案是增加分区数。