Я работаю над проектом Hadoop (в настоящее время использующим hasoop 1.2.1), где мне нужно отслеживать информацию о времени выполнения задачи и какие машины выполняют задачи хорошо. Я могу получить о ходе выполнения задачи, используя следующие:Как связать задачу назад с машиной, на которой они были запущены в Hadoop
RunningJob runningJob = JobClient.runJob(conf);
JobStatus jobStatus = runningJob.getJobStatus();
Отсюда я могу получить JobTracker и получить прогресс карты задачи:
TaskReport[] mapTaskReports = tracker.getMapTaskReports();
Но теперь, когда у меня есть отчеты задачи, я не как узнать, какие машины выполняются/выполняются. Есть ли какая-либо идентифицирующая машина информация, которую я могу получить (имя машины, IP-адрес и т. Д.) И иметь возможность связать ее с этими отчетами о заданиях?
ПРИМЕЧАНИЕ. Мне нужно иметь возможность делать это сопоставление с заданием, которое все еще выполняется, поэтому я могу принимать решения, основываясь на том, что некоторые машины плохо подготовлены к определенным задачам.
EDIT: Я думаю, что объект TaskTracker может иметь то, что я хочу, с его методом getHostName(), но я не уверен, как получить его экземпляр. Конструктор TaskTracker принимает объект JobConf, но он, похоже, не указывает, на какой машине он его получит, поскольку каждая машина, на которой выполняется задача для задания, будет иметь свой собственный экземпляр TaskTracker.
Это выглядит многообещающим, но не только, что даст мне результаты для задач, которые уже завершены? Мне нужно будет найти отображение для выполняемых задач. – lehn0058
Это самый близкий ответ на то, что я хотел сделать. – lehn0058