Verzögerungen bei Jobs beheben

Auf dieser Seite finden Sie häufige Ursachen für Verzögerungen bei der Planung von Managed Service for Apache Spark-Jobs sowie Informationen, die Ihnen helfen können, diese zu vermeiden.

Übersicht

Hier sind einige häufige Gründe, warum ein Managed Service for Apache Spark-Job verzögert (gedrosselt) wird:

  • Zu viele aktive Jobs
  • Hohe Arbeitsspeichernutzung des Systems
  • Nicht genügend kostenloser 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 mit Jobverzögerungen.

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 Clustermaster-VM des Managed Service for Apache Spark-Clusters ausgeführt). Standardmäßig reserviert Managed Service for Apache Spark 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-Auslastung und Arbeitsspeicher, um die Jobanforderungen zu schätzen.

  2. Wenn Sie einen Jobcluster erstellen, gilt Folgendes:

    1. Verwenden Sie für die Clustermaster-VM 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-Cluster-Property 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 kostenloser 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 Agent von Managed Service for Apache Spark die Jobübermittlung, wenn die Speichernutzung 90 % erreicht (0.9)). Wenn dieses Limit erreicht ist, können keine neuen Jobs geplant werden.

Die Menge an kostenlosem Arbeitsspeicher, die zum Planen eines weiteren Jobs im Cluster erforderlich ist, ist nicht ausreichend.

Lösung:

  1. Wenn Sie einen Cluster erstellen, gilt Folgendes:

    1. Erhöhen Sie den Wert des dataproc:dataproc.scheduler.max-memory-used-Clusterattributs. Setzen Sie ihn beispielsweise über dem Standardwert 0.90 auf 0.95.
    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 Agent für Managed Service for Apache Spark hat das Ratenlimit für die Jobübermittlung erreicht.

Lösungen:

  1. Standardmäßig ist die Jobübergabe des Managed Service for Apache Spark-Agents auf 1.0 QPS begrenzt. Sie können beim Erstellen eines Clusters mit der dataproc:dataproc.scheduler.job-submission-rate-Cluster-Eigenschaft einen anderen Wert festlegen.

Jobstatus ansehen

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