Ich bin neu bei Spark auf YARN und verstehe nicht die Beziehung zwischen dem YARN Containers
und dem Spark Executors
. Ich habe die folgende Konfiguration basierend auf den Ergebnissen des Skripts yarn-utils.py
ausprobiert, mit dem die optimale Clusterkonfiguration ermittelt werden kann.Funke auf YARN Ressourcenmanager: Beziehung zwischen YARN Containern und Spark Executors
Die Hadoop Cluster (HDP 2.4) ich arbeite:
- 1 Master-Knoten:
- CPU: 2 CPUs mit 6 Adern jeweils = 12 Kerne
- RAM: 64 GB
- SSD: 2 x 512 GB
- 5 Slave-Knoten:
- CPU: 2 CPUs mit 6 Adern jeweils = 12 Kerne
- RAM: 64 GB
- HDD: 4 x 3 TB = 12 TB
- HBase installiert ist (dies ist einer der Parameter, für das Skript unten)
So lief ich python yarn-utils.py -c 12 -m 64 -d 4 -k True
(c = Kern, m = Speicher, d = hdds, k = hbase installiert) und bekam folgendes Ergebnis:
Using cores=12 memory=64GB disks=4 hbase=True
Profile: cores=12 memory=49152MB reserved=16GB usableMem=48GB disks=4
Num Container=8
Container Ram=6144MB
Used Ram=48GB
Unused Ram=16GB
yarn.scheduler.minimum-allocation-mb=6144
yarn.scheduler.maximum-allocation-mb=49152
yarn.nodemanager.resource.memory-mb=49152
mapreduce.map.memory.mb=6144
mapreduce.map.java.opts=-Xmx4915m
mapreduce.reduce.memory.mb=6144
mapreduce.reduce.java.opts=-Xmx4915m
yarn.app.mapreduce.am.resource.mb=6144
yarn.app.mapreduce.am.command-opts=-Xmx4915m
mapreduce.task.io.sort.mb=2457
Diese Einstellungen habe ich über die Ambari-Schnittstelle vorgenommen und den Cluster neu gestartet. Die Werte stimmen auch grob mit dem überein, was ich zuvor manuell berechnet habe.
Ich habe jetzt Probleme
- die optimalen Einstellungen für meinen
spark-submit
Skript- Parameter
--num-executors
, finden--executor-cores
&--executor-memory
.
- Parameter
- die Beziehung zwischen dem GARN Behälter zu erhalten und dem Spark-Testamentsvollstrecker
- der Hardware-Informationen in meinem Spark-History UI (weniger Speicher als ich durch Multiplikation mit dem Arbeitsknoten Menge an Gesamtspeichern (wenn berechnet gesetzt gezeigt zu verstehen))
- das Konzept des
vcores
in GARN verstehen, hier konnte ich keine nützliche Beispiele noch
aber ich diesen Beitrag finden gefunden What is a container in YARN?, aber diese helfen nicht wirklich, wie es doesn‘ t beschreiben die Beziehung zum Executor s.
Kann jemand helfen, eine oder mehrere der Fragen zu lösen?