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

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

出于研究原因,我想记录所有任务的进度,以便分析进度随时间的变化。
我已经设法重新编译了这些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)的模板,我不太确定这些信息是否在这里。

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

仅供参考,本协议在课堂上使用 NodeHeartbeatRequest .
如果我深入研究源代码,我感兴趣的价值似乎就在其中 TaskStatus 打电话给 getProgress() 方法。但是我怎样才能从心跳数据包中得到这些信息呢?更确切地说,我正在研究 nodeHeartbeat 方法。
可能不在这个协议里。我唯一能确定的是,他们是一个从工人到主人的信息包,通知每个任务的进度。有人知道我在哪里能找到这些信息吗?
apachehadoop是一个如此庞大的项目,我们很容易迷失在它的源代码中。任何帮助都将不胜感激!

暂无答案!

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

相关问题