Fehlerbehebung bei Verzögerungen bei Jobs

Auf dieser Seite werden häufige Ursachen für Verzögerungen bei der Jobplanung in Dataproc aufgeführt. Außerdem finden Sie Informationen, mit denen Sie diese vermeiden können.

Übersicht

Im Folgenden sind häufige Gründe für Verzögerungen (Drosselung) bei Dataproc-Jobs aufgeführt:

  • Zu viele laufende Jobs
  • Hohe Systemspeichernutzung
  • Nicht genügend freier Arbeitsspeicher
  • Ratenbegrenzung wurde überschritten

Die Nachricht zur Verzögerung des Jobs hat in der Regel das folgende Format:

Awaiting execution [SCHEDULER_MESSAGE]"

In den folgenden Abschnitten werden mögliche Ursachen und Lösungen für bestimmte Szenarien mit Verzögerungen bei Jobs beschrieben.

Zu viele laufende Jobs

Nachricht des Planers:

Throttling job ### (and maybe others): Too many running jobs (current=xx max=xx)

Ursachen:

Die maximale Anzahl gleichzeitiger Jobs, die auf dem Arbeitsspeicher der Master-VM basieren, wird überschritten (der Job-Treiber wird auf der Master-VM des Dataproc-Clusters ausgeführt). Standardmäßig reserviert Dataproc 3,5 GB Arbeitsspeicher für Anwendungen und erlaubt einen Job pro GB.

Beispiel: Der Maschinentyp n1-standard-4 hat 15GB Arbeitsspeicher. Da 3.5GB für den Overhead reserviert ist, bleiben 11.5GB übrig. Gerundet auf eine Ganzzahl ist 11GB für bis zu 11 gleichzeitige Jobs verfügbar.

Lösungen:

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

  2. Wenn Sie einen Jobcluster erstellen, gilt Folgendes:

    1. Verwenden Sie für die Cluster-Master-VM einen Maschinentyp mit mehr Arbeitsspeicher.

    2. Wenn 1GB pro Job mehr ist, als Sie benötigen, legen Sie für die Cluster-Propertydataproc:dataproc.scheduler.driver-size-mb einen Wert unter 1024 fest.

    3. Legen Sie für das Clusterattribut dataproc:dataproc.scheduler.max-concurrent-jobs einen Wert fest, der Ihren Jobanforderungen entspricht.

Zu viel Systemspeicher oder nicht genügend freier Arbeitsspeicher

Nachricht des Planers:

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 Jobeinreichung, wenn die Speichernutzung 90% (0.9)) erreicht. Wenn dieses Limit erreicht wird, können keine neuen Jobs geplant werden.

Der freie Arbeitsspeicher, der zum Planen eines weiteren Jobs im Cluster erforderlich ist, reicht nicht aus.

Lösung:

  1. Wenn Sie einen Cluster erstellen, geschieht Folgendes:

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

Job-Frequenzlimit überschritten

Nachricht des Planers:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Ursachen:

Der Dataproc-Agent hat die maximale Rate für die Jobeinreichung erreicht.

Lösungen:

  1. Standardmäßig ist die Einreichung von Dataproc-Agent-Jobs auf 1.0 QPS begrenzt. Sie können einen anderen Wert festlegen, wenn Sie einen Cluster mit der dataproc:dataproc.scheduler.job-submission-rate-Clustereigenschaft erstellen.

Jobstatus ansehen

Informationen zum Jobstatus und zu den Jobdetails finden Sie unter Monitoring und Fehlerbehebung für Jobs.