yarn application -list:如何过滤今天或过去 24 小时的列表?

Vir*_*ren 5 hadoop-yarn hadoop2

我正在尝试列出在 Hadoop 集群上运行的应用程序。我可以获取列表以按应用程序状态过滤,如下所示:

>yarn application -list -appStates FINISHED
Run Code Online (Sandbox Code Playgroud)

但这仍然拉起了整个历史(过去 4-5 天,我猜基于 Yarn Timeline 服务器配置)。

有没有办法按特定日期或过去 24 小时之类的内容过滤它?

tk4*_*421 6

您可以使用 RM Apps API 来执行此操作。对于简单的测试,您可以运行:

$ date +"%s"
1495215569
$ let x=1495215569-86400
$ echo $x
1495129169
$ curl 'RMURL/ws/v1/cluster/apps?startedTimeBegin=1495129169000' | python -m json.tool
Run Code Online (Sandbox Code Playgroud)

这会拉取在 date 运行减去一天(86400 秒)时启动的应用程序并显示它们。您需要添加 000,因为时间参数需要毫秒而不是秒。支持的参数有:

  • startedTimeBegin - 开始时间从这个时间开始的应用程序,自纪元以来以毫秒为单位指定
  • startedTimeEnd - 开始时间以该时间结束的应用程序,自纪元起以毫秒为单位指定
  • FinishedTimeBegin - 结束时间从这个时间开始的应用程序,以 ms 自纪元起指定
  • FinishedTimeEnd - 完成时间以该时间结束的应用程序,自纪元起以毫秒为单位指定

有关更多详细信息,请参阅https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/ResourceManagerRest.html#Cluster_Applications_API

  • 太棒了@tk421。通过更多修改,这就是我计划列出过去 24 小时内所有 SPARK 和 SUCCEEDED 应用程序的方式:`curl "http://atl-hdp-022.afy.gbl:8088/ws/v1/cluster/apps?startedTimeBegin =`date +%s%3N -d '1 天前'`&startedTimeEnd=`date +%s%3N`&applicationTypes=SPARK&finalStatus=SUCCEEDED"` (2认同)