У меня на кластере работает YARN. Он имеет 3 datanodes и 1 клиентский узел. Я отправляю все свои задания на клиентский узел. Как я могу получить прошедшее время для всех задач в конкретной работе.Истекшее время для задачи Hadoop
Возможно, RESTful API (https://hadoop.apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-site/MapredAppMasterRest.html) может быть использован для этой цели. Но мне любопытно узнать, есть ли какой-либо Java API, чтобы сделать то же самое.
Я могу найти время начала для всей задачи, используя метод getStartTime() класса TaskReport. Хотя узлы в кластерах синхронизируются с использованием NTP, я не думаю, что было бы хорошей практикой использовать текущее время клиентской системы (System.currentTimeMillis()) для вычисления прошедшего времени для выполнения задач, может быть принято отставание, связанное со всеми узлами в кластере, даже в NTP.
Почему часы перекоса имеет значения, если вы просто вычислить 'FinishTime - StartTime', она измеряется на том же хосте. –
Да, согласен с этим. Но причина, по которой перекос - это то, что я хочу узнать истекшее время для текущих запущенных задач. В случае выполнения текущих задач getFinishTime() вернет значение «Wed Dec 31 19:00:00 EST 1969» в качестве значения по умолчанию. –
Это не совсем возможно. Я боюсь. Лучшее, что вы можете сделать, это действительно использовать часы клиента. –