如何在hadoop上获取应用程序运行时

如何在hadoop上获取应用程序运行时,hadoop,yarn,monitor,Hadoop,Yarn,Monitor,纱线是否会在hdfs上存储有关已完成应用程序(包括运行时)的信息?我只想通过hdfs上的一些文件获取应用程序运行时(如果确实存在这样的文件,我已经检查了日志,没有运行时信息),而不使用任何监控软件。您可以使用获取所有已完成应用程序的信息 http://resource_manager_host:port/ws/v1/cluster/apps?state=FINISHED 对URL的GET请求将返回JSON响应(也可以获取XML)。必须为每个应用程序分析响应的elapsedTime,以获取应用程

纱线是否会在hdfs上存储有关已完成应用程序(包括运行时)的信息?我只想通过hdfs上的一些文件获取应用程序运行时(如果确实存在这样的文件,我已经检查了日志,没有运行时信息),而不使用任何监控软件。

您可以使用获取所有已完成应用程序的信息

http://resource_manager_host:port/ws/v1/cluster/apps?state=FINISHED

对URL的
GET
请求将返回JSON响应(也可以获取XML)。必须为每个应用程序分析响应的
elapsedTime
,以获取应用程序的运行时间。

要查找持久作业历史记录文件,您需要检查作业历史记录服务器或时间线服务器,而不是资源管理器:

  • 作业历史记录聚合到HDFS上,可以从作业历史记录服务器UI(或RESTAPI)中查看。历史文件存储在HDFS上的mapreduce.jobhistory.done目录中

  • 作业历史记录也可以通过时间轴服务器(基于文件系统,也称为ATS 1.5)进行聚合,并可以从时间轴服务器UI(或REST API)中查看。历史文件存储在HDFS上的
    warn.timeline service.entity group fs store.done dir


  • 由于我使用
    shell脚本
    在Thread上运行多个应用程序,我是否可以将Thread设置为在应用程序完成时自动返回应用程序的信息?这是否意味着如果没有这种自动方法,我必须使用
    while loop
    频繁要求Thread返回已完成的应用程序信息?是的,您必须手动发出请求以获取应用程序的状态。当应用程序完成时,Thread提供的计数器包含一些相关信息,但不完全是
    经过的时间
    。由于我使用
    shell脚本
    在Thread上运行多个应用程序,我是否可以将Thread设置为在应用程序完成时自动返回应用程序的信息?这是否意味着如果没有这种自动方法,我必须使用
    while loop
    频繁要求纱线返回成品应用程序信息?@0_1_Life您可以运行
    纱线应用程序-列表-appStates finished
    ,同时获取成品纱线应用程序ID列表,您维护一个应用程序ID列表,您已经有了工作历史记录。然后每次,如果您发现一个新ID不在列表中,请运行例如
    纱线日志-applicationId application\u 1484331408245\u 0014>/tmp/job\u 0014.log
    ,以获取并保存日志信息。这有用吗?