Fehlerbehebung bei Verzögerungen bei Jobs

Auf dieser Seite werden häufige Ursachen für Verzögerungen bei der Planung von Dataproc-Jobs aufgeführt. Außerdem finden Sie hier Informationen, die Ihnen helfen können, diese zu vermeiden.

Übersicht

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

  • Zu viele aktive Jobs
  • Hohe Arbeitsspeichernutzung des Systems
  • Nicht genügend freier Speicher
  • Ratenbegrenzung wurde überschritten

Normalerweise wird die Meldung zur Jobverzögerung im folgenden Format ausgegeben:

Awaiting execution [SCHEDULER_MESSAGE]"

In den folgenden Abschnitten finden Sie mögliche Ursachen und Lösungen für bestimmte Szenarien, in denen es zu Verzögerungen bei Jobs kommt.

Zu viele aktive 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 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 1 Job pro GB.

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

Lösungen:

  1. Überwachen Sie Log-Messwerte wie CPU- und Arbeitsspeichernutzung, um die Jobanforderungen zu schätzen.

  2. Wenn Sie einen Jobcluster erstellen, gilt Folgendes:

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

    2. Wenn 1GB pro Job mehr ist, als Sie benötigen, legen Sie die dataproc:dataproc.scheduler.driver-size-mb-Clustereigenschaft 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.

Viel Systemspeicher oder nicht genügend freier Speicher

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 dieser Grenzwert erreicht ist, 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, gilt Folgendes:

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

Job-Ratenlimit überschritten

Planernachricht:

Throttling job xxx__JOBID___xxx (and maybe others): Rate limit

Ursachen:

Der Dataproc-Agent hat das Limit für die Job-Einreichungsrate erreicht.

Lösungen:

  1. Standardmäßig ist die Jobübergabe des Dataproc-Agents auf 1.0 QPS begrenzt. Sie können beim Erstellen eines Clusters mit dem Clusterattribut dataproc:dataproc.scheduler.job-submission-rate einen anderen Wert festlegen.

Jobstatus ansehen

Informationen zum Aufrufen des Jobstatus und der Jobdetails finden Sie unter Monitoring und Fehlerbehebung für Jobs.