Jobverzögerungen beheben

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:

  1. Überwachen Sie Logmesswerte wie CPU-Auslastung und Arbeitsspeicher, um die Jobanforderungen zu schätzen.

  2. Wenn Sie einen Jobcluster erstellen:

    1. Verwenden Sie für die Cluster-Master-VM einen Maschinentyp mit größerem Arbeitsspeicher.

    2. Wenn der Wert von 1GB pro Job Ihren Bedarf übersteigt, legen Sie das Clusterattribut dataproc:dataproc.scheduler.driver-size-mb auf einen Wert unter 1024 fest.

    3. 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:

  1. Wenn Sie einen Cluster erstellen, geschieht Folgendes:

    1. Erhöhen Sie den Wert des Clusterattributs dataproc:dataproc.scheduler.max-memory-used. Du kannst ihn beispielsweise über dem Standardwert von 0.90 auf 0.95 festlegen.
    2. Erhöhen Sie den Wert des Clusterattributs dataproc.scheduler.min-free-memory.mb. Der Standardwert ist 256 MB.

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:

  1. 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 Clusterattribut dataproc:dataproc.scheduler.job-submission-rate erstellen.

Jobstatus ansehen.

Informationen zum Jobstatus und -details finden Sie unter Monitoring und Fehlerbehebung für Jobs.