2017-06-29 4 views
0

Ich bin neu in Spark und lernen, dass Transformationen auf Arbeiter und Aktion auf dem Treiber passieren, aber die Zwischenaktion kann passieren (wenn die Operation ist kommutativ und assoziativ) bei den Arbeitern auch, die die tatsächliche gibt Parallelität.Apache Spark Korrelation läuft nur auf Treiber

Ich sah in die Korrelation und Kovarianz Code: 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

Wie kann ich feststellen, welcher Teil der Korrelation auf dem Fahrer geschehen ist und was bei Testamentsvollstrecker?

Update 1: Das Setup, von dem ich spreche, um die Korrelation auszuführen, ist das Cluster-Setup, das aus mehreren VMs besteht. Schauen Sie hier für die Bilder aus dem SPARK Web UI: Distributed cross correlation matrix computation

Update 2

ich mein Setup-Cluster im Standalone-Modus, wie es ein 3 Knoten-Cluster, 1 war Master/Treiber (Ist-Maschine: Workstation) und 2 VM-Slaves/Executor. den Job wie dieser ./bin/spark-submit --master spark://192.168.0.11:7077 examples/src/main/python/mllib/correlations_example.p y von Master-Knoten

Meine Korrelation Beispieldatei abzulegen 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() 

Ich bekomme immer eine sequentielle Zeitleiste als:

enter image description here

Bedeutet das nicht, dass es nicht parallel geschieht, basierend auf der Zeitleiste der Ereignisse? Mache ich etwas falsch mit der Job-Einreichung oder Korrelationsberechnung in Spark ist nicht parallel?

Update 3: Ich versuchte sogar noch einen weiteren Executor hinzuzufügen, immer noch die gleiche seqquential treeAggreagate. Ich setze den Funkencluster wie hier erwähnt: http://paxcel.net/blog/how-to-setup-apache-spark-standalone-cluster-on-multiple-machine/

+0

Ich verstehe Ihr Update nicht. Also, was ist die Frage jetzt? – eliasah

+0

Werfen Sie einen Blick: https://stackoverflow.com/questions/42304059/distributed-cross-correlation-matrix-computation –

+0

Ist es die gleiche Frage, die Sie zweimal fragen? – eliasah

Antwort

0

Ihre Aussage ist nicht ganz genau. Der Container [Ausführender] für den Treiber wird auf dem Client/Edge-Knoten oder auf dem Cluster gestartet, abhängig von dem Funkenübermittlungsmodus, z. Kunde oder Garn. Die Aktionen werden von den Arbeitern ausgeführt und die Ergebnisse werden an den Fahrer zurückgesendet (z. B. sammeln).

Dies wurde bereits beantwortet. Siehe Link unten für weitere Details. When does an action not run on the driver in Apache Spark?

+0

Aktualisiert die Frage und ich spreche über den Cluster und siehe https://stackoverflow.com/questions/42304059/distributed-cross-correlation-matrix-computation –