应用程序接受和运行状态之间经过的时间

时间:2016-11-03 21:08:18

标签: hadoop apache-spark yarn hadoop2

我正在使用一个管理spark,mr和tez应用程序的纱线集群。我想计算所有已完成的应用程序从接受状态转换到运行状态所经过的平均时间。我的问题是:

  • 有没有更简单的方法来做到这一点,而不是解析日志 每个过去的应用程序和减去时间戳
  • 纱线是否已提供类似的指标(基本上可以估算应用程序在运行前的平均等待时间)

谢谢!

2 个答案:

答案 0 :(得分:1)

对于每个YARN应用程序,您都可以跟踪应用程序ID。通过使用此应用程序ID对Timeline Server (Port 8188)JobHistory Server (Port 19888)进行REST调用,您可以计算出所需的时间。

对于MR

每个应用程序都有application_<epoch time at the submission>_<4-digit index number>格式的默认名称。用application_替换开头的job_,即可获得作业ID。现在使用以下格式的URL对HistoryServer进行REST调用:

http://<IP of your cluster-manager>:19888/ws/v1/history/mapreduce/jobs/<Job ID>

您将获得包含字段submitTimestartTime的XML或JSON响应(它)。它们是在纪元毫秒。差异是所需的值。

对于TEZ

对于TEZ,监控是根据与每个应用程序关联的定向非循环图进行的。因此,您需要直观并进行以下REST调用:

http://<IP of your cluster-manager>:8188/ws/v1/timeline/TEZ_DAG_ID

你得到了很大的回应。对于每个DAG ID,您需要查看DAG的Primary Identifiers,并且您将找到与每个DAG关联的应用程序ID。只需获取应用程序的submitTimestartTime即可获得差异。

可能对您有用的事情:

  1. 如果您使用Chrome,请安装JSONView扩展程序,这可以帮助您完成REST调用的输出。
  2. 如果您使用的是由Ambari或Cloudera Manager等经理管理的群集,您可以访问TEZ Web UI,更详细地了解TEZ应用程序的详细信息。
  3. 对于MR Jobs,您可以通过在浏览器http://<IP of your cluster-manager>:19888中输入来查看历史记录服务器并从那里查看应用程序数据来执行类似操作。

答案 1 :(得分:0)

我们如何获得火花工作的提交时间?

我尝试了http :: 18080 / api / v1 / applications api,但它没有提供提交时间。