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'來獲取並保存日誌信息。這有幫助嗎? –

相關問題