如何查询Spark作业在YARN中处于accepted状态的时长 含历史已结束作业
Spark作业YARN Accepted状态等待时长查询方案
1. YARN UI原生支持查询
无论是运行中还是已结束的作业,都可以直接在YARN侧查到该数据:
- 运行中作业直接打开YARN ResourceManager UI的对应作业详情页,在状态时间线区域找到
Accepted状态的时间戳,和首次资源分配后进入Running状态的时间戳,二者差值就是你需要的资源分配前等待总时长 - 已结束的作业访问YARN历史服务器UI的作业详情页,同样可以拿到完整的状态流转时间戳计算结果,部分版本的YARN UI会直接展示
Accepted to Running的时长,无需手动计算
2. Spark侧支持的查询方式
Spark本身也会记录相关时间戳,不需要依赖YARN侧数据也能查询:
- Spark History Server查询:进入已结束作业的历史页面,在
Environment标签页的属性列表中,找到spark.app.startTime(作业提交到YARN的时间)和spark.driver.startTime(YARN分配资源后Driver启动的时间),二者差值基本等价于Accepted状态等待时长,误差通常小于1秒,仅包含作业提交到YARN登记的极小耗时 - API批量获取:如果需要批量统计大量作业的该指标,可以调用REST接口拉取数据:
- YARN侧调用路径为
/ws/v1/cluster/apps/<your-application-id>的接口,提取返回报文中的acceptedTime和startedTime字段计算即可 - Spark History Server侧也有对应接口返回作业的启动相关时间戳,可按需选用
- YARN侧调用路径为
3. 历史数据已从UI清理后的获取方式
如果YARN和Spark历史服务器上已经清理了该作业的记录,可以从HDFS上存储的原始日志提取:
- 找到YARN存储应用日志的HDFS路径,默认路径为
/apps/logs/<submit-user>/logs/<application-id>/ - 解析对应的作业summary日志文件,或者ResourceManager的审计日志,提取作业被YARN接受的时间、首次分配资源启动的时间,计算差值即可
内容的提问来源于stack exchange,提问作者Rachit Kumar
相关产品推荐
相关产品推荐

