OOM-Effekte
Wenn bei Dataproc auf Compute Engine-VMs Fehler aufgrund des fehlenden Arbeitsspeichers auftreten:
Master- und Worker-VMs hängen für einen bestimmten Zeitraum ein.
OOM-Fehler bei Master-VMs führen dazu, dass Jobs mit dem Fehler „Aufgabe nicht übernommen“ fehlschlagen.
OOM-Fehler für Worker-VM verursachen einen Knotenverlust auf YARN-HDFS, wodurch die Ausführung von Dataproc-Jobs verzögert wird.
Einstellungen für Yarn-Speicher
Yarn bietet drei Arten von Speichersteuerelementen:
- Umfragebasiert (alt)
- Strikt
- Elastic
Standardmäßig legt Dataproc yarn.nodemanager.resource.memory.enabled
aus den folgenden Gründen nicht fest, um die YARN-Arbeitsspeichersteuerung zu aktivieren:
- Eine strikte Arbeitsspeichersteuerung kann dazu führen, dass Container beendet werden, wenn genügend Arbeitsspeicher vorhanden ist, wenn die Containergrößen nicht richtig konfiguriert sind.
- Anforderungen an die elastische Arbeitsspeichersteuerung können sich negativ auf die Ausführung von Jobs auswirken.
- YARN-Speichersteuerungen können OOM-Fehler nicht verhindern, wenn Prozesse übermäßig viel Arbeitsspeicher verbrauchen.
Dataproc-Speicherschutz
Wenn eine Dataproc-Cluster-VM unter Arbeitsspeicherauslastung steht, beendet der Dataproc-Speicherschutz Prozesse oder Container, bis die OOM-Bedingung entfernt wird.
Der Dataproc-Speicherschutz wird für die folgenden Clusterknoten in den folgenden Dataproc in Compute Engine-Image-Versionen bereitgestellt:
Rolle | 1,5 | 2.0 | 2.1 |
---|---|---|---|
Master-VM | 1.5.74+ | 2.0.48+ | Alle |
Worker-VM | Nicht verfügbar | 2.0.76+ | 2.1.24+ |
Treiberpool-VM | Nicht verfügbar | 2.0.76+ | 2.1.24+ |
Beendigungen des Dataproc-Arbeitsspeicherschutzes identifizieren
- Prozesse, bei denen der Dataproc-Speicherschutz den Exit mit dem Code
137
oder143
beendet. - Beendigung von Worker-Knoten:
- Dataproc erhöht den kumulativen Messwert
dataproc.googleapis.com/node/problem_count
und legtreason
aufProcessKilledDueToMemoryPressure
fest. - Wenn Cloud Logging aktiviert ist, schreibt Dataproc ein
google.dataproc.oom-killer
-Log mit der Meldung: „A process is killed due to storage Memory: [Prozessname].“ - Wenn ein YARN-Container beendet wird, schreibt Dataproc die folgende Nachricht in den YARN-Ressourcenmanager: „[Container-ID] wurde mit Code 137 beendet. Dies weist möglicherweise auf eine Speicherauslastung auf [Knoten-ID] hin.“
- Dataproc erhöht den kumulativen Messwert
- Beendigung des Master- oder Treiberpools: Der Jobtreiber schlägt mit
Driver received SIGTERM/SIGKILL signal and exited with [INT] code
fehl.
OOM-Lösungen
Dieser Abschnitt enthält Empfehlungen für die Beendigung von Jobs und Containern, die aus OOM-Problemen resultieren können.
Job schlägt mit folgender Fehlermeldung fehl: „Der Fahrer hat ein SIGTERM/SIGKILL-Signal empfangen und mit [INT]-Code beendet“.
Empfehlungen:
- Wenn die Cluster einen Treiberpool haben, erhöhen Sie
driver-required-memory-mb
auf die tatsächliche Arbeitsspeichernutzung des Jobs. - Wenn der Cluster keinen Treiberpool hat, erstellen Sie den Cluster neu. Dabei wird die maximale Anzahl gleichzeitiger Jobs als
(total master memory in MB - 3584MB) / driver-size-mb
berechnet. Sie können diese Anzahl mit den folgenden Methoden senken:dataproc:dataproc.scheduler.max-concurrent-jobs
festlegen, oder- Sie legen für
dataproc:dataproc.scheduler.driver-size-mb
eine größere Zahl fest (der Standardwert ist1024MB
).
- Erwägen Sie die Verwendung eines Master-Knoten-Maschinentyps mit zusätzlichem Arbeitsspeicher.
Container wurde mit Exit-Code 137 oder 143 beendet.
Empfehlungen:
Wenn der Dataproc-Arbeitsspeicherschutz den Container beendet hat (siehe Beendigung des Dataproc-Arbeitsspeicherschutzes ermitteln):
- Prüfen Sie, ob die Containergrößen richtig konfiguriert sind.
- Wir empfehlen,
yarn.nodemanager.resource.memory-mb
zu senken. Dieses Attribut steuert die Größe des Arbeitsspeichers, der für die Planung von YARN-Containern verwendet wird. - Wenn Jobcontainer regelmäßig fehlschlagen, prüfen Sie, ob eine Datenverzerrung zur erhöhten Nutzung bestimmter Container führt. Wenn ja, partitionieren Sie den Job neu oder erhöhen Sie die Worker-Größe, um den zusätzlichen Arbeitsspeicheranforderungen gerecht zu werden.