Zuvor verwendete ich org.apache.hadoop.mapred.JobClient#getJob(org.apache.hadoop.mapred.JobID)
, um die RunningJob
zu erhalten. Dieser Aufruf wurde von der Job-Completion-Callback-Methode ausgeführt, scheint mir jedoch, dass es ein Timing-Problem gibt, bei dem, wenn der Job bereits abgeschlossen ist, die obige getJob()
-Methode diese nicht finden kann und null zurückgibt. Ich kann bestätigen, dass der Job über die Cluster-Benutzeroberfläche abgeschlossen wurde.Bestehenden mapreduce-Job vom Cluster erhalten (der Job könnte ausgeführt werden oder abgeschlossen)
die RunningJob
Keeping abgesehen, gibt es eine Möglichkeit, das org.apache.hadoop.mapreduce.Job
Objekt einer mapred Aufgabe, die org.apache.hadoop.mapreduce.JobID
gegeben zu erhalten, unabhängig davon, ob der Job gerade läuft oder abgeschlossen ist?
Ich habe versucht, so etwas wie zu kodieren bis:
Cluster cluster = jobClient.getClusterHandle(); Job job = cluster.getJob(JobID.forName(jobId)); log.info("Trying to get actual job with id {} , found {} on cluster {}", JobID.forName(jobId), job, cluster);
ich die richtige jobId sehen können, und auch die Cluster-Objekt sehen kann .. aber die cluster.getJob()
Methode gibt null zurück, so dass die Arbeit selbst ist null .
Gibt es etwas, das ich hier verpasse?
Ich brauche keine laufenden Jobs .. Ich brauche eine API, die sowohl laufende als auch abgeschlossene Jobs zurückgeben kann. –
Dies kann über getAllJobStatuses() abgerufen werden. Ich habe die Bearbeitung vorgenommen, die laufende Jobs von abgeschlossenen trennt. – Denis
Ich brauche die MR-Zähler für abgeschlossene Jobs. –