In diesem Dokument werden der Ausführungsprozess und die Erstellungsoptionen für Jobs erläutert. Mit Batchjobs können Sie Batchverarbeitungsarbeitslasten inGoogle Cloudausführen. Informationen zu den Komponenten eines Jobs und den Voraussetzungen für die Verwendung von Batch finden Sie unter Erste Schritte mit Batch.
So funktionieren die Joberstellung und -ausführung
Wenn Sie Batch verwenden möchten, erstellen Sie einen Job, in dem Sie Ihre Arbeitslast und ihre Anforderungen angeben. Batch führt den Job dann automatisch aus.
In den folgenden Abschnitten wird beschrieben, wie die Joberstellung und -ausführung funktioniert:
- Joblebenszyklus: Die Status, die ein Job von der Erstellung bis zur Löschung durchläuft.
- Jobwarteschlange und -planung: Hier erfahren Sie, welche Faktoren sich darauf auswirken, wie lange es dauert, bis ein Job gestartet wird.
- Jobausführung: Hier erfahren Sie, wie die Aufgaben eines Jobs während der Ausführung auf den Ressourcen ausgeführt werden.
Joblebenszyklus
In diesem Abschnitt wird der Lebenszyklus eines Jobs und seiner Aufgaben von der Erstellung bis zum Löschen beschrieben.
Für jede Arbeitslast, die Sie in Batch ausführen möchten, gehen Sie so vor:
- Job erstellen:Sie definieren die Arbeitslast, die Sie ausführen möchten, indem Sie die ausführbaren Elemente, Aufgaben und alle anderen Anforderungen eines Jobs angeben. Details zum Erstellen eines Jobs finden Sie in diesem Dokument im Abschnitt Optionen zum Erstellen von Jobs.
- Job überwachen und Fehler beheben:Wenn Sie mit dem Erstellen eines Jobs fertig sind, wird er automatisch in die Warteschlange gestellt, geplant und auf den angegebenen Ressourcen ausgeführt. Sie können sich die Details eines erstellten Jobs oder einer seiner Aufgaben ansehen, um den aktuellen Status zu sehen. Bei Bedarf können Sie einen Job abbrechen (Vorschau), um ihn zu beenden oder zu verhindern, dass er ausgeführt wird. Nachdem ein Job ausgeführt oder beendet wurde, können Sie ihn auch mithilfe von Protokollen überwachen und analysieren. Wenn ein Job fehlschlägt, können Sie anhand von Fehlermeldungen, Statusereignissen oder Protokollen das Problem diagnostizieren, bevor Sie den Job neu erstellen.
- Job löschen oder exportieren:Die Informationen zu einem Job in Batch sind verfügbar, bis Sie oder Google Cloud ihn löschen. InGoogle Cloud wird ein Job 60 Tage nach Abschluss automatisch gelöscht. Bis dahin können Sie den Job optional selbst löschen. Wenn Sie die Informationen behalten möchten, können Sie sie vor dem Löschen des Jobs im Batch-Verfahren exportieren. Informationen zu einem Job, die in anderen Google Cloud -Diensten gespeichert sind, sind vom Löschen eines Jobs nicht betroffen und unterliegen separaten Aufbewahrungsrichtlinien. Beispielsweise werden die Protokolle eines Jobs automatisch gemäß der Aufbewahrungsrichtlinie für Cloud Logging aufbewahrt und gelöscht.
Nachdem Sie einen Job erstellt haben, durchläuft er die folgenden Status:
- In der Warteschlange (
QUEUED
): Die Jobanfrage wurde zugelassen und wartet in der Warteschlange. Der Job bleibt in der Warteschlange, bis die erforderlichen Ressourcen verfügbar sind und die Jobs vor ihm abgeschlossen wurden. - Geplant (
SCHEDULED
): Der Job wurde aus der Warteschlange ausgewählt, um ausgeführt zu werden, und die Ressourcen werden zugewiesen. Wird ausgeführt (
RUNNING
): Die Ressourcen für den Job wurden erfolgreich erstellt und die Aufgaben können gestartet werden.Wenn ein Job ausgeführt wird, durchläuft jede seiner Aufgaben die folgenden Status:
- Ausstehend (
PENDING
): Die Aufgabe wartet auf eine VM, auf der sie ausgeführt werden soll. - Zugewiesen (
ASSIGNED
): Der Aufgabe wurde eine VM zugewiesen, auf der sie ausgeführt werden soll. - Aktiv (
RUNNING
): Die Aufgabe wird auf einer VM ausgeführt. Eine Aufgabe kann in einem der folgenden Status abgeschlossen werden:
Erfolgreich (
SUCCEEDED
): Die Aufgabe war erfolgreich, da jedes ausführbare Element eine der folgenden Bedingungen erfüllt hat:- Die Ausführung war erfolgreich (Schlusscode 0).
- Das ausführbare Programm ist fehlgeschlagen (es wurde ein nicht nullwertiger Exit-Code zurückgegeben), aber es war ein nicht kritisches ausführbares Programm (Sie haben das
ignoreExitStatus
-Feld des ausführbaren Programms aktiviert). - Das ausführbare Programm wurde nicht beendet, war aber ein ausführbares Programm im Hintergrund (Sie haben das Feld
background
des ausführbaren Programms aktiviert).
Fehlgeschlagen (
FAILED
): Die Aufgabe ist fehlgeschlagen und wurde beendet, weil mindestens ein ausführbares Element die vorherigen Bedingungen nicht erfüllt hat.
Die Ressourcen für den Job werden gelöscht, bevor der Job abgeschlossen ist.
- Ausstehend (
Ein Job kann einen der folgenden Status haben:
- Erfolgreich (
SUCCEEDED
): Der Job war erfolgreich, da alle Aufgaben erfolgreich abgeschlossen wurden. - Failed (
FAILED
): Der Job ist fehlgeschlagen und wurde beendet, weil mindestens eine seiner Aufgaben fehlgeschlagen ist. - Abgebrochen (
CANCELLED
): Ein Nutzer hat den Job abgebrochen (Vorabversion), bevor er erfolgreich war oder fehlgeschlagen ist.
- Erfolgreich (
Weitere Informationen finden Sie in der Referenzdokumentation unter Jobstatus und Aufgabenstatus.
Jobwarteschlange und -planung
Im Allgemeinen ist die Wahrscheinlichkeit höher, dass Jobs ausgeführt und schneller abgeschlossen werden, wenn sie kleiner sind und nur wenige gemeinsame Ressourcen erfordern. Die Beispieljobs in der Batch-Dokumentation sind in der Regel sehr klein und verbrauchen nur minimale Ressourcen. Sie sind in wenigen Minuten abgeschlossen.
Insbesondere hängt die Zeit, die ein Job für die Warteschlangen- und Planungsphase benötigt, von den folgenden Faktoren ab:
Benutzerdefinierte Jobvoraussetzungen:Alle Voraussetzungen, die erfüllt sein müssen, bevor der Job geplant wird.
Standardmäßig sind für eine Stelle keine Voraussetzungen erforderlich. Optional können Sie angeben, dass ein Job erst geplant werden kann, wenn ein oder mehrere vorhandene Jobs erfolgreich oder fehlgeschlagen sind. Weitere Informationen finden Sie unter Abhängige Jobs planen (Vorabversion).
Jobpriorität:Die Priorität eines Jobs im Vergleich zu den Prioritäten anderer Jobs in Ihrem Projekt.
Optional können Sie die Priorität eines Jobs angeben, indem Sie das Flag
--priority
für die gcloud CLI oder das JSON-Feldpriority
angeben. Sie können die Priorität eines Jobs als Zahl zwischen0
(niedrigste Priorität) und99
(höchste Priorität) definieren. Wenn Sie eine höhere Priorität festlegen, wird ein Job möglicherweise früher ausgeführt als Jobs mit niedrigerer Priorität in Ihrem Projekt.Wenn Sie die Priorität eines Jobs nicht konfigurieren, wird standardmäßig die niedrigste Priorität,
0
, verwendet. Wenn zwei Jobs in der Warteschlange dieselbe Priorität haben, hat der zuerst erstellte Job die höhere Priorität.Verfügbarkeit der Jobressourcen: Verfügbarkeit der erforderlichen Ressourcen des Jobs an den zulässigen Standorten.
Erstens: Ein Job kann nicht ausgeführt werden, wenn Sie Ressourcen angeben, die an diesem Standort nicht angeboten werden. In diesem Fall schlägt der Job mit einem Fehler bei der Zonenverfügbarkeit fehl.
Zweitens ist die Wahrscheinlichkeit höher, dass ein Job verzögert wird oder fehlschlägt, wenn eine der erforderlichen Ressourcen aufgrund von Fehlern bei der Ressourcenverfügbarkeit im Vergleich zur aktuellen Nachfrage eine geringe Kapazität hat. Daher wird Ihr Job möglicherweise früher ausgeführt, wenn Sie weniger, aber gängigere Ressourcen benötigen und die Ausführung des Jobs nicht auf bestimmte Zonen in einer Region beschränken.
Weitere Informationen zu den Ressourcen für einen Job finden Sie in diesem Dokument unter Jobausführung. Weitere Informationen zu den Standorten, die Sie für einen Batchjob und seine Ressourcen angeben können, finden Sie auf der Seite Standorte.
Kontingente und Limits:Die Grenzwerte für Ressourcen und Anfragen in Ihrem Projekt in der Google Cloud .
Ein Job kann nicht ausgeführt werden, wenn er ein Limit oder das Kontingent Ihres Projekts für eine der erforderlichen Ressourcen oder Anfragen überschreitet. In diesem Fall kann Batch einen Job verzögern und zu einem späteren Zeitpunkt noch einmal versuchen, ihn auszuführen, oder den Job fehlschlagen lassen und einen zugehörigen Fehler anzeigen.
Sie können Verzögerungen und Fehler bei Ihrem Job vermeiden, indem Sie Jobs erstellen, die alle relevanten Limits einhalten, und dafür sorgen, dass Ihr Projekt ein ausreichendes Kontingent hat. Weitere Informationen finden Sie unter Kontingente und Limits für Batch-Aufträge.
Jobausführung
Die Dauer der Ausführung eines Jobs kann je nach Aufgabenplanung und den Ressourcen des Jobs variieren.
Aufgabenplanung
Wenn ein Job ausgeführt wird, werden seine Aufgaben gemäß dem Feld Planungsrichtlinie (schedulingPolicy
) geplant. Dort können Sie eine der folgenden Optionen angeben:
- So schnell wie möglich (
AS_SOON_AS_POSSIBLE
) (Standardeinstellung): Aufgaben werden ausgeführt, sobald Ressourcen verfügbar sind, und können parallel ausgeführt werden. Die Anzahl der gleichzeitig ausgeführten Aufgaben hängt von den parallelen Aufgaben pro VM ab, die durch die Ressourcen des Jobs und andere Konfigurationsoptionen zulässig sind, wie im Abschnitt Jobressourcen dieses Dokuments erläutert. - Der Reihe nach (
IN_ORDER
): Die Aufgaben werden nacheinander in aufsteigender Indexreihenfolge ausgeführt.
Jobressourcen
Jeder Batchjob wird in einer regionalen verwalteten Instanzgruppe (Managed Instance Group, MIG) ausgeführt. Das ist eine Gruppe von einer oder mehreren übereinstimmenden Compute Engine-VM-Instanzen, die sich jeweils in einer der enthaltenen Zonen befinden. Jede VM hat spezielle Hardware für CPU-Kerne (insbesondere virtuelle CPUs (vCPUs)) und Arbeitsspeicher, die sich auf die Leistung Ihres Jobs auswirken, sowie ein Bootlaufwerk, auf dem ein Betriebssystem-Image und Anweisungen zum Ausführen des Jobs gespeichert sind.
Während der Laufzeit eines Jobs werden mit Batch automatisch Ressourcen erstellt und gelöscht, die Ihren Spezifikationen entsprechen. Wenn Sie einen Job erstellen, konfigurieren Sie seine Ressourcen. Geben Sie dazu Folgendes an:
Rechenressourcen pro Aufgabe:Sofern die Standardwerte nicht ausreichen, müssen Sie die Rechenressourcen angeben, die für die Ausführung jeder Aufgabe erforderlich sind, also vCPUs, Arbeitsspeicher und (falls erforderlich) zusätzlicher Boot-Laufwerkspeicher. Weitere Informationen finden Sie in den Feldern Rechenressourcen pro Aufgabe (
computeResource
).VM-Ressourcen:Optional können Sie auch die VMs des Jobs angeben, z. B. den Maschinentyp und das Betriebssystem sowie zusätzliche Ressourcen wie GPUs und Speichervolumes. Verwenden Sie dazu die Felder VM-Ressourcenrichtlinie (
instances[].policy
) oder das alternative Feldinstances[].instanceTemplate
. Wenn Sie diese Felder nicht definieren, versucht Batch automatisch, kompatible VMs auszuwählen. Es werden keine zusätzlichen Ressourcen hinzugefügt. Dies ist beim Erstellen eines Jobs mit derGoogle Cloud Console nicht möglich.
Die Anzahl der VMs und die Anzahl der Aufgaben, die gleichzeitig auf jeder VM ausgeführt werden können, variieren je nach Job, je nach Aufgabenplanung und je nach den angegebenen Hardwareanforderungen. Wenn Sie für die Aufgaben eines Jobs IN_ORDER
angeben, hat der Job eine VM und es wird jeweils nur eine Aufgabe ausgeführt. Andernfalls, wenn die Aufgaben eines Jobs AS_SOON_AS_POSSIBLE
ausgeführt werden, können Sie die Anzahl der VMs und die Anzahl der gleichzeitigen Aufgaben mit der folgenden Formel schätzen:
\[{vmsPerJob}=\frac{taskCount}{parallelTasksPerVm}\]
Diese Formel hat die folgenden Werte:
- \({vmsPerJob}\): die maximale Anzahl von VMs für einen Job. Die tatsächliche Anzahl der für einen Job erstellten VMs kann geringer sein. Das ist beispielsweise der Fall, wenn Batch davon ausgeht, dass es schneller ist, einen Job mit weniger Ressourcen auszuführen, als auf mehr Ressourcen zu warten. Dieser Wert ist außerdem durch die Limits für die Anzahl der gleichzeitigen VMs pro Job begrenzt.
- \({taskCount}\): Die Gesamtzahl der Aufgaben für den Job, die Sie mit dem Feld Aufgabenanzahl (
taskCount
) definieren. \({parallelTasksPerVM}\): Die maximale Anzahl von Aufgaben, die gleichzeitig auf einer VM ausgeführt werden können.
Dieser Wert wird anhand der folgenden Kriterien bestimmt:
Der Mindestwert ist 1 Aufgabe.
Der maximale Wert ist der kleinere der beiden Werte: 20 Aufgaben oder, falls definiert, der Wert des Felds max parallel tasks per job (
parallelism
) (maximale parallele Aufgaben pro Job).Wenn das Feld Maximale parallele Aufgaben pro VM (
taskCountPerNode
) definiert ist, wird dieser Wert verwendet.Andernfalls, wenn
taskCountPerNode
nicht definiert ist, entscheidet Batch, welchen Wert er festlegt. Dazu wird die Gesamtzahl der Rechenressourcen (vCPUs) pro VM durch die für jede Aufgabe erforderliche Menge geteilt:\[{parallelTasksPerVm}=\frac{vcpusPerVm}{vcpusPerTask}\]
Diese Formel hat die folgenden Werte:
\({vcpusPerVm}\): die Gesamtzahl der vCPUs pro VM, die vom Maschinentyp der VMs Ihres Jobs bestimmt wird.
\({vcpusPerTask}\): Die Anzahl der vCPUs pro Aufgabe, die durch Umwandlung der Einheiten des Felds vCPUs pro Aufgabe (
cpuMilli
) ermittelt wird.
Optionen zur Joberstellung
Im Hilfeartikel Einen einfachen Job erstellen und ausführen werden die Grundlagen erläutert, z. B. wie Sie ein ausführbares Programm entweder mit einem Script oder einem Container-Image definieren und vordefinierte und benutzerdefinierte Umgebungsvariablen konfigurieren.
Nachdem Sie die Grundlagen zum Erstellen von Jobs kennen, können Sie einen Job mit einer oder mehreren der folgenden zusätzlichen Konfigurationsoptionen erstellen:
Zugriff für einen Job steuern:
Im Hilfeartikel Zugriff für einen Job mit einem benutzerdefinierten Dienstkonto steuern wird beschrieben, wie Sie das Dienstkonto eines Jobs angeben, das die Ressourcen und Anwendungen beeinflusst, auf die die VMs eines Jobs zugreifen können. Wenn Sie kein benutzerdefiniertes Dienstkonto angeben, wird für Jobs standardmäßig das Compute Engine-Standarddienstkonto verwendet.
Im Hilfeartikel Netzwerkübersicht erfahren Sie, wann und wie Sie die Netzwerkkonfiguration für einen Job anpassen können. Dazu gehört auch die Angabe des Netzwerks des Jobs, das Blockieren externer Verbindungen und der Schutz von Daten und Ressourcen mithilfe von VPC Service Controls.
Im Hilfeartikel Vertrauliche Daten mit Secret Manager schützen wird beschrieben, wie Sie vertrauliche Daten wie benutzerdefinierte Umgebungsvariablen und Anmeldedaten sicher definieren, indem Sie beim Erstellen eines Jobs verschlüsselte Informationen mit Secret Manager-Secrets angeben.
Konfigurieren Sie zusätzliche Optionen für einen Job:
Im Hilfeartikel Aufgabenkommunikation mit einer MPI-Bibliothek konfigurieren wird beschrieben, wie Sie einen Job mit voneinander abhängigen Aufgaben konfigurieren, die über eine MPI-Bibliothek (Message Passing Interface) miteinander kommunizieren. Ein häufiger Anwendungsfall für MPI sind eng gekoppelte HPC-Arbeitslasten (High Performance Computing, Hochleistungs-Computing).
Ressourcen anpassen, auf denen ein Job ausgeführt wird:
Im Hilfeartikel Jobressourcen mit einer VM-Instanzvorlage definieren wird beschrieben, wie Sie beim Erstellen eines Jobs eine Compute Engine-VM-Vorlage angeben, um die Ressourcen eines Jobs zu definieren. Dies ist eine Alternative zur direkten Angabe der Ressourcen eines Jobs über das Feld
instances[].policy
.GPUs für einen Job verwenden beschreibt, wie Sie einen Job definieren, der eine oder mehrere Grafikprozessoren (GPUs) verwendet. Gängige Anwendungsfälle für Jobs mit GPUs sind intensive Datenverarbeitung oder Arbeitslasten für maschinelles Lernen.
Im Hilfeartikel Speichervolumes für einen Job verwenden wird beschrieben, wie Sie einen Job definieren, der auf ein oder mehrere externe Speichervolumes zugreifen kann. Zu den Speicheroptionen gehören neue oder vorhandene nichtflüchtige Laufwerke, neue lokale SSDs, vorhandene Cloud Storage-Buckets und ein vorhandenes Netzwerkdateisystem (NFS), z. B. eine Filestore-Dateifreigabe.
VM-Betriebssystemumgebung – Übersicht: Hier erfahren Sie, wann und wie Sie die VM-Betriebssystemumgebung für einen Job anpassen können, einschließlich des VM-Betriebssystem-Images und der Bootlaufwerke des Jobs.
Verschiedene Aspekte eines Jobs optimieren:
Monitoring und Analyse verbessern:
Im Hilfeartikel Aufgabenprotokolle schreiben wird beschrieben, wie Sie die ausführbaren Dateien eines Jobs so konfigurieren, dass Aufgabenprotokolle geschrieben werden. Wenn Sie Aufgabenprotokolle schreiben, können Sie benutzerdefinierte Informationen in Cloud Logging aufrufen. Das kann die Analyse und Fehlerbehebung von Jobs erleichtern.
Benutzerdefinierte Statusereignisse konfigurieren Mit benutzerdefinierten Statusereignissen können Sie wichtige Ereignisse beschreiben, die für ausführbare Dateien auftreten. Sie werden angezeigt, wenn Sie sich den Verlauf der Statusereignisse eines Jobs ansehen. Dies kann die Analyse und Fehlerbehebung von Jobs erleichtern.
Im Hilfeartikel Statusbenachrichtigungen aktivieren wird beschrieben, wie Sie einen Job so konfigurieren, dass Pub/Sub-Benachrichtigungen über seinen Status gesendet werden, die Sie optional in einer BigQuery-Tabelle speichern und abfragen können. Bevor Sie dieses Dokument lesen, müssen Sie Ihr Projekt so konfigurieren, dass der Jobstatus mit Pub/Sub-Benachrichtigungen und BigQuery überwacht wird.
Im Hilfeartikel Ops-Agent-Messwerte aktivieren wird beschrieben, wie Sie einen Job konfigurieren, um den Ops-Agenten automatisch zu installieren. Der Ops-Agent erfasst zusätzliche Messwerte zur Leistung und Nutzung der Ressourcen eines Jobs. Weitere Informationen zum Ansehen und Verwenden von Ressourcenmesswerten finden Sie unter Jobressourcen anhand von Messwerten überwachen und optimieren.
Unter Abhängige Jobs planen (Vorabversion) erfahren Sie, wie Sie einen Job angeben, der erst ausgeführt wird, wenn ein oder mehrere vorhandene abhängige Jobs erfolgreich oder fehlgeschlagen sind. Wenn Sie eine Arbeitslast mit unterschiedlichen Ressourcenanforderungen haben, können Sie die Kosten und die Kontingentnutzung senken, indem Sie die VM-Typen für arbeitslastabhängige Vorgänge (z. B. Datenvorbereitung) und rechenintensive Vorgänge (z. B. Datenverarbeitung) trennen.
Im Hilfeartikel Automatische Wiederholung von Aufgaben wird beschrieben, wie die Aufgaben eines Jobs nach allen oder bestimmten Fehlern automatisch noch einmal ausgeführt werden. Automatisierte Wiederholungsversuche können die Fehlerbehebung und die Gesamtlaufzeit für Jobs mit vorübergehenden Fehlern reduzieren. Sie können automatische Wiederholungen beispielsweise für einen Job verwenden, der auf Spot-VMs ausgeführt wird. Diese bieten zwar erhebliche Rabatte, sind aber möglicherweise nicht immer verfügbar und können jederzeit vorzeitig beendet werden.
Unter Ausführungszeiten mit Zeitlimits begrenzen wird beschrieben, wie Sie die Ausführungszeit einer Aufgabe oder eines ausführbaren Programms begrenzen. Wenn Sie übermäßige Laufzeiten vermeiden, können Sie unerwartete Kosten und Verzögerungen reduzieren.
Im Hilfeartikel Ressourcenverfügbarkeit mit VM-Reservierungen gewährleisten wird beschrieben, wie Sie einen Job konfigurieren, der auf reservierten VMs ausgeführt werden kann. Mit reservierten VMs können Sie die Planungszeit eines Jobs minimieren, Fehler bei der Ressourcenverfügbarkeit verhindern und Kosten optimieren.
Latenz reduzieren:
VMs gemeinsam platzieren, um die Latenz zu reduzieren: Hier erfahren Sie, wie Sie die Netzwerklatenz zwischen den VMs eines Jobs reduzieren, indem Sie die VMs räumlich nahe beieinander platzieren. Dieser Leistungsvorteil kann besonders nützlich sein für Jobs mit häufiger Netzwerkkommunikation über VMs hinweg, z. B. Aufgaben, die mit MPI-Bibliotheken kommunizieren.
Im Hilfeartikel Image-Streaming verwenden erfahren Sie, wie Sie die Jobstartzeit verbessern, indem Sie Container-Images aus Artifact Registry streamen.
Zusätzliche Dienste zum Erstellen und Ausführen von Jobs verwenden:
Im Hilfeartikel Jobs mit Workflows orchestrieren erfahren Sie, wie Sie mit Workflows die Aufgaben eines Jobs in einer Reihenfolge ausführen, die Sie mit der Workflow-Syntax definieren.
Im Artikel Aufträge mit Nextflow orchestrieren wird beschrieben, wie Sie einen Batchjob über eine Nextflow-Pipeline ausführen, mit der Sie Bioinformatik-Workflows orchestrieren können.
Im Artikel Aufträge mit dsub orchestrieren wird beschrieben, wie Sie einen Batchjob über eine
dsub
-Pipeline ausführen, mit der Sie Workflows für die Batchverarbeitung in den Diensten Google Cloud orchestrieren können.Im Hilfeartikel Batchjobs mit Terraform und Cloud Scheduler erstellen und ausführen wird beschrieben, wie Sie Batchjobs in Terraform einbinden. Mit Terraform können Sie die Infrastruktur bereitstellen und verwalten, indem Sie den gewünschten Zustand in Konfigurationsdateien angeben. Diese können als Code behandelt und in Versionskontrollsystemen wie GitHub gespeichert werden.
Nächste Schritte
Hier finden Sie die Grundlagen zur Stellenerstellung: