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

Sco*_*Xia 3 hadoop-yarn apache-spark

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

Dan*_*bos 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
Run Code Online (Sandbox Code Playgroud)

你需要替换local类似的东西spark://spark-master.example.com:7077.

另一种解释可能是由于某种原因只有一名工人与主人有联系.或者,主服务器仅出于某种原因将有限的资源分配给应用程序.您可以在主UI上检查这两个.(http://spark-master.example.com:8080/)

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