以编程方式获取hadoop任务的进度

yftpprvb  于 2021-05-31  发布在  Hadoop
关注(0)|答案(0)|浏览(240)

出于研究原因,我想记录所有任务的进度,以便分析进度随时间的变化。
我已经设法重新编译了这些jar,以便记录心跳数据包的延迟:
hadoop-yarn-server-common-3.2.0.jar
hadoop-yarn-server-nodemanager-3.2.0.jar
hadoop-yarn-server-resourcemanager-3.2.0.jar
最初,我认为每个任务的进度信息都是发送给resourcemanager的heartbeat数据包的一部分。但是,通过查看这个协议(rpc)的模板,我不太确定这些信息是否在这里。

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() 方法。但是我怎样才能从心跳数据包中得到这些信息呢?更确切地说,我正在研究 nodeHeartbeat 方法。
可能不在这个协议里。我唯一能确定的是,他们是一个从工人到主人的信息包,通知每个任务的进度。有人知道我在哪里能找到这些信息吗?
apachehadoop是一个如此庞大的项目,我们很容易迷失在它的源代码中。任何帮助都将不胜感激!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题