【问题标题】:Apache Spark Correlation only runs on driverApache Spark Correlation 仅在驱动程序上运行
【发布时间】:2017-06-30 19:54:08
【问题描述】:

我是 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.py 从主节点

我的相关示例文件是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()

我总是得到一个连续的时间表:

这是否意味着它不会根据事件的时间轴并行发生?我在 Spark 中的作业提交或相关计算不并行时做错了吗?

更新 3: 我什至尝试添加另一个执行程序,仍然是相同的顺序树聚合。 我设置了火花簇,如此处所述: http://paxcel.net/blog/how-to-setup-apache-spark-standalone-cluster-on-multiple-machine/

【问题讨论】:

  • 我不明白你的更新。那么现在的问题是什么?
  • 你问了两次是不是同一个问题?
  • 不,这个问题是关于 Spark 相关性的实现,它基于查看代码并找出驱动程序发生了什么以及执行程序发生了什么。我链接的问题是关于我的实验。
  • 假设这件事的执行者身上发生了一切,除了微风矩阵中的返回结果。

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


【解决方案1】:

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

这个问题已经回答了。有关详细信息,请参阅下面的链接。 When does an action not run on the driver in Apache Spark?

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2015-08-27
  • 2016-05-14
  • 2016-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-05-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多