我安装了Spark群集。它有4个节点,但是当我在集群上运行SparkPi示例时,只运行一个节点。我该如何解决?
答案 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
)解决方案是增加分区数。