我已经安装了Spark集群.它有4个节点,但是当我在集群上运行SparkPi示例时,只运行一个节点.我该如何解决?
一种可能性是,您正在本地模式下运行该示例.也就是说,该示例根本不使用集群.很容易验证这一点:停止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
.
另一种解释可能是由于某种原因只有一名工人与主人有联系.或者,主服务器仅出于某种原因将有限的资源分配给应用程序.您可以在主UI上检查这两个.(http://spark-master.example.com:8080/
)
最后,可能是您的数据被分成太少的分区,并且它们都被一台机器拾取.在上面的例子中,100
是分区数.如果省略它,则默认为2
.如果您的工作人员拥有2个或更多核心,则可能其中一个核心将获取两个分区.当您查看应用程序UI上执行的阶段时,您可以查看是否是这种情况.(http://localhost:4040/stages
)解决方案是增加分区数量.