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:
Überwachen Sie Log-Messwerte wie CPU-Auslastung und Arbeitsspeicher, um die Jobanforderungen zu schätzen.
Wenn Sie einen Jobcluster erstellen, gilt Folgendes:
Verwenden Sie für die Clustermaster-VM einen Maschinentyp mit mehr Arbeitsspeicher.
Wenn
1GBpro Job mehr ist, als Sie benötigen, legen Sie diedataproc:dataproc.scheduler.driver-size-mb-Cluster-Property auf einen Wert unter1024fest.Legen Sie das Clusterattribut
dataproc:dataproc.scheduler.max-concurrent-jobsauf 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:
Wenn Sie einen Cluster erstellen, gilt Folgendes:
- Erhöhen Sie den Wert des
dataproc:dataproc.scheduler.max-memory-used-Clusterattributs. Setzen Sie ihn beispielsweise über dem Standardwert0.90auf0.95. - Erhöhen Sie den Wert des Clusterattributs
dataproc.scheduler.min-free-memory.mb. Der Standardwert ist256MB.
- Erhöhen Sie den Wert des
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:
- Standardmäßig ist die Jobübergabe des Managed Service for Apache Spark-Agents auf
1.0 QPSbegrenzt. Sie können beim Erstellen eines Clusters mit derdataproc: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.