2017-02-20 65 views
1

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

回答

0

您可以使用ResourceManager REST来获取所有Finished应用程序的信息。

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

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

+0

因为我使用'shell脚本'来在纱线上运行多个应用程序,如果我可以设置纱线以在应用程序完成时自动返回应用程序的信息?这是否意味着如果没有这种自动方法,我必须使用'while循环'来经常要求纱线返回完成的应用程序信息? – YunjieJi

+0

是的,您必须手动提出请求来获取应用程序的状态。当应用程序完成时,纱线提供的计数器包含一些相关信息,但不完全是“经过时间”。 – franklinsijo

0

要查找持续作业历史记录文件,你将需要检查作业历史Server或时间轴Server而不是资源管理器:

  1. 工作历史汇聚到HDFS,并可以从作业历史服务器中可以看出UI(或REST API)。历史文件存储在HDFS上的mapreduce.jobhistory.done-dir上。

  2. 作业历史记录也可以由时间轴服务器(基于文件系统,又名ATS 1.5)进行聚合,并且可以从时间轴服务器UI(或REST API)中看到。历史文件存储在HDFS上的yarn.timeline-service.entity-group-fs-store.done-dir上。

+0

由于我使用shell脚本在纱线上运行多个应用程序,如果我可以设置纱线以在应用程序完成时自动返回应用程序的信息?这是否意味着如果没有这种自动方法,我必须使用'while循环'来经常要求纱线返回完成的应用程序信息? – YunjieJi

+0

@ 0_1_Life您可以运行'yarn application -list -appStates FINISHED'来获取已完成纱线应用程序ID的列表,同时您维护一个已经有作业历史记录的应用程序ID列表。然后每次,如果发现不在列表中的新ID,请运行例如'yarn logs -applicationId application_1484331408245_0014>/tmp/job_0014.log'来获取并保存日志信息。这有帮助吗? –