Wir haben laufen Funken Jobs auf Dataproc Cluster mit Garn - wir haben auch ein Wrapper-Programm in Python, die für den Status des Auftrags Konstante Polling tut und wir überwachen den Auftragsstatus aus Garnen - wie folgt dargestellt:Garnstatus vom Dataproc-Client - warum ist es immer ein Listenobjekt?
dataproc = discovery.build('dataproc', 'v1', credentials=credentials)
job_id = '8873a82c-6201-48d4-8ad3-d8f236ef9c49'
projectId='dev-111111'
REGION = 'global'
result = dataproc.projects().regions().jobs().get(projectId=projectId,region=REGION,jobId=job_id).execute()
print result['yarnApplications'][0]['state']
Das obige "Ergebnis" ist ein JSON-Objekt und innerhalb des JSON-Objekts gibt es ein Feld namens "yarnApplications", das ein Listenobjekt ist, dessen erstes und einziges Element den Jobstatus enthält wir sind interessiert an.
Frage i s - warum dieses "yarnApplications" -Objekt immer ein Listenobjekt ist, auch wenn nur ein Garnauftrag läuft? Wir haben Situationen gesehen, in denen Garn mehrere Versuche unternimmt, einen Job zu starten - wird das Feld "yarnApplications" in dieser Situation mehrere Elemente enthalten?
Auch ist es, dass garantiert - wenn wir nur einen Job läuft auf Garn haben „yarnApplications“ Liste Objekt nur ein Element enthalten?
Wir verstehen, dass dies nur eine Beta-Version für Dataproc Client ist - aber als wir Produktionssystem läuft auf sie haben würde jede Eingabe und Vorschläge so zu schätzen wissen.
Dank
Vielen Dank Dennis, ich freue mich über Ihren Kommentar. du Eine Frage - Sie erwähnt, dass „Sie sind in der Tat garantiert, dass, wenn Sie nur einen Job in GARN läuft ...“ - ist dies aus Dokumentation irgendwo oder Ihre Beobachtungen? Wenn es aus einer Dokumentation stammt, können Sie es bitte teilen? Danke noch einmal! –
In der Situation, die Sie beschrieben haben, wo "Garn mehrere Versuche macht", in YARN, die unter einer einzigen YARN-Anwendungs-ID bleibt, und die mehreren Versuche sind darin aufgeführt; "yarn applications -list -appStates ALL" würde immer nur die eine Anwendungs-ID für alle Versuche zurückgeben. Dataproc verspricht also nichts Besonderes, wenn nur eine einzige YARN-Anwendung auftaucht, wenn nur eine Anwendung läuft. Stattdessen verfolgt Dataproc YARN-Anwendungen mithilfe von Jobid-Tags. Wenn das Treiberprogramm selbst erneut versucht, YARN-Anwendungen auszugeben, zeigt Dataproc tatsächlich mehrere Apps in einem Job an. –
Die Dokumentation für jetzt befindet sich nur innerhalb der [Jobressourcendefinition] (https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs#resource-job), tut dies aber nicht vertiefen Sie, wie sich Wiederholungsversuche auf die Anzahl der YARN-Anwendungen auswirken, die im Job aufgeführt sind. Dieses Verhalten kann sich bei verschiedenen Engines unterscheiden.Am Ende wird Dataprocs Liste von YARN-Anwendungen ähnliche Inhalte enthalten wie die Ausführung von "yarn application -list" im Cluster, aber gefiltert nach der jobid, die die Anwendung (en) hervorgebracht hat. –