YARN REST API returns startedTime 等字段为0
YARN REST API returns startedTime and other fields as 0
当通过 curl
调用 YARN REST Api 时,要在集群上获取作业,使用:
curl --negotiate -u : http:<rm url>:<port>/ws/v1/cluster/apps?states=finished,failed,killed
在结果 JSON 中,我得到了所有值,但 startedTime
、finishedTime
和 elapsedTime
的值为 0。
N.B:在 YARN UI 上存在这些值,并且在使用 cmd yarn application -status
.
时也存在
我查看了 API 文档,但找不到强制返回字段的参数,是不是因为某些参数导致我无法获取这些值?
如果有人有同样的问题,我会回答我的问题。
经过更多研究,我发现在 Kerberized 集群中通过 YARN REST API 访问某些指标是通过 ACL 限制的,只有午餐的用户和管理员用户能够访问这些指标。
要绕过这个,我们应该:
yarn.admin.acl=false
或
yarn.scheduler.capacity.root.acl_administer_jobs=*
yarn.scheduler.capacity.root.acl_administer_queue=*
当通过 curl
调用 YARN REST Api 时,要在集群上获取作业,使用:
curl --negotiate -u : http:<rm url>:<port>/ws/v1/cluster/apps?states=finished,failed,killed
在结果 JSON 中,我得到了所有值,但 startedTime
、finishedTime
和 elapsedTime
的值为 0。
N.B:在 YARN UI 上存在这些值,并且在使用 cmd yarn application -status
.
我查看了 API 文档,但找不到强制返回字段的参数,是不是因为某些参数导致我无法获取这些值?
如果有人有同样的问题,我会回答我的问题。
经过更多研究,我发现在 Kerberized 集群中通过 YARN REST API 访问某些指标是通过 ACL 限制的,只有午餐的用户和管理员用户能够访问这些指标。
要绕过这个,我们应该:
yarn.admin.acl=false
或
yarn.scheduler.capacity.root.acl_administer_jobs=*
yarn.scheduler.capacity.root.acl_administer_queue=*