我是Spark的新手并且知道转换发生在工作者和驱动程序上的操作,但是中间操作可能会发生(如果操作是可交换的和关联的)工作者也会给出实际的并行性。
我怎样才能找到驱动程序的相关部分和执行程序的内容?
更新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()
我总是得到一个顺序时间表:
这不意味着它不会根据事件的时间线并行发生吗?我在提交作业时出错还是Spark中的相关计算不平行?
更新3: 我甚至尝试添加另一个执行器,仍然是相同的seqquential treeAggreagate。 我按照这里提到的设置了火花簇: http://paxcel.net/blog/how-to-setup-apache-spark-standalone-cluster-on-multiple-machine/
答案 0 :(得分:0)
您的陈述并不完全准确。驱动程序的容器[executor]在客户端/边缘节点或集群上启动,具体取决于spark提交模式,例如:客户或纱线。这些操作由工人执行,结果将发送回驱动程序(例如收集)
这已经得到了解答。请参阅以下链接了解更多详情。 When does an action not run on the driver in Apache Spark?