Ich habe Spark auf einem Cloudera CDH5.3-Cluster ausgeführt, wobei YARN als Ressourcenmanager verwendet wird. Ich entwickle Spark Apps in Python (PySpark).
Ich kann Jobs einreichen und sie werden erfolgreich ausgeführt, scheinen jedoch nie auf mehr als einem Computer ausgeführt zu werden (dem lokalen Computer, von dem aus ich den Computer sende).
Ich habe eine Vielzahl von Optionen ausprobiert, wie zum Beispiel: --deploy-mode auf Cluster und --master auf Garn-client und yarn-cluster einzustellen, aber es scheint nie auf mehr als einem Server zu laufen.
Ich kann es auf mehr als einem Kern laufen lassen, indem ich etwas --master local [8] übergebe, aber das verteilt die Verarbeitung offensichtlich nicht über mehrere Knoten.
Ich habe ein sehr einfaches Python-Skript, das Daten von HDFS wie folgt verarbeitet:
%Vor%Und ich führe einen Submit-Befehl wie:
aus %Vor%Was kann ich tun, um sicherzustellen, dass der Job im gesamten Cluster parallel ausgeführt wird?
Können Sie die Argumente für den Befehl austauschen? spark-submit --deploy-mode-client --master yarn-client atest.py
Wenn Sie den Hilfetext für den Befehl sehen:
Ich glaube, dass @MrChristine korrekt ist - die von Ihnen angegebenen Optionsflags werden an Ihr Python-Skript übergeben, nicht an funke-submit. Außerdem sollten Sie --executor-cores
und --num-executors
angeben, da diese standardmäßig auf einem einzelnen Kern ausgeführt werden und zwei Executoren verwenden.
Es stimmt nicht, dass das Python-Skript nicht im Cluster-Modus ausgeführt wird. Ich bin mir nicht sicher über vorherige Versionen, aber dies wird in der funke 2.2-Version auf Hortonworks-Cluster ausgeführt.
Befehl: spark-supply --master Garn --num-executors 10 --executor-cores 1 --driver-memory 5g /pyspark-example.py
Python-Code:
%Vor%Ausgabe: Es ist groß, also klebe ich nicht. Aber es läuft perfekt.
Tags und Links apache-spark yarn pyspark cloudera-cdh