Apache Spark Correlation仅在驱动程序上运行

时间:2017-06-29 13:59:38

标签: apache-spark pyspark apache-spark-mllib

我是Spark的新手并且知道转换发生在工作者和驱动程序上的操作,但是中间操作可能会发生(如果操作是可交换的和关联的)工作者也会给出实际的并行性。

我查看了相关性和协方差代码:https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/stat/correlation/PearsonCorrelation.scala

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/linalg/distributed/RowMatrix.scala

我怎样才能找到驱动程序的相关部分和执行程序的内容?

更新1 :我正在谈论运行关联的设置是由多个VM组成的群集设置。 在这里查看SparK Web UI中的图像:Distributed cross correlation matrix computation

更新2

我将我的群集设置为独立模式,例如它是3节点群集,1个主/驱动程序(实际机器:工作站)和2个VM从属/执行程序。 提交这样的工作 ./bin/spark-submit --master spark://192.168.0.11:7077 examples/src/main/python/mllib/correlations_example.pÿ 来自主节点

我的相关示例文件是correlations_example.py:

data = sc.parallelize(np.array([range(10000000), range(10000000, 20000000),range(20000000, 30000000)]).transpose()) 
print(Statistics.corr(data, method="pearson")) 
sc.stop()

我总是得到一个顺序时间表:

enter image description here

这不意味着它不会根据事件的时间线并行发生吗?我在提交作业时出错还是Spark中的相关计算不平行?

更新3: 我甚至尝试添加另一个执行器,仍然是相同的seqquential treeAggreagate。 我按照这里提到的设置了火花簇: http://paxcel.net/blog/how-to-setup-apache-spark-standalone-cluster-on-multiple-machine/

1 个答案:

答案 0 :(得分:0)

您的陈述并不完全准确。驱动程序的容器[executor]在客户端/边缘节点或集群上启动,具体取决于spark提交模式,例如:客户或纱线。这些操作由工人执行,结果将发送回驱动程序(例如收集)

这已经得到了解答。请参阅以下链接了解更多详情。 When does an action not run on the driver in Apache Spark?