Mit Pipelines können Sie die CPUs und den Arbeitsspeicher angeben, die dem Treiber und den einzelnen Executor. Sie können Ressourcen in den Pipelinekonfigurationen von Cloud Data Fusion Studio konfigurieren. Weitere Informationen finden Sie unter Pipelinekonfigurationen verwalten.
Auf dieser Seite finden Sie die Richtlinien dazu, wie viele Treiber- und Executor-Ressourcen zum für Ihren Anwendungsfall konfigurieren.
Treiber
Da der Treiber wenig Arbeit macht, sind standardmäßig 1 CPU und 2 GB erforderlich. für die Ausführung der meisten Pipelines aus. Möglicherweise müssen Sie den Speicher für Pipelines erhöhen, die viele Phasen oder große Schemas enthalten. Wie bereits unter Parallele Verarbeitung von JOINs erwähnt, müssen die In-Memory-Datasets in den Arbeitsspeicher des Treibers passen, wenn in der Pipeline In-Memory-Joins ausgeführt werden.
Executor
Beachten Sie die folgenden Richtlinien zu CPU- und Arbeitsspeicherressourcen.
CPU
Die Anzahl der CPUs, die einem Executor zugewiesen sind, bestimmt die Anzahl der Aufgaben, die der Executor parallel ausführen kann. Für jede Datenpartition ist eine Aufgabe zur Verarbeitung erforderlich. In den meisten Fällen ist es am einfachsten, die Anzahl der CPUs auf „1“ festzulegen und sich stattdessen auf die Anpassung des Arbeitsspeichers zu konzentrieren.
Speicher
Für die meisten Pipelines reichen 4 GB Arbeitsspeicher des Executors aus, um die Pipeline auszuführen. Stark verzerrte Multi-Terabyte-Joins wurden mit 4 GB Executor-Arbeitsspeicher. Die Ausführungsgeschwindigkeit lässt sich Speicherkapazität erhöhen, aber dafür ist ein gutes Verständnis Ihre Daten und Ihre Pipeline.
Spark teilt den Speicher in mehrere Abschnitte auf. Ein Abschnitt ist für Spark reserviert zur internen Nutzung, ein weiterer zur Ausführung und Speicherung.
Standardmäßig umfasst der Speicher- und Ausführungsbereich etwa 60 % des gesamten Arbeitsspeichers. spark.memory.fraction configuration
-Attribut von Spark (standardmäßig 0,6)
bestimmt diesen Prozentsatz. Dieser Wert eignet sich für die meisten Arbeitslasten und muss normalerweise nicht angepasst werden.
Der Bereich „Speicher und Ausführung“ ist weiter in separate Bereiche für Speicher und Ausführung unterteilt. Standardmäßig haben diese Bereiche dieselbe Größe. Sie können sie jedoch anpassen, indem Sie spark.memory.storageFraction
(Standardwert: 0,5) festlegen, um zu steuern, welcher Prozentsatz des Bereichs für den Speicher reserviert ist.
Im Speicherplatz werden Daten im Cache gespeichert. Im Ausführungsbereich werden Daten für Zufallsmix, Join, Sortierung und Aggregation gespeichert. Wenn im Ausführungsbereich zusätzlicher Speicherplatz vorhanden ist, kann Spark einen Teil davon für Speicherdaten verwenden. Ausführungsdaten werden jedoch niemals verwendet wird.
Wenn Sie wissen, dass Ihre Pipeline keine Daten im Cache speichert, können Sie den Speicherverbrauch um mehr Platz für Ausführungsanforderungen zu lassen.
Wichtiger Hinweis: YARN-Containerarbeitsspeicher
Die Einstellung für den Executor-Speicher steuert den Heap-Speicher, der dem
Executors. Spark fügt zusätzlichen Arbeitsspeicher
für den Off-Heap-Speicher hinzu,
wird über die Einstellung spark.executor.memoryOverhead
gesteuert, die standardmäßig auf
384m. Das bedeutet, dass die Speichermenge, die YARN für jeden Executor reserviert,
höher als die in der Konfiguration der Pipeline-Ressourcen festgelegte Zahl. Beispiel:
Wenn Sie den Executor-Arbeitsspeicher auf 2048 m einstellen, fügt Spark dieser Zahl 384 m hinzu und
YARN für einen 2.432 m langen Container. Außerdem rundet YARN die Anfragenummer auf
ein Vielfaches von yarn.scheduler.increment-allocation-mb
, was standardmäßig den Wert
Wert von yarn.scheduler.minimum-allocation-mb
Wenn der Wert auf 512 festgelegt ist, rundet YARN 2.432 m auf 2.560 m auf. Bei einem Wert von 1024 rundet YARN den
2.432 bis 3.072 m. Dieser Punkt ist nützlich, wenn Sie die Größe bestimmen
jedes Worker-Knotens in Ihrem Cluster.