Auf dieser Seite werden häufige Ursachen von Verzögerungen bei der Planung von Dataproc-Jobs aufgeführt sowie Informationen zur Vermeidung dieser Verzögerungen.
Überblick
Im Folgenden sind häufige Gründe aufgeführt, warum ein Dataproc-Job verzögert (gedrosselt) wird:
- Zu viele laufende Jobs
- Hohe Systemspeichernutzung
- Nicht genügend freier Speicher
- Ratenbegrenzung wurde überschritten
In der Regel wird die Jobverzögerungsnachricht im folgenden Format ausgegeben:
Awaiting execution [SCHEDULER_MESSAGE]"
In den folgenden Abschnitten werden mögliche Ursachen und Lösungen für bestimmte Jobverzögerungsszenarien beschrieben.
Zu viele laufende Jobs
Planernachricht:
Throttling job ### (and maybe others): Too many running jobs (current=xx max=xx)
Ursachen:
Die maximale Anzahl gleichzeitiger Jobs basierend auf dem Arbeitsspeicher der Master-VM wurde überschritten (der Jobtreiber wird auf der Master-VM des Dataproc-Clusters ausgeführt). Standardmäßig reserviert Dataproc 3,5 GB Arbeitsspeicher für Anwendungen und lässt 1 Job pro GB zu.
Beispiel: Der Maschinentyp n1-standard-4
hat 15GB
Arbeitsspeicher. Da 3.5GB
für Overhead reserviert ist, bleibt 11.5GB
erhalten. Durch das Abrunden auf eine Ganzzahl ist 11GB
für bis zu 11 gleichzeitige Jobs verfügbar.
Lösungen:
Überwachen Sie Logmesswerte wie CPU-Auslastung und Arbeitsspeicher, um die Jobanforderungen zu schätzen.
Wenn Sie einen Jobcluster erstellen:
Verwenden Sie für die Cluster-Master-VM einen Maschinentyp mit größerem Arbeitsspeicher.
Wenn der Wert von
1GB
pro Job Ihren Bedarf übersteigt, legen Sie das Clusterattributdataproc:dataproc.scheduler.driver-size-mb
auf einen Wert unter1024
fest.Legen Sie das Clusterattribut
dataproc:dataproc.scheduler.max-concurrent-jobs
auf einen Wert fest, der Ihren Jobanforderungen entspricht.
Großer Systemspeicher oder nicht genügend freier Arbeitsspeicher
Planernachricht:
Throttling job xxx_____JOBID_____xxx (and maybe others): High system memory usage (current=xx%)
Throttling job xxx_____JOBID_____xxx (and maybe others): Not enough free memory (current=xx min=xx)
Ursachen:
Standardmäßig drosselt der Dataproc-Agent die Jobübermittlung, wenn die Speichernutzung 90 % erreicht (0.9)
). Wenn dieses Limit erreicht wird, können keine neuen Jobs geplant werden.
Der freie Arbeitsspeicher, der zum Planen eines anderen Jobs im Cluster benötigt wird, ist nicht ausreichend.
Lösung:
Wenn Sie einen Cluster erstellen, geschieht Folgendes:
- Erhöhen Sie den Wert des Clusterattributs
dataproc:dataproc.scheduler.max-memory-used
. Du kannst ihn beispielsweise über dem Standardwert von0.90
auf0.95
festlegen. - Erhöhen Sie den Wert des Clusterattributs
dataproc.scheduler.min-free-memory.mb
. Der Standardwert ist256
MB.
- Erhöhen Sie den Wert des Clusterattributs
Limit für Jobrate überschritten
Planernachricht:
Throttling job xxx__JOBID___xxx (and maybe others): Rate limit
Ursachen:
Der Dataproc-Agent hat die Ratenbegrenzung für das Senden von Jobs erreicht.
Lösungen:
- Standardmäßig ist das Senden von Dataproc-Agent-Jobs auf
1.0 QPS
begrenzt. Sie können diesen Wert ändern, wenn Sie einen Cluster mit dem Clusterattributdataproc:dataproc.scheduler.job-submission-rate
erstellen.
Jobstatus ansehen.
Informationen zum Jobstatus und -details finden Sie unter Monitoring und Fehlerbehebung für Jobs.