Ich benutze den Quickstart Cloudera VM (CDH 5.10.1) mit Pyspark (1.6.0) und Garn (MR2 inklusive) um numerische Daten pro Stunde zu aggregieren. Ich habe 1 CPU mit 4 Kernen und 32 Go RAM.Spark-submit nur 1 Executor erstellen, wenn pyspark interactive shell 4 erstellt (beide mit Garn-Client)
Ich habe eine Datei bekomme aggregate.py genannt, aber bis heute habe ich nie den Job mit spark-submit
vorgelegt, benutzen ich pyspark
interaktiv Shell und kopieren/fügen Sie den Code zu testen. Beim Start pyspark interaktiv Shell I verwendet:
pyspark --master yarn-client
I die Behandlung in dem Web-UI zugänglichen quickstart.cloudera gefolgt: 8088/cluster und konnte sehen, dass Yarn erstellt 3 Zieher und 1-Fahrer mit einem Kern jedem (Keine gute Konfiguration, aber der Hauptzweck ist es, ein Proof of concept zu machen, bis wir zu einem echten Cluster verschieben)
Wenn den gleichen Code mit der Einreichung Funken einreichen:
spark-submit --verbose
--master yarn
--deploy-mode client \
--num-executors 2 \
--driver-memory 3G \
--executor-memory 6G \
--executor-cores 2 \
aggregate.py
Ich habe nur den Treiber, der auch die Aufgaben ausführt. Beachten Sie, dass spark.dynamicAllocation.enabled
auf true in der Registerkarte Umgebung festgelegt ist, und spark.dynamicAllocation.minExecutors
auf 2 gesetzt
ich nur mit spark-submit aggregate.py
versucht, ich habe immer noch nur den Treiber als Vollstrecker. Ich kann nicht mehr als 1 Executor mit Spark-Submit haben, aber es funktioniert in Spark interactive shell!
My Yarn-Konfiguration ist wie folgt:
yarn.nodemanager.resource.memory-mb
= 17 GiB
yarn.nodemanager.resource.cpu-vcores
= 4
yarn.scheduler.minimum-allocation-mb
= 3 GiB
yarn.scheduler.maximum-allocation-mb
= 16 GiB
yarn.scheduler.minimum-allocation-vcores
= 1
yarn.scheduler.maximum-allocation-vcores
= 2
Wenn jemand mir erklären kann, was ich falsch mache, wäre es eine große Hilfe!
'Funken einreichen --verbose --master Garn --deploy-Modus-Client \ --num-Vollstrecker 2 \ - Executor-Cores 2 \ aggregate.py' –