Программно получить скорость выполнения задач oop - PullRequest
0 голосов
/ 25 марта 2020

По причинам, связанным с исследованиями, я хотел бы записать скорость выполнения всех заданий, чтобы проанализировать, как показатели прогресса меняются с течением времени.

Мне уже удалось перекомпилировать эти JAR-файлы, чтобы зарегистрировать задержку пакетов heartbeat :

  • имела oop -yarn-server-common-3.2. 0.jar
  • имел oop -yarn-server-nodemanager-3.2.0.jar
  • имел oop -yarn-server-resourcemanager-3.2.0.jar

Изначально я думал, что информация о скорости выполнения каждой задачи будет частью пакета heartbeat , отправляемого в ResourceManager . Однако, глядя на шаблон этого протокола (RP C), я не уверен, что эта информация здесь.

message NodeHeartbeatRequestProto {
  optional NodeStatusProto node_status = 1;
  optional MasterKeyProto last_known_container_token_master_key = 2;
  optional MasterKeyProto last_known_nm_token_master_key = 3;
  optional NodeLabelsProto nodeLabels = 4;
  repeated LogAggregationReportProto log_aggregation_reports_for_apps = 5;
  repeated AppCollectorDataProto registering_collectors = 6;
  optional NodeAttributesProto nodeAttributes = 7;
  optional uint64 sendingTime = 8;  # related to my latency calculation (ignore it)
}

К вашему сведению, этот протокол используется в классе NodeHeartbeatRequest.

Если я загляну в исходный код, кажется, что интересующее меня значение находится в TaskStatus путем вызова метода getProgress(). Но как я могу получить эту информацию из пакета heartbeat ? Точнее, я работаю над методом nodeHeartbeat.

Возможно, это не в этом протоколе. Единственная вещь, в которой я уверен, это то, что это пакет от рабочих к мастеру, который информирует о скорости выполнения каждой задачи. Кто-нибудь знает, где я мог бы найти эту информацию?

Apache Если бы oop такой большой проект, и мы можем легко потеряться в его исходном коде. Будем рады любой помощи!

...